Skip to the content
PCBKitNew board
4 layers120 × 90 mmRobot platform, the printed circuit board in 3D

3we Universal Modular Mobile Robot Platform — Open-source firmware, ROS2, hardware, and SDK

Size
120 × 90 mm
Copper layers
4
Thickness
1.6 mm
Parts
8
Nets
4
Pads
22
Tracks, vias
8, 1
Pours
3
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
8 May 2026
Updated
3 Jun 2026

Overview

Robot platform is an open-source printed circuit board by telleroutlook, from the telleroutlook/3we-robot-platform repository on GitHub, published under the Apache-2.0 licence. It is a 4-layer board of 120 × 90 mm with 8 parts on 4 nets, routed with 8 tracks and 1 via.

It is built around the ESP32-S3-WROOM-1-N8. Its parts include 3 connectors and 1 IC. It belongs with the robots and motor control boards and the ESP32 boards of this library.

Main components

1

README

hardware/pcb/README.md

PCB Design Documentation

Overview

The robot-platform mainboard integrates the ESP32-S3 MCU, motor drivers, power management, sensor interfaces, and the PBC-34 payload connector on a single 4-layer PCB.

Board Specifications

ParameterValue
Dimensions120 × 90 mm
Layers4 (Signal - GND - Power - Signal)
Minimum trace width0.15 mm
Minimum via0.3 mm drill / 0.6 mm pad
Clearance0.2 mm
Copper weight1 oz (outer), 1 oz (inner)
Surface finishENIG (lead-free)
Board thickness1.6 mm

Layer Stack

LayerUsage
TopSignal traces, component pads
Inner 1Ground plane (unbroken)
Inner 2Power distribution (VBAT, 5V, 3.3V, 12V)
BottomSignal traces, component pads

Power Architecture

text
Battery Pack(s) ─── XT30 ──→ Q8 P-MOS ──→ VBAT Bus (7.4V)
                              (reverse      │
                              protection)   │
                    ┌──────────────────────────┼──────────────────────┐
                    │                          │                      │
                    ▼                          ▼                      ▼
              MP2359 Buck              MP1584EN Buck            [Safety Relay]
              5V / 1.2A                5V / 5A                       │
              (ESP32, sensors)              │                    Coil supply:
                    │               ┌──────┼──────┐           +5V_ESP → SW1b NC
                    ▼               │      │      │           → +5V_ESTOP_COIL
              AP2112K-3.3        Q6a/Q6b   Q3                 → RLY1 coil
              3.3V / 600mA       P-MOS SW  P-MOS SW                  │
              (logic, I2C)          │         │                      ▼
                                    ▼         ▼               Motor DRV8833
                              +5V_PI_SW   +5V_PAYLOAD         (7.4V / 10A max)
                              (Pi5, 3A)   (Payload, 2A)
                              GPIO45 ctrl  MCP23017 ctrl

Supervisory Circuits

  • TPS3813 (U10): External watchdog, 1.6s timeout. GPIO46 toggles WDI; if firmware hangs, RST pulls ESP32 EN low → hardware reset. Independent of software watchdog.
  • Pi5 Power Switch (Q6a/Q6b/Q7): Dual Si2301CDS P-MOS (parallel, 5A total) with AO3400A N-MOS driver. GPIO45 HIGH = Pi5 ON. Default OFF at boot (R34 pull-down). Standard/Industrial SKU only (DNP on Basic).
  • E-stop Safety Path (SW1b → RLY1): The E-stop button has dual NC contact pairs. NC2 (SW1b) is in series with the safety relay coil +5V supply. Pressing E-stop physically breaks the coil circuit → relay de-energizes → motor power cut. This is a pure hardware interlock — zero firmware dependency, compliant with ISO 13850. R17 (Q5 gate pull-up) also connects to +5V_ESTOP_COIL so the N-MOS driver loses gate drive simultaneously.

PBC-34 Payload Bus Connector

2×17 pin header (2.54mm pitch), keyed with polarization notch.

