Balancing Robot

2 min read
Angled view of the self-balancing robot with top AMOLED showing WiFi, battery, motor current, and pitch telemetry; two knobby RollerCAN wheels and black 3D-printed chassis.

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

ComponentDetailsLinks
Waveshare ESP32-S3 Touch AMOLED 1.64 development board: round 1.64 inch AMOLED, capacitive touch, GPIO headers, and USB-C on a compact red-and-black PCB.MCU + display + touch

Waveshare ESP32-S3 Touch AMOLED 1.64”: ESP32-S3 MCU; 1.64” AMOLED (SH8601, QSPI); FT3168 touch controller

Product, Wiki

QST QMI8658 6-axis IMU in black LGA package: top view with QST logo and QMI8658 marking beside a second chip showing the gold contact pads on the underside.IMUQMI8658 (6-axis gyro + accelerometer)

TDK / InvenSense QMI8658, Board wiki (sensors)

M5Stack Unit RollerCAN compact black cylindrical hub motor module on a square base with mounting holes, red Grove-style connector, and gold power pins.Motors2x M5Stack RollerCAN hub motors

Unit RollerCAN, RollerCAN user guide

Product photo of small knobby black rubber RC crawler-style tyres on silver wheel rims, as sold for press-fit installation on compact hub motors.TyresKnobby rubber tyres, press-fit on 72 mm RollerCAN hubsAliExpress listing
Adafruit INA219 STEMMA QT I2C high-side current and voltage monitor breakout on a purple PCB (TI INA2xx family; illustrative of small I2C bus power monitors such as the INA226 used in the build).Power monitorINA226

TI INA226 product, datasheet (PDF)

Extra build photos (the post cover appears above). Click an image for a full-size lightbox.

Side profile of the self-balancing robot: large knobby RollerCAN wheel with printed hub, vertical 3D-printed body, and rounded top cap on a white background.
Front view of the self-balancing robot: symmetrical black 3D-printed body with central circular sensor or button, two wide knobby RollerCAN tires, and horizontal seam at the top cap.
Three-quarter view from the front-left: robot with active AMOLED status (WiFi, IP, power, motor currents, pitch) and wide tread tires on a white background.

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.

ComponentRoleInterfaceDatasheet / link
LILYGO T-Display-S3 development board with tall narrow AMOLED, ESP32-S3 module, USB-C, and pin headers along the edges (official LilyGO product photo).

LILYGO T-Display-S3 (ESP32-S3, AMOLED)

MCU + displayUSB-C, on-board AMOLEDgithub.com/Xinyuan-LilyGO/T-Display-S3
Waveshare DDSM210 direct-drive hub motor: black cylindrical wheel motor with cable and mounting hub, product photo on white background.DDSM210 Direct-Drive Servo x2Wheel hub motorsUART 115200 (Serial1/Serial2)

waveshare.com/ddsm210.htm, wiki/DDSM210

Adafruit TDK InvenSense ICM-20948 9-DoF IMU breakout board with STEMMA QT connectors, labeled pins, and central sensor module on purple PCB.ICM-20948 9-axis IMUAngle/rate sensingI2CTDK ICM-20948
Adafruit INA219 STEMMA QT I2C high-side DC current and voltage monitor breakout on purple PCB (INA219 optional current sensor for the older DDSM210 build).INA219 Current Sensor (optional)Bus voltage/current/powerI2CTI INA219 datasheet (PDF)

Build photos (grey chassis revision). Click an image for a full-size lightbox.

Earlier balancing robot revision, side view: grey 3D-printed vertical body, wide black treaded wheel with light hub, small switch on the body edge.
Earlier balancing robot revision, front view: grey printed enclosure with OLED showing WiFi, IP, battery, and fallen tilt status; wide treaded wheels and power switch.

Web simulation

Last modified: 17 Apr 2026