Robot-01's hardware is a 4-layer-aware 2-layer PCB built around the ESP32-C3 SuperMini + TB6612FNG dual H-bridge. Source files (KiCad 7), production gerbers, BOMs, and SVG layer renders all live in 02_hardware/v3/.

v3
37_rich_light_move v3 Schematic: 2025-07-28 · PCB: 2025-06-21 · KiCad 7.0.6 · workshop-diy.org
3D render of the v3 PCB — top view showing buzzer, NeoPixels D1-D4, motor terminals, ESP32-C3 module, and HC-SR04 header
v3 · 3D render · top view
📐 1 — Schematic — full design

Full schematic exported from KiCad as searchable SVG. Use Ctrl+F in your browser to find a component reference (e.g. R7, U1, JP2) — the silkscreen text stays as real text.

🔍 Open full size in new tab Schematic exported 2025-07-28 · KiCad 7.0.6 · 1.6 MB · text-searchable
🟫 2 — PCB layer browser

Toggle layers to see what's on each side. Compare with the 3D render above to map silkscreen labels to physical components.

SVGs are rendered to 02_hardware/v3/ by KiCad's File → Plot → SVG. Bundled to Pages by the deploy workflow.

// VIEWING TIP The interactive BOM viewer (KiCad's InteractiveHtmlBom export) is more useful for hunting down where a specific component lives — hover the BOM table → see the part highlighted on the board.
🔌 3 — ESP32-C3 GPIO pin map (from v3 schematic)

All GPIOs as actually wired in the v3 schematic — single source of truth.

Motor driver I²C bus Input Audio / signal Expansion
GPIORoleConnected toDirectionNotes
GPIO 0Push-button inputSW1 (Omron B3F)IN10 kΩ pull-up to 3V3 (R2). Goes via JP1 jumper to GPIO 20 if wanted.
GPIO 1Motor A direction 1TB6612FNG AIN1 + J2 conn + LEDs D5/D6OUTAlso drives green status LED pair via 1 kΩ.
GPIO 2Motor A direction 2TB6612FNG AIN2OUTForms the AIN1/AIN2 truth-table for motor A direction.
GPIO 3Motor A speed (PWM)TB6612FNG PWMA + also exposed on J3OUTGPIO 3 always drives PWMA. The J3 3-pin header taps the same signal so an external device (e.g. servo) can share it. Solder jumper JP2 selects J3's power pin: VCC direct (battery) or 5 V regulated (per the 2025-06-21 schematic note).
GPIO 4BuzzerR7 → transistor → bz1/bz2OUTTransistor stage (R7 base, R8 series, R9 pull-down). Allows louder volume + protects GPIO.
GPIO 5Onboard NeoPixel chainD1 → D2 → D3 → D4 (TX1812, 5050)OUT4× WS2812-compatible addressable RGB LEDs daisy-chained. DIN of D1 = GPIO 5; DOUT of each feeds DIN of next. Drives the "rich light" animations via RMT @ 800 kHz.
GPIO 6Motor B direction 1TB6612FNG BIN1 + J4 connOUTAlso routed to J4 servo header (3-pin V+/GND/sig).
GPIO 7Motor B direction 2TB6612FNG BIN2OUTForms the BIN1/BIN2 truth-table for motor B direction.
GPIO 8I²C SDAOLED 128×32I/O10 kΩ pull-up to 3V3 (R10).
GPIO 9I²C SCLOLED 128×32OUT10 kΩ pull-up to 3V3 (R11). Also BOOT button — pull-up keeps it high at boot.
GPIO 10Motor B speed (PWM)TB6612FNG PWMB + J5 conn + LEDs D7/D8OUTAlso drives blue status LED pair + J5 servo header.
GPIO 20ExpansionJ7 (2-pin) + JP1I/OJP1 jumper bridges this to GPIO 0 if SW1 isn't used.
GPIO 21ExpansionJ6 (4-pin)I/O4-pin connector — likely external I²C device or ultrasonic sensor.
// SUPERSEDES BUILD-GUIDE PIN MAP The earlier build-guide's pin map was speculative (assumed servos + NeoPixel + HC-SR04). This page reflects the actual v3 schematic. The build-guide will be updated to match.
🔗 4 — Connectors — what plugs where