PinFunctionRatingNotes
1-2+5V Power3A maxP-MOS soft-start, switched from +5V_PI (MP1584EN 5A rail) via MCP23017 GPA0
3-4+12V Power3A maxMOSFET soft-start
5-6GND (Power)—Wide traces (1mm)
7I2C SDA3.3VDirect (shared bus with IMU, INA219, MCP23017)
8I2C SCL3.3VDirect (shared bus with IMU, INA219, MCP23017)
9UART TX3.3VFrom payload to platform
10UART RX3.3VFrom platform to payload
11-18GPIO ×83.3VVia MCP23017 expander
19USB D+—Hub downstream port
20USB D-—Hub downstream port
21CAN-H—Industrial SKU only
22CAN-L—Industrial SKU only
23-24VBAT Direct10APPTC protected
25ENABLEActive lowPower control
26FAULTOpen drainPayload fault
27DETECTMechanicalSpring contact
28INTActive lowInterrupt request
29+3.3V Ref100mALogic reference
30ID SCL—EEPROM discovery
31ID SDA—EEPROM discovery
32-34GND (Signal)—Signal return

ESD Protection

  • TVS diodes on all external-facing pins (PBC-34, USB, motor connectors)
  • ESD rating: IEC 61000-4-2, ±8kV contact / ±15kV air
  • Specific parts: PESD5V0S1BB (single-line) on signal pins

Design Rules

  • Power traces: 2mm minimum for motor current paths
  • Keep analog (ADC, encoder) traces away from PWM/motor traces
  • Ground plane stitching vias every 5mm along board edges
  • Motor driver thermal pads connected to internal ground plane
  • Decoupling capacitors placed within 3mm of IC power pins
  • USB differential pairs: 90Ω impedance controlled
  • BNO055 IMU: 100nF + 10µF bulk cap on VDD (C4 + C17, per datasheet)

MCP23017 Interrupt (TP1)

INTA is active-low open-drain with 10k pull-up (R36), routed to test pad TP1. Mirror mode combines both ports onto INTA. Current firmware uses 100ms polling.

To enable interrupt-driven operation (future rev or user modification):

  1. Bridge TP1 to an available ESP32 GPIO via bodge wire
  2. Configure GPIO as input with pull-up, falling-edge interrupt
  3. In ISR: read MCP23017 INTCAP register to identify source (payload detect, DRV8833 fault, GPIO change)
  4. Reduces I2C bus load from continuous polling to event-driven

Status Display Panel (Optional Add-on)

1.3" SH1106 128×64 OLED with 3 integrated tactile buttons (UP/DOWN/OK). Connects via existing I2C bus (address 0x3C) + MCP23017 button inputs.

SignalConnectionNotes
OLED VCC+3V3From I2C header
OLED GNDGNDFrom I2C header
OLED SDAI2C_SDA (GPIO 1)Shared bus
OLED SCLI2C_SCL (GPIO 2)Shared bus
BTN_UPMCP23017 GPB6Active-low with internal pull-up
BTN_DOWNMCP23017 GPB7Active-low with internal pull-up
BTN_OKMCP23017 GPA4Active-low with internal pull-up

No PCB modification required. Module mounts on chassis top panel via M2 standoffs, connects through 4-pin GH1.25 (I2C) + 3-pin GH1.25 (buttons) to mainboard headers.

I2C bus load: +10pF capacitance (SH1106 typical). Existing 2.2kΩ pull-ups remain adequate for 400kHz with total bus capacitance < 250pF.

Industrial SKU Motor Driver Strategy

The mainboard PCB uses DRV8833 (dual H-bridge, 1.2A/ch) for Basic and Standard SKUs. The Industrial SKU requires BTS7960 (43A half-bridge) for 550 motors at 12V.

Approach A: External Module (Initial Batch)

CAN Bus Termination (R9, 120Ω)

R9 is a 120Ω CAN bus termination resistor, shipped as DNP (Do Not Populate) on Basic and Standard SKUs (which have no CAN bus).

For Industrial SKU: R9 MUST be populated (soldered) when:

  • The robot is at one end of the CAN bus (most single-robot setups)
  • The Payload device does NOT provide its own termination

Do NOT populate R9 when:

  • The robot sits in the middle of a multi-node CAN chain
  • Both ends of the bus are already terminated by other nodes

CAN bus requires exactly two 120Ω terminations — one at each physical end of the bus. Measure 60Ω between CAN-H and CAN-L (bus powered off) to confirm correct termination.

Recommended for first production run (< 100 units):

  • Mainboard PCB unchanged — no BTS7960 footprint on-board
  • Motor power output via 4× XT30 connectors (2-pin, 30A rated)
  • PWM/EN signals routed to GH1.25-4P connector (PWM_H, PWM_L, VCC, GND)
  • Off-the-shelf BTS7960 module (¥18/ea, 2 modules for 4 motors)
  • Mounting: M3 standoffs on chassis plate, 100mm motor wires

