Dual Robotic Arms with ESP32 Bluetooth Control

EE Project | 2026 | Ongoing

ESP32BluetoothBluepad32PCA9685Servo ControlC++3D Printing

Built and programmed a dual robotic arm system controlled by an Xbox controller through an ESP32, Bluepad32, and PCA9685 PWM servo drivers.

Role
Electronics integration and C++/Arduino control logic
Actuation
MG995 and MS90 servos driven through PCA9685 boards
Input
Bluetooth Xbox controller mapping through Bluepad32
Dual robotic arms controlled by an ESP32

System Design

The system uses an ESP32 microcontroller, an ESP32 breakout board, PCA9685 PWM servo drivers, 3D-printed NatV2 robotic arm parts, 6203 bearings, MG995 servos for larger joints, MS90 servos for smaller joints, and an Xbox controller for input. The material cost, not including donated servos, was about $90.

Controls and Firmware

I wrote the control logic in C++ using the Arduino IDE. Bluepad32 handles Xbox controller pairing and input, while the Adafruit PWM servo driver library sends servo commands through the PCA9685. I calibrated min/max ranges for each joint, added serial debugging, and adjusted the control mapping to make the arms easier to operate.

Assembly and Testing

The team compared several arm designs, selected a larger dual-arm design, printed the parts at the makerspace, and assembled the arms with bearings, fasteners, servos, and wire extensions. During testing, I tuned servo ranges and controller behavior to reduce binding and make motion more predictable.

Result

Both arms responded to Bluetooth controller input and demonstrated gripping, lifting, and multi-joint movement. The project shows embedded control, PWM servo driving, mechanical assembly, calibration, and practical debugging of a high-servo-count system.