
OSO BOOK B1
joeycastillo/The-Open-Book
For details on how to build, test and use Open Book, I've made documentation available here.

3we Universal Modular Mobile Robot Platform — Open-source firmware, ROS2, hardware, and SDK
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.
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.
| Parameter | Value |
|---|---|
| Dimensions | 120 × 90 mm |
| Layers | 4 (Signal - GND - Power - Signal) |
| Minimum trace width | 0.15 mm |
| Minimum via | 0.3 mm drill / 0.6 mm pad |
| Clearance | 0.2 mm |
| Copper weight | 1 oz (outer), 1 oz (inner) |
| Surface finish | ENIG (lead-free) |
| Board thickness | 1.6 mm |
| Layer | Usage |
|---|---|
| Top | Signal traces, component pads |
| Inner 1 | Ground plane (unbroken) |
| Inner 2 | Power distribution (VBAT, 5V, 3.3V, 12V) |
| Bottom | Signal traces, component pads |
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 ctrl2×17 pin header (2.54mm pitch), keyed with polarization notch.
| Pin | Function | Rating | Notes |
|---|---|---|---|
| 1-2 | +5V Power | 3A max | P-MOS soft-start, switched from +5V_PI (MP1584EN 5A rail) via MCP23017 GPA0 |
| 3-4 | +12V Power | 3A max | MOSFET soft-start |
| 5-6 | GND (Power) | — | Wide traces (1mm) |
| 7 | I2C SDA | 3.3V | Direct (shared bus with IMU, INA219, MCP23017) |
| 8 | I2C SCL | 3.3V | Direct (shared bus with IMU, INA219, MCP23017) |
| 9 | UART TX | 3.3V | From payload to platform |
| 10 | UART RX | 3.3V | From platform to payload |
| 11-18 | GPIO ×8 | 3.3V | Via MCP23017 expander |
| 19 | USB D+ | — | Hub downstream port |
| 20 | USB D- | — | Hub downstream port |
| 21 | CAN-H | — | Industrial SKU only |
| 22 | CAN-L | — | Industrial SKU only |
| 23-24 | VBAT Direct | 10A | PPTC protected |
| 25 | ENABLE | Active low | Power control |
| 26 | FAULT | Open drain | Payload fault |
| 27 | DETECT | Mechanical | Spring contact |
| 28 | INT | Active low | Interrupt request |
| 29 | +3.3V Ref | 100mA | Logic reference |
| 30 | ID SCL | — | EEPROM discovery |
| 31 | ID SDA | — | EEPROM discovery |
| 32-34 | GND (Signal) | — | Signal return |
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.3" SH1106 128×64 OLED with 3 integrated tactile buttons (UP/DOWN/OK). Connects via existing I2C bus (address 0x3C) + MCP23017 button inputs.
| Signal | Connection | Notes |
|---|---|---|
| OLED VCC | +3V3 | From I2C header |
| OLED GND | GND | From I2C header |
| OLED SDA | I2C_SDA (GPIO 1) | Shared bus |
| OLED SCL | I2C_SCL (GPIO 2) | Shared bus |
| BTN_UP | MCP23017 GPB6 | Active-low with internal pull-up |
| BTN_DOWN | MCP23017 GPB7 | Active-low with internal pull-up |
| BTN_OK | MCP23017 GPA4 | Active-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.
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.
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:
Do NOT populate R9 when:
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):
Advantages: No PCB re-spin, fast iteration, replaceable if damaged.
For production run > 500 units:
robot-platform-industrial.kicad_pcb| Factor | Approach A | Approach B |
|---|---|---|
| Unit cost (motor driver) | ¥36 (2 modules) | ¥24 (bare ICs + passives) |
| PCB NRE | ¥0 | ¥3,000 |
| Break-even | — | ~250 units |
| Assembly complexity | Higher (wiring) | Lower (SMT) |
| Reliability | Module connectors | Soldered joints |
| Thermal management | Module heatsink | PCB thermal vias + external heatsink |
Current decision: Approach A for initial batch (Q2 2026). Evaluate Approach B after 100-unit production feedback.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | MountingHole_M2.5 | MountingHole:MountingHole_2.7mm_M2.5_Pad_Via | MH1, MH2, MH3, MH4 |
| 1 | ESP32-S3-WROOM-1 | RF_Module:ESP32-S3-WROOM-1 | U1 |
| 1 | PBC-34_Payload_Bus | Connector:PBC-34 | J1 |
| 1 | USB_C | Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J3 |
| 1 | XT30_Battery | Connector:XT30_Male_Vertical | J2 |
It measures 120 × 90 mm and has 4 copper layers, 1.6 mm thick.
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.
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.
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).

joeycastillo/The-Open-Book
For details on how to build, test and use Open Book, I've made documentation available here.
hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

bitaxeorg/bitaxeGamma
Bitaxe based on the BM1370 from the S21 Pro



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

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

Hack-a-Day/2025-Communicator_Badge
The 2025 Hackaday Supercon RF Communicator Badge