Engineering / Independent project
Self-balancing two-wheel robot
A two-wheel robot that balances itself with only an IMU. I designed and printed the chassis, wired it by hand and wrote all the firmware.
- Organisation
- Independent project
Abdullah Gül University - Period
- 2024 – 2025
- Role
- Solo build — chassis, electronics, firmware
- Tools
- Blender, FDM 3D printing, Arduino C, Cascaded PID, MPU6050, Bluetooth
Problem
Build a two-wheel robot that stays upright on its own and drives forward and back, with no wheel encoders and no optical sensors — only an MPU6050 IMU.
What I did
- Designed the chassis in Blender, 3D printed it, wired the electronics by hand, and wrote the full firmware in Arduino C.
- Implemented a cascaded PID controller — an inner tilt-angle loop for balance and an outer velocity-feedback loop for controlled forward and backward movement.
- Estimated tilt with a complementary filter on the MPU6050 readings.
- Fixed I2C bus corruption from motor EMI with isolated power domains, twisted-pair wiring and a firmware bus-reset timeout.
- Made all PID parameters tunable live over Bluetooth, without reflashing, and logged telemetry to a live dashboard.
Result
Stable balance within ±0.5° of the setpoint, using only the IMU and a complementary filter.
The robot
Chassis
Modelled in Blender and 3D printed.

Telemetry
Tilt angle, PID terms and motor output are streamed from the robot and plotted live while tuning.


