Skip to content

Hardware Reference

All RoArm models (M2-S, M2-Pro, M3-S, M3-Pro) are built around the “General Driver for Robots” board — a custom ESP32-based controller designed by Waveshare for serial bus servo control, WiFi communication, and peripheral expansion. The M3 variant of the board adds an INA219 voltage/current monitor, AK09918C compass, QMI8658 6-axis IMU, and a TF card slot.

Driver board layout Image: Waveshare

ComponentDescription
ESP32-WROOM-32Main MCU — dual-core 240MHz, WiFi + Bluetooth
CP2102 / CH340USB-to-serial converter for programming and communication
9-DOF IMUOnboard inertial measurement unit
0.91” OLEDStatus display
Serial Bus InterfaceHalf-duplex UART for servo communication
12V InputBarrel jack power input for servo and motor drive
5V RegulatorSteps down 12V to 5V for ESP32 and peripherals
Switched OutputsTwo 12V PWM channels (A and B) for external loads
LEDControllable indicator LED
I2C HeaderExpansion for sensors and displays
SPI HeaderExpansion for high-speed peripherals
graph TD
    A[12V DC Input] --> B[Servo Bus Power]
    A --> C[5V Regulator]
    A --> D[12V Switched Outputs]
    C --> E[ESP32]
    C --> F[USB-C 5V]
    B --> G[Servos ID 11-15/17]

ESP32 driver board pinout Image: Waveshare

Both M2 and M3 firmware share the same GPIO mapping. The underlying hardware (the “General Driver for Robots” board) uses identical pin assignments — the difference is in how the H-bridge channels are used: the M2 drives external accessories (lights, solenoids) via the switch module, while the M3 drives mobile base motors.

GPIOFunctionNotes
GPIO1 (TX)Serial TXProgramming/debug UART
GPIO3 (RX)Serial RXProgramming/debug UART
GPIO18Servo Serial RXDHalf-duplex servo bus (Serial1)
GPIO19Servo Serial TXDHalf-duplex servo bus (Serial1)
GPIO32I2C SDAOLED, INA219, sensors
GPIO33I2C SCLOLED, INA219, sensors
GPIO25H-bridge A PWMM2: switch channel A / M3: motor A
GPIO26H-bridge B PWMM2: switch channel B / M3: motor B
GPIO21H-bridge AIN1Direction control
GPIO17H-bridge AIN2Direction control
GPIO22H-bridge BIN1Direction control
GPIO23H-bridge BIN2Direction control
GPIO35Encoder A ch.AMotor/wheel encoder (input only)
GPIO34Encoder A ch.BMotor/wheel encoder (input only)
GPIO16Encoder B ch.BMotor/wheel encoder
GPIO27Encoder B ch.AMotor/wheel encoder

The arm uses serial bus servos connected on a daisy-chain bus. The “-S” models ship with ST3215 servos (plastic housing); the “-Pro” models use ST3235 servos (all-metal housing). Both share the same protocol, torque rating, and pinout — the metal construction provides better heat dissipation and more stable backlash over the servo’s lifetime.

Servo IDJointType
11Base rotationSingle drive
12Shoulder (driving)Dual drive
13Shoulder (driven)Dual drive
14ElbowSingle drive
15Gripper / EoATSingle drive
Servo IDJointType
11Base rotationSingle drive
12Shoulder (driving)Dual drive
13Shoulder (driven)Dual drive
14ElbowSingle drive
15Wrist pitchSingle drive
16Wrist rotationSingle drive
17GripperSingle drive

M3 wrist close-up with 2-DOF annotations The M3 wrist adds pitch (servo 15) and rotation (servo 16) between the elbow and gripper. Image: Waveshare

ParameterST3215 (“-S” models)ST3235 (“-Pro” models)
ProtocolHalf-duplex TTL serialHalf-duplex TTL serial
Baud rate1Mbps1Mbps
Torque30 kg.cm @ 12V30 kg.cm @ 12V
Speed40 rpm (no load)40 rpm (no load)
Resolution12-bit (4096 positions)12-bit (4096 positions)
Encoder12-bit magnetic (0.088°)12-bit magnetic (0.088°)
HousingPlasticAll-metal
FeedbackPosition, speed, load, voltage, temperature, current, modePosition, speed, load, voltage, temperature, current, mode
ParameterValue
Input Voltage12V DC
Recommended PSU12V / 5A
Battery Support3S LiPo (11.1V nominal)
ESP32 Current~250mA typical
Servo Stall Current~1.5A per servo (peak)
Total Peak Current~6A (all servos stalling)
Switched Outputs12V, ±255 PWM, ~2A per channel
LED Max Current~20mA
ParameterM2-SM2-ProM3-SM3-Pro
Body Weight826g ± 15g873g ± 15g973.5g ± 15g1020.8g ± 15g
Clamp Weight290g ± 10g290g ± 10g290g ± 10g290g ± 10g
Horizontal Workspace1090mm1090mm1120mm1120mm
Vertical Reach798mm798mm798mm798mm
Repositioning Precision≈ ±4mm≈ ±4mm≈ ±5mm≈ ±5mm
Payload0.5kg @ 500mm0.5kg @ 500mm0.2kg @ 500mm0.2kg @ 500mm
Joint RangesBase 360°, Shoulder 180°, Elbow 180°, Hand 135°/270°SameBase 360°, Shoulder 180°, Elbow 225°, Wrist 180°+360°, Hand 180°Same
MaterialsCarbon fiber, 5052 aluminumCarbon fiber, 5052 aluminumCarbon fiber, 5052 aluminumCarbon fiber, 5052 aluminum
Table ClampSupports edges up to 72mmSupports edges up to 72mmSupports edges up to 72mmSupports edges up to 72mm

The driver board provides headers for:

  • I2C bus — Connect sensors (IMU, distance, force), displays, or additional controllers
  • SPI bus — High-speed peripherals
  • 12V switched outputs — Solenoids, pumps, additional motors (controlled via T:113)
  • Servo bus — Additional serial bus servos can be daisy-chained

Available components and mounting Image: Waveshare

The expansion plate on the arm’s forearm provides M3 mounting holes for custom end-effectors and sensors.

Mobile platform mounting Image: Waveshare


Hardware reference from the General Driver for Robots schematic, RoArm-M2-S Wiki, and RoArm-M3 Wiki. Images: Waveshare.