board dev studio

Verified 2026-10

m5stack 8-Channel Servo2 I2C Unit (STM32G031)

Eight-channel servo/IO unit on an STM32G031 with I2C 0x25-0x34 set by a rotary switch, 9-24 V barrel input bucked to a 3 A 5 V servo rail and INA199 current sensing, $12.95 USD.

Place this board on a carrier in the editor →

Logic level3.3 V

Part & documents

Sourceshop.m5stack.com/products/8-channel-servo2-i2c-unit-stm32g031 →

Specs

MCUSTMicroelectronics STM32G031G8U6

Pinout

8 pads, as the vendor numbers them.

#NameFunctionSignals
1GNDIN socket pad 1 - Black wire, ground.ground
25VIN socket pad 2 - Red wire, 5 V from the buck converter.5 V servo rail
3SDAIN socket pad 3 - Yellow wire, I2C data.I2C SDA
4SCLIN socket pad 4 - White wire, I2C clock.I2C SCL
5GNDOUT socket pad 1 - Black wire, ground (same net as IN pad 1).ground
65VOUT socket pad 2 - Red wire, 5 V (same net as IN pad 2).5 V servo rail
7SDAOUT socket pad 3 - Yellow wire, I2C data (same net as IN pad 3).I2C SDA
8SCLOUT socket pad 4 - White wire, I2C clock (same net as IN pad 4).I2C SCL

Buses

BusSignalsPinsVoltageNote
I2C ×1SDA, SCLSDA, SCL

I²C / bus addresses

AddressBusDeviceNote
0x25-0x34I2CSTM32G031G8U6 (16-position rotary switch, 0 = 0x25 to F = 0x34)

Power

InputDC 9-24 V on the barrel jack; 5 V on HY2.0-4P pads 2 and 6
Typical draw4.56 mA

Notes

pins[] covers the two numbered-by-colour HY2.0 sockets (IN 1-4, OUT 5-8). The eight 3-pin servo headers are not numbered by the vendor as pads - they are channels 1-8 in firmware - so they are described in ai_context with their STM32 pins and timer channels rather than given an invented 9-24 sequence. No datasheet_url: the STM32G031's document is served only from st.com, which does not resolve from this host (curl exit 000, measured 2026-10-31); the INA199 data sheet from ti.com is in sources instead, and it is verified application/pdf. Servo signal capacitors and the shunt value are read from the vendor's own SCH_Unit_8Servos2-I2C V0.4 text layer.

AI context

Dense context for pasting into a model prompt — addresses, pinout, voltages, tolerances and the vendor's reference circuit.

PART: M5Stack Unit 8Servos2-I2C, SKU U222, a 56.0 x 24.0 x 11.5 mm (11.6 g) eight-channel servo/IO unit on an STM32G031G8U6 (U5). It is fed from a DC barrel jack (9-24 V, DC6020 6.0 x 2.0 mm centre-positive) and drives eight 3-pin 2.54 mm channels in servo, digital in/out, ADC, RGB or PWM mode. The title carries the MCU, so part is null.\nADDRESSES: I2C 0x25 to 0x34, set by a 16-position SKAR-16 rotary switch, position 0 = 0x25 through position F = 0x34 in order - the full table is in the vendor docs and there is no other address on the bus.\nPINOUT: two HY2.0-4P sockets, both labelled IN and OUT and both I2C: IN is pads 1 GND, 2 5V, 3 SDA, 4 SCL; OUT is pads 5 GND, 6 5V, 7 SDA, 8 SCL. The sockets print no pad numbers, so 1-4 and 5-8 follow the vendor's colour column (Black, Red, Yellow, White). The eight servo channels are 3-pin headers (GND, 5V, SIG) and are numbered only as channels 1-8 in the firmware, not as pads - each one is a separate 2.54 mm connector.\nSUPPLY: DC 9-24 V in on the barrel jack, protected by F1 (SMD1812-200-30, 2 A hold / 4 A trip) and D1 (SMF30CA TVS), then bucked to 5 V by U1 SY8303AIC with L1 FXL0530-6R8-M and 100 uF/35 V bulk input capacitance; the feedback divider is R7 220K/1% and R3 30K/1% against a 0.6 V reference, and the vendor prints the resulting Vout = 5.0 V on the schematic. The 5 V rail feeds all eight servo headers and is rated 3 A total. 3.3 V for the MCU comes from a second regulator (U2, SSP7615-33). Standby draw is 12 V at 4.56 mA; 12 V at 1.6 A with eight servos moving.\nLOGIC: 3.3 V I2C. The unit is a bus slave - the host must supply the pull-ups; the board's own 2.2 kOhm parts are on its internal MCU bus, not on the HY2.0 socket.\nCIRCUIT: the servo signal pins are the STM32's timer channels - PA0 TIM2_CH1, PA1 TIM2_CH2, PA2 TIM2_CH3, PA3 TIM2_CH4, PA6 TIM3_CH1, PA7 TIM3_CH2, PB0 TIM3_CH3, PB1 TIM3_CH4 - each with a 1 nF/50 V capacitor on the signal line. Current sensing is an INA199A1DCKR (U3) across a 10 mOhm/1% shunt (R4), read on ADC1_IN4, and the vendor prints the conversion as I = (V / 50 / 10 mOhm) A. Input voltage is divided by R6 100K/1% and R5 1K/1% onto ADC1_IN16. The two status LEDs are RED (DC input present) and GREEN (undervoltage), green driven through R23 10K/1%. The I2C side of the STM32 is PB6/PB7 (the vendor's own design note: PB7 = SDA/RX1, PB6 = SCL/TX1).\nTRAPS: (1) The board's own servo headers and its HY2.0 sockets are different rails: the 5 V on pads 2 and 6 is the bucked servo rail, so a host powering the unit from the Grove socket is back-feeding a 3 A buck output. (2) The IN and OUT sockets are wired in parallel and 0-ohm links decide the topology - R8/R9 = 0 R with R10/R11 = NC for the Unit interface, and the reverse for Chain - so a board built for Chain does not answer I2C the same way. (3) The address encoder has 16 positions and every one of them is a live address; there is no disable position. (4) 9-24 V on the barrel jack is separate from and unrelated to the 5 V on the Grove sockets.

Provenance

Every figure on this page was read from the 4 sources below and last checked on Oct 31, 2026.

Related boards