Skip to the content
2 layers45 × 59.5 mmOmniDrive, the printed circuit board in 3D

A general-purpose dual motor driver board with ESP32.

Size
45 × 59.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
79
Nets
94
Pads
405
Tracks, vias
1,614, 158
Pours
522
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
15 Jul 2026
Updated
16 Jul 2026

Overview

OmniDrive is an open-source printed circuit board by TLNKhanh, from the TLNKhanh/OmniDrive repository on GitHub, published under the MIT licence. It is a 2-layer board of 45 × 59.5 mm with 79 parts on 94 nets, routed with 1,614 tracks and 158 vias.

It is built around the CH340C, ESP32-WROOM-32E and DRV8833PWP, with the CH224K, INA219AID and ME6211C33M5G-N among its other parts. Its parts include 26 capacitors, 14 resistors, 9 ICs, 7 connectors and 5 diodes. It belongs with the robots and motor control boards and the ESP32 boards of this library.

Main components

10

README

README.md

OmniDrive

Dual H-bridge motor driver + ESP32 + USB-C PD, squeezed into a 45×59.5mm 2-layer board.

I wanted a board that could work with a single USB-C port and have it drive two motors (or 2 pairs if configured) while able to measure the board's current draw.

schematic Full schematic — click image or open PDF

pcb_top PCB top copper layer — open PDF

pcb_bottom PCB bottom copper layer — open PDF

What it does

  • Drives 2 or 4 DC motors (configurable) with two DRV8833 H-bridges, one DRV8833 is optimal, up to 1.5A per channel.
  • Negotiates power over USB-C via CH224K to get 9V from power supply
  • Measures total motor current with an INA219 over I2C
  • Lets you program the ESP32 over USB through the CH340C, with automatic boot/reset
  • Breaks out power lines and 14 GPIOs + I2C on a header for sensors, encoders, whatever
  • Configurable 2S / 1S battery pack via solder pads

Why I built it

I wanted something that could serve for multiple RC car or stepper driving projects without having to combine separate modules.

Specs

FunctionComponent
MCUESP32-WROOM-32E
Motor drivers2× DRV8833 (HTSSOP-16 with thermal pad)
USB-C PDCH224K sink, negotiates 9V
Current senseINA219, 0.1Ω shunt, I2C
USB-UARTCH340C with auto DTR/RTS
Logic powerME6211C50 (5V), ME6211C33 (3.3V)
Breakout12 GPIO through 2x 3x2 header, Power through 1x 3x1 header
PCB2-layer, 1.6mm FR4, 45×59.5mm

Power flow

USB-C VBUS → CH224K negotiates voltage → +BATT rail

+BATT splits three ways:

  • Directly to the DRV8833 motor drivers
  • Through a 5V LDO (ME6211C50) for the CH340C and other devices
  • It also then goes through a 3.3V LDO (ME6211C33) for the ESP32, INA219, WS2812,...

Motor current goes through a shared 0.1Ω sense resistor before reaching the drivers, so the INA219 sees total bus current. Per-motor would need two INA219s (maybe for later).

Known issues / things to fix

A few things I'll change next version:

  • The ME6211C33 is rated for 500mA and ESP32 can spike past that during WiFi TX. On a long USB-C cable with some voltage drop, the battery rail might sag enough to make the 3.3V regulator drop out. An AP2112 or similar low-dropout part would be safer.

  • Didn't add TVS diodes on the USB-C CC/D+/D- lines or the motor outputs

  • As mentioned, only total motor current. Can't tell which motor is drawing what.

Files in hardware/

text
hardware/
├── schematic.pdf          — full schematic (click to view)
├── PCB_Top.pdf            — top copper render
├── PCB_Bottom.pdf         — bottom copper render
├── gerbers.zip            — Gerbers + drill files
├── bom.csv                — BOM for JLCPCB assembly
├── pick-place.csv         — centroid file
├── kicad/                 — source KiCad project
└── photos/                — PNG renders of schematic + PCB

Parts