Advantages: No PCB re-spin, fast iteration, replaceable if damaged.

Approach B: Integrated PCB (Volume Production)

For production run > 500 units:

  • New KiCad variant: robot-platform-industrial.kicad_pcb
  • Replace DRV8833 area with 4× BTS7960 half-bridge ICs
  • Add ACS712-05B current sense on each motor phase
  • Requires: larger board (140×100mm), heatsink mounting holes, thermal vias under driver pads
  • Internal ground plane extended for thermal relief
  • Estimated NRE: ¥3,000 (4-layer prototype + stencil)

Decision Criteria

FactorApproach AApproach B
Unit cost (motor driver)¥36 (2 modules)¥24 (bare ICs + passives)
PCB NRE¥0¥3,000
Break-even—~250 units
Assembly complexityHigher (wiring)Lower (SMT)
ReliabilityModule connectorsSoldered joints
Thermal managementModule heatsinkPCB thermal vias + external heatsink

Current decision: Approach A for initial batch (Q2 2026). Evaluate Approach B after 100-unit production feedback.

Manufacturing Notes

  • Gerber format: RS-274X
  • Drill file: Excellon format
  • Pick and place: centroid + rotation per component
  • All resistors/capacitors 0402 minimum (0603 preferred for hand assembly)
  • QFN packages require solder paste stencil (0.12mm thickness)

Parts

8
QtyValueFootprintReferences
4MountingHole_M2.5MountingHole:MountingHole_2.7mm_M2.5_Pad_ViaMH1, MH2, MH3, MH4
1ESP32-S3-WROOM-1RF_Module:ESP32-S3-WROOM-1U1
1PBC-34_Payload_BusConnector:PBC-34J1
1USB_CConnector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J3
1XT30_BatteryConnector:XT30_Male_VerticalJ2

Questions

How big is the Robot platform PCB?

It measures 120 × 90 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Robot platform use?

8 parts, built around the ESP32-S3-WROOM-1-N8. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Robot platform KiCad files?

From the telleroutlook/3we-robot-platform repository on GitHub, at the commit this page was made from: the board is hardware/pcb/robot-platform.kicad_pcb and its schematic hardware/pcb/robot-platform.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Robot platform design in my own project?

Its repository publishes it under the Apache-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers85 × 115 mmOSO BOOK B1, the printed circuit board in 3D

    OSO BOOK B1

    joeycastillo/The-Open-Book

    For details on how to build, test and use Open Book, I've made documentation available here.

    76 parts8.1kCC-BY-SA-4.0
  • 2 layers299 × 82.5 mmPixelWave, the printed circuit board in 3D

    PixelWave

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    663 parts915
  • 4 layers56.5 × 99.8 mmBitaxeGamma, the printed circuit board in 3D

    BitaxeGamma

    bitaxeorg/bitaxeGamma

    Bitaxe based on the BM1370 from the S21 Pro

    147 parts432CERN-OHL-S-2.0
  • 2 layers129.5 × 50.8 mmLilka, the printed circuit board in 3D

    Lilka

    lilka-dev/lilka

    Схема та документація ігрової консолі Lilka

    39 parts234GPL-2.0
  • 4 layers84.5 × 129.5 mmBitaxeHex, the printed circuit board in 3D

    BitaxeHex

    bitaxeorg/ultraHex

    multi-ASIC Bitcoin miner

    369 parts190CERN-OHL-S-2.0
  • 2 layers110 × 115 mmEsp32 keyboard v0.1, the printed circuit board in 3D

    Esp32 keyboard v0.1

    hhuysqt/esp32s3-keyboard

    USB/BLE keyboard driver based on ESP32S3-WROOM-1

    230 parts168GPL-3.0
  • 2 layers35.1 × 36.6 mmBinNanoFOC, the printed circuit board in 3D

    BinNanoFOC

    katbinaris/nanofoc_devkit

    Compact All-In-One BLDC Controler featuiring ESP32-S3, TMC6300 and Magalpha sensors. Small 35x35mm footprint.

    76 parts146
  • 2 layers148 × 81 mmCommunicator pcb, the printed circuit board in 3D

    Communicator pcb

    Hack-a-Day/2025-Communicator_Badge

    The 2025 Hackaday Supercon RF Communicator Badge

    58 parts107MIT