Self-Balancing RC Robot
This was a team project where we built a two-wheeled self-balancing robot capable of staying upright and responding to wireless directional commands. We used an Arduino Nano 33 BLE Sense as the main controller and two DRV8833 dual H-bridge motor drivers in parallel to drive the motors via PWM signals.
For wireless control, we implemented BLE communication with an iPhone app developed in Flutter (using Dart), allowing real-time directional commands to be sent to the robot. Orientation was measured using a BMI270 (accelerometer and gyroscope), with tilt data fused using a complementary filter in C++. A closed-loop PID control system was then applied to maintain balance.
Before tuning on hardware, we simulated the control system in Simulink to estimate PID parameter ranges, which helped speed up experimental adjustments. Although tuning was the most time-consuming aspect of the project, the robot ultimately maintained stable balance and executed forward, backward, and turning movements smoothly.
My role focused on developing C++ algorithms for sensor fusion, closed-loop PID control, movement control, and Bluetooth communication, as well as implementing and verifying the wiring connections between the control board and motor driver circuits.