79
QtyValueFootprintReferences
160.1uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC2, C4, C6, C8, C15, C20, C21, C23, C24, C26, C28, C29, C30, C31, C32, C33
510uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1, C5, C7, C22, C25
5BridgedJumperJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP5, JP6, JP7, JP8, JP10
410kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR7, R8, R9, R10
44.7kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR11, R13, R14, R15
4MountingHole_2.2mm_M2_Pad_ViaMountingHole:MountingHole_2.2mm_M2_Pad_ViaHoleA, HoleB, HoleC, HoleD
31kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR2, R3, R4
3ConfJumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP2, JP3, JP9
20.01uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC16, C18
20.1RResistor_SMD:R_2512_6332Metric_Pad1.40x3.35mm_HandSolderR5, R6
22.2uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC17, C19
2Conn_02x03_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ8, J11
2DRV8833PWPPackage_SO:HTSSOP-16-1EP_4.4x5mm_P0.65mm_EP3.4x5mm_Mask2.46x2.31mm_ThermalViasU3, U7
2MMBT2222APackage_TO_SOT_SMD:SOT-23Q1, Q2
2REDLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD3, D4
2SW_PushButton_Switch_SMD:SW_Push_1P1T_NO_E-Switch_TL3301NxxxxxGSW1, SW2
11uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC3
122uInductor_SMD:L_Changjiang_FXL0630L1
16.8kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1
1BatteryConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ2
1CH224KPackage_SO:SSOP-10-1EP_3.9x4.9mm_P1mm_EP2.1x3.3mmU4
1CH340CPackage_SO:SOIC-16_3.9x9.9mm_P1.27mmU1
1Conn_01x03Connector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_VerticalJ5
1Conn_01x08Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_VerticalJ4
1ESP32-WROOM-32ERF_Module:ESP32-WROOM-32EU8
1GREENLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD5
1INA219APackage_TO_SOT_SMD:SOT-23-8U5
1ME6211C33M5Package_TO_SOT_SMD:SOT-23-5U9
1ME6211C50M5Package_TO_SOT_SMD:SOT-23-5U10
1OnLedJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP1
1SS24Diode_SMD:D_SMAD1
1SwitchConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ3
1USB_CConnector_USB:USB_C_Receptacle_HCTL_HC-TYPE-C-16P-01AJ1
1WS2812LED_SMD:LED_WS2812_PLCC6_5.0x5.0mm_P1.6mmD6
1~Package_DFN_QFN:NXP_VQFN-16-1EP_4x4mm_P0.65mm_EP2.1x2.1mmU2

Similar boards

  • 2 layers73.5 × 37.5 mmSlimer, the printed circuit board in 3D

    Slimer

    n3phrite/Slimer-MK-I

    Slime VR MoCap PCB

    53 parts
  • 2 layers150 × 70 mm6in-6out, the printed circuit board in 3D

    6in-6out

    Oopsan204/IO_ISOLATOR_16INOUT

    Input output isolator 16 channels.

    227 parts
  • 2 layers58 × 48 mmRgb, the printed circuit board in 3D

    Rgb

    michael-betz/espirgbani_pio

    the platformio version of espirgbani

    59 parts3
  • 2 layers82 × 60 mmFinalMicroMouseFiles, the printed circuit board in 3D

    FinalMicroMouseFiles

    Eng-Claire/power_sub_systems

    EEE3088F MICROMOUSE PROJECT

    56 parts
  • 2 layers76.2 × 50.8 mmPowerCircuit, the printed circuit board in 3D

    PowerCircuit

    usandakahle/DesignProject

    Kicad, schematics EEE3088F

    63 parts
  • 2 layers188.5 × 167.3 mmPanel2, the printed circuit board in 3D

    Panel2

    sean618/MakerTiles

    Modular STM32 electronic-tile system: hardware, firmware, the MicroBus + Field Protocol stack, and a Python daemon.

    585 partsMIT

Questions

How big is the OmniDrive PCB?

It measures 45 × 59.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the OmniDrive use?

79 parts, built around the CH340C, ESP32-WROOM-32E, DRV8833PWP and CH224K. 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 OmniDrive KiCad files?

From the TLNKhanh/OmniDrive repository on GitHub, at the commit this page was made from: the board is hardware/kicad/OmniDrive.kicad_pcb and its schematic hardware/kicad/OmniDrive.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the OmniDrive design in my own project?

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