Balancing Robot
Image Credit: Mark Evans
Balancing Robot RollerCAN
Self-balancing two-wheeled robot using a Waveshare ESP32-S3 Touch AMOLED 1.64” board with M5Stack RollerCAN I2C wheel motors. Control runs as a cascaded PID loop (velocity → angle → current), with parameters adjusted through a web-based tuning interface.
Hardware
| Component | Details | Links | |
|---|---|---|---|
![]() | MCU + display + touch | Waveshare ESP32-S3 Touch AMOLED 1.64”: ESP32-S3 MCU; 1.64” AMOLED (SH8601, QSPI); FT3168 touch controller | |
![]() | IMU | QMI8658 (6-axis gyro + accelerometer) | |
![]() | Motors | 2x M5Stack RollerCAN hub motors | |
![]() | Tyres | Knobby rubber tyres, press-fit on 72 mm RollerCAN hubs | AliExpress listing |
![]() | Power monitor | INA226 |
Gallery
Extra build photos (the post cover appears above). Click an image for a full-size lightbox.



Older Version Robot
Balancing Robot DDSM210 is an ESP32-S3 self-balancing robot using two DDSM210 hub motors and an ICM-20948 IMU, with an on-device AMOLED and a browser-based WebSocket UI for live PID tuning and telemetry.
| Component | Role | Interface | Datasheet / link | |
|---|---|---|---|---|
![]() | LILYGO T-Display-S3 (ESP32-S3, AMOLED) | MCU + display | USB-C, on-board AMOLED | github.com/Xinyuan-LilyGO/T-Display-S3 |
![]() | DDSM210 Direct-Drive Servo x2 | Wheel hub motors | UART 115200 (Serial1/Serial2) | |
![]() | ICM-20948 9-axis IMU | Angle/rate sensing | I2C | TDK ICM-20948 |
![]() | INA219 Current Sensor (optional) | Bus voltage/current/power | I2C | TI INA219 datasheet (PDF) |
Build photos (grey chassis revision). Click an image for a full-size lightbox.


Web simulation
Last modified: 17 Apr 2026