11 connectors on the board. The 3-pin ones follow the standard servo pinout (V+/GND/signal); 2-pin pads are motor outputs; 4-pin is for external I²C / sensor.

J1 2-pin

Auxiliary push-button — wires to GPIO 0 via SW1.

pin 1: GPIO 0 · pin 2: GND

J2 3-pin servo

Servo / LED-pair — signal on GPIO 1. Powers the green LED indicator pair.

VCC · GND · GPIO 1

J3 3-pin servo

Servo-style header that taps the PWMA signal (GPIO 3). JP2 selects whether the V+ pin is VCC (direct battery) or 5 V (regulated) — see schematic note.

V+ (VCC or 5V via JP2) · GND · GPIO 3 / PWMA

J4 3-pin servo

Servo header — signal on GPIO 6 (also TB6612 BIN1).

VCC · 5V · GPIO 6

J5 3-pin servo

Servo header — signal on GPIO 10 (also TB6612 PWMB + blue LED pair).

VCC · 5V · GPIO 10

J6 4-pin · HC-SR04

Ultrasonic distance sensor header. PCB silkscreen labels the four pads vcc · trig · echo · gnd — drop-in for a standard HC-SR04 module.

VCC · TRIG · ECHO · GND (signal pins routed to GPIO 20 / 21)

J7 2-pin

Generic expansion — GPIO 20 + GND. Bridged to GPIO 0 via JP1 if needed.

GPIO 20 · GND

J8 2-pin pads

Motor A output — TB6612FNG AO1/AO2. Solder DC motor leads here.

AO1 · AO2

J9 2-pin pads

Motor B output — TB6612FNG BO1/BO2. Solder second DC motor here.

BO1 · BO2

J10 / J11 2-pin

Battery / power input + switched power-out. SK12D07VG4 slide switch (U2) routes between them.

VDDA · GND

BB1 4-pin I²C

OLED 128×32 — SSD1306-class display module. Inline I²C with R10/R11 pull-ups.

SDA · SCL · VCC · GND
🧩 5 — Key ICs on the board
RefPartRoleWhy
U3ESP32-C3 SuperMiniMCURISC-V 32-bit · WiFi + BLE · USB-C native CDC · 4 MB flash · 13 GPIOs broken out.
U1TB6612FNGDual H-bridge motor driverDrives 2 DC motors up to 1.2 A continuous each. PWMA + AIN1/2 (motor A), PWMB + BIN1/2 (motor B), STBY enable.
U4AMS1117-5.05 V LDO regulatorSteps battery (VDDA) down to 5 V for servos & logic. C4 + C5 = 100 nF decoupling.
U2SK12D07VG4Slide switch (SPDT)Power on/off — selects between battery and disconnected.
SW1B3F (Omron)Tactile push-buttonUser input on GPIO 0. Pulled high by R2 (10 kΩ).
BB1OLED 128×32I²C display moduleSSD1306-class. Status / battery % / sensor readout.
📝 6 — Schematic revision notes

The bottom-right of the v3 schematic carries two annotated revision notes from the designer:

// 21 / 06 / 2025 "select either powering from VCC directly or 5V from regulator. Problems with PWMA for servos add a protection diode."

→ Implication: if you connect a servo via J3 (which shares GPIO 3 with motor PWMA via JP2), the back-EMF can damage the GPIO. Add a 1N4148 reverse-biased between signal and ground.
// 28 / 07 / 2025 "add 1000 µF capacitors for servos."

→ Implication: SG90-class servos draw a stall current spike (~600 mA each). Without bulk capacitance the 5 V rail dips and the C3 browns out. A single 1000 µF electrolytic across 5V↔GND near the servo headers solves it.
// AUDIT CROSS-REFS The audit page items C1 (buzzer/battery), H1 (OLED SDA/onboard LED), H2 (OLED SCL/BOOT) were written when the firmware audit predated this schematic. The v3 board uses the documented pull-up + transistor designs that resolve those concerns. Re-verify firmware against this pin map before treating those audit items as live bugs.

KiCad source on GitHub: 02_hardware/v3/  ·  Other guides: user · build · instructor · learn · start-here