Electronics check
Generated by strido_verify.electronics from hardware/electronics.yaml and the firmware pin header firmware/strido_esp32s3/src/board_config.h. Do not edit by hand.
XIAO ESP32-S3 pins
| Pad | GPIO | Function | Connects to | Firmware constant | Note |
|---|---|---|---|---|---|
| D0 | 1 | lcd_cs | LCD CS | kLcdCs | |
| D1 | 2 | lcd_rst | LCD RST | kLcdRst | |
| D2 | 3 | lcd_backlight | LCD BL | kLcdBacklight | strapping pin: driven only after boot |
| D3 | 4 | servo_oe_n | PCA9685 OE | kServoOutputEnableN | active low; 2.2 kΩ pull-up to VCC keeps outputs off in reset |
| D4 | 5 | i2c_sda | I²C SDA | kSda | |
| D5 | 6 | i2c_scl | I²C SCL | kScl | |
| D8 | 7 | lcd_sck | LCD CLK | kLcdSck | |
| D9 | 8 | lcd_dc | LCD DC | kLcdDc | |
| D10 | 9 | lcd_mosi | LCD DIN | kLcdMosi |
I²C bus
400 kHz.
| Address | Device | Note |
|---|---|---|
| 0x40 | PCA9685 servo driver | 0x70 = all-call |
| 0x6A | LSM6DSOX IMU | |
| 0x41 | INA260 power monitor | bridge the A0 jumper (default 0x40 collides with the PCA9685) |
PCA9685 servo channels
| Leg | hip | thigh | calf (knee crank) |
|---|---|---|---|
| FL | 15 | 11 | 7 |
| FR | 14 | 10 | 6 |
| RL | 13 | 9 | 5 |
| RR | 12 | 8 | 4 |
Worst-case currents
| Branch | Current (A) |
|---|---|
| ubec_front | 10.00 |
| ubec_rear | 10.00 |
| servo_branch | 20.83 |
| logic_branch | 2.74 |
| logic_5v | 3.16 |
| logic_5v_per_pin | 3.16 |
| pack | 23.58 |
Checks: 81 passed (3 without margin), 0 failed
| Check | Result | Detail |
|---|---|---|
| firmware pin | pass | kLcdCs = 1 (YAML D0 = GPIO 1) |
| firmware pin | pass | kLcdRst = 2 (YAML D1 = GPIO 2) |
| firmware pin | pass | kLcdBacklight = 3 (YAML D2 = GPIO 3) |
| firmware pin | pass | kServoOutputEnableN = 4 (YAML D3 = GPIO 4) |
| firmware pin | pass | kSda = 5 (YAML D4 = GPIO 5) |
| firmware pin | pass | kScl = 6 (YAML D5 = GPIO 6) |
| firmware pin | pass | kLcdSck = 7 (YAML D8 = GPIO 7) |
| firmware pin | pass | kLcdDc = 8 (YAML D9 = GPIO 8) |
| firmware pin | pass | kLcdMosi = 9 (YAML D10 = GPIO 9) |
| I²C frequency | pass | kI2cHz = 400000 (YAML 400000) |
| firmware I²C address | pass | kPcaAddress = 64 (YAML 0x40) |
| firmware I²C address | pass | kImuAddress = 106 (YAML 0x6A) |
| firmware I²C address | pass | kPowerMonitorAddress = 65 (YAML 0x41) |
| I²C address unique | pass | 0x40 PCA9685 servo driver, 0x41 INA260 power monitor, 0x6A LSM6DSOX IMU, 0x70 PCA9685 servo driver |
| servo channels unique | pass | [15, 11, 7, 14, 10, 6, 13, 9, 5, 12, 8, 4] |
| servo channels in range | pass | 0..15 |
| firmware servo channels | pass | kServoChannel = [15, 11, 7, 14, 10, 6, 13, 9, 5, 12, 8, 4] |
| servo PWM frequency | pass | kServoFrequencyHz = 200 Hz, servo max 330 Hz |
| on-board LED | pass | kStatusLed = 21 (YAML GPIO 21) |
| header constants described | pass | 19 constants |
| ubec_front load | pass | 6 servos trotting ≈ 4.2 A ≤ 10 A continuous |
| ubec_front stall warning | pass | 6 stalled servos 21 A > 15 A peak: never drive all joints into hard stops |
| ubec_rear load | pass | 6 servos trotting ≈ 4.2 A ≤ 10 A continuous |
| ubec_rear stall warning | pass | 6 stalled servos 21 A > 15 A peak: never drive all joints into hard stops |
| 5 V regulator load | pass | 3.16 A peak ≤ 5.5 A |
| power switch load | pass | 2.74 A ≤ 6.0 A |
| INA260 range | pass | 2.74 A, 8.4 V |
| main fuse ≥ load | pass | servo + logic 23.6 A ≤ 25.0 A |
| logic fuse ≥ load | pass | 2.74 A ≤ 7.5 A |
| wire W01 load | pass | 14 AWG: 23.6 A ≤ 32 A |
| wire W02 load | pass | 14 AWG: 23.6 A ≤ 32 A |
| wire W02 fuse | pass | main fuse 25.0 A ≤ 14 AWG 32 A |
| wire W02/arming load | pass | 14 AWG: 23.6 A ≤ 32 A |
| wire W02/arming fuse | pass | main fuse 25.0 A ≤ 14 AWG 32 A |
| wire W02/logic load | pass | 14 AWG: 23.6 A ≤ 32 A |
| wire W02/logic fuse | pass | main fuse 25.0 A ≤ 14 AWG 32 A |
| wire W03 load | pass | 14 AWG: 20.8 A ≤ 32 A |
| wire W03 fuse | pass | main fuse 25.0 A ≤ 14 AWG 32 A |
| wire W03/front load | pass | 14 AWG: 20.8 A ≤ 32 A |
| wire W03/front fuse | pass | main fuse 25.0 A ≤ 14 AWG 32 A |
| wire W03/rear load | pass | 14 AWG: 20.8 A ≤ 32 A |
| wire W03/rear fuse | pass | main fuse 25.0 A ≤ 14 AWG 32 A |
| wire W04 load | pass | 14 AWG: 23.6 A ≤ 32 A |
| wire W04 fuse | pass | main fuse 25.0 A ≤ 14 AWG 32 A |
| wire W04/front load | pass | 14 AWG: 23.6 A ≤ 32 A |
| wire W04/front fuse | pass | main fuse 25.0 A ≤ 14 AWG 32 A |
| wire W04/rear load | pass | 14 AWG: 23.6 A ≤ 32 A |
| wire W04/rear fuse | pass | main fuse 25.0 A ≤ 14 AWG 32 A |
| wire W04/logic load | pass | 18 AWG: 2.7 A ≤ 16 A |
| wire W04/logic fuse | pass | logic fuse 7.5 A ≤ 18 AWG 16 A |
| wire W05 load | pass | 18 AWG: 10.0 A ≤ 16 A |
| wire W06 load | pass | 18 AWG: 10.0 A ≤ 16 A |
| wire W07/vplus load | pass | 18 AWG: 10.0 A ≤ 16 A |
| wire W07/gnd load | pass | 18 AWG: 10.0 A ≤ 16 A |
| wire W08/vplus load | pass | 18 AWG: 10.0 A ≤ 16 A |
| wire W08/gnd load | pass | 18 AWG: 10.0 A ≤ 16 A |
| wire W09 load | pass | 18 AWG: 2.7 A ≤ 16 A |
| wire W09 fuse | pass | logic fuse 7.5 A ≤ 18 AWG 16 A |
| wire W10 load | pass | 18 AWG: 2.7 A ≤ 16 A |
| wire W10 fuse | pass | logic fuse 7.5 A ≤ 18 AWG 16 A |
| wire W11 load | pass | 18 AWG: 2.7 A ≤ 16 A |
| wire W11 fuse | pass | logic fuse 7.5 A ≤ 18 AWG 16 A |
| wire W24 load | pass | 18 AWG: 2.7 A ≤ 16 A |
| wire W24 fuse | pass | logic fuse 7.5 A ≤ 18 AWG 16 A |
| wire W12 load | pass | 22 AWG: 1.6 A ≤ 7 A |
| supply: Hobbywing UBEC-10A input | pass | 6.0-8.4 V (nominal 7.4) within 6.0-25.2 V (2-6S LiPo at 3.0-4.2 V per cell (Hobbywing UBEC-10A V2-Car manual: input 2-6S)) |
| supply: Pololu 2813 power switch | pass | 6.0-8.4 V (nominal 7.4) within 4.5-40.0 V (Pololu product page) |
| supply: INA260 bus input (VIN+/-) | pass | 6.0-8.4 V (nominal 7.4) within 0.0-36.0 V (TI INA260 datasheet) |
| supply: Pololu D36V50F5 input | pass | 6.0-8.4 V (nominal 7.4) within 5.5-50.0 V (Pololu product page) |
| supply: SPT5435LV servo V+ | pass | 5.4-6.0 V (nominal 6.0) within 4.8-6.0 V (SPT spec page (voltage range 4.8/6.0 V)) |
| supply: Raspberry Pi 5 (GPIO 5 V) | pass | 4.8-5.2 V (nominal 5.0) within 4.75-5.25 V ([ESTIMATE] 5 V +/- 5 %; undervoltage flag below 4.63 V) |
| supply: XIAO ESP32-S3 (USB from Pi) | pass | 4.8-5.2 V (nominal 5.0) within 4.75-5.25 V (USB 2.0 VBUS range) |
| supply: RPLIDAR C1 (USB from Pi) | pass | 4.8-5.2 V (nominal 5.0) within 4.75-5.25 V (USB 2.0 VBUS range [ESTIMATE: C1 datasheet states 5 V]) |
| supply: PCA9685 VCC | pass | 3.2-3.4 V (nominal 3.3) within 2.3-5.5 V (NXP PCA9685 datasheet) |
| supply: LSM6DSOX breakout VIN | pass | 3.2-3.4 V (nominal 3.3) within 3.0-5.0 V (Adafruit 4438 (3-5 V)) |
| supply: INA260 VS | pass | 3.2-3.4 V (nominal 3.3) within 2.7-5.5 V (TI INA260 datasheet) |
| supply: Waveshare 2inch LCD VCC | pass, no margin | rail minimum 3.2 V below the rated 3.3 V (Waveshare wiki (3.3 V / 5 V)): no margin, measure it |
| signal: servo PWM -> SPT5435LV signal input | pass, no margin | rail minimum 3.2 V below the rated 3.3 V (SPT spec page (PWM voltage 3.3-5.0 V)): no margin, measure it |
| signal: I²C -> PCA9685, LSM6DSOX, INA260 | pass | 3.2-3.4 V (nominal 3.3) within 3.0-5.0 V (overlap of the three VCC ranges (PCA9685 2.3-5.5, LSM6DSOX breakout 3-5, INA260 2.7-5.5 V)) |
| signal: LCD SPI -> Waveshare 2inch LCD | pass, no margin | rail minimum 3.2 V below the rated 3.3 V (Waveshare wiki): no margin, measure it |
| signal: servo OE -> PCA9685 OE | pass | 3.2-3.4 V (nominal 3.3) within 2.3-5.5 V (NXP PCA9685 datasheet (VCC range)) |