

OmniDrive
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
10CH340C
SOP-16-20℃~+70℃ 2Mbps 3.3V、5V 50uA 7mA Transceiver USB 2.0 SOP-16 USB Converters ROHSWCH (Nanjing Qinheng Microelectronics)USB ConvertersESP32-WROOM-32E
SMD,18x25.5mmSMD,18x25.5mm WiFi Modules ROHSEspressif SystemsWiFi ModulesDRV8833PWP
ETSSOP-16-EP-40℃~+85℃ 1.5A 2 2.7V~10.8V 2.7V~10.8V 360mΩ Bipolar Driver Overcurrent Protection、Short-Circuit Protection、Over temperature protection、Under-voltage lockout、Dead-time / shoot-through protection Yes ETSSOP-16-EP Stepper Motor Driver ROHSTexas InstrumentsStepper Motor DriverCH224K
ESSOP-10-150mil-1mm-40℃~+90℃ 100W 4V~30V 5V、9V、12V、15V、20V Overvoltage Protection、Thermal Protection PD 3.0 Power Receiver Controller ESSOP-10-150mil-1mm USB PD ROHSWCH (Nanjing Qinheng Microelectronics)USB ConvertersINA219AID
SOIC-8-40℃~+125℃ 0.1uV/℃ 0V~26V 1 10uV 120dB 20nA 3V~5.5V 700uA Bidirectional detection、Zero drift / auto-zero、Input filter、Power monitoring、Digital output interface ±26V SOIC-8 Current Sense Amplifiers ROHSTexas InstrumentsCurrent Sense AmplifiersME6211C33M5G-N
SOT-23-5-40℃~+150℃ 1 120mV@(100mA) 3.3V 500mA 50uVrms 60uA 6V 70dB@(1kHz) Fixed Over Current Protection、Enable、Short Circuit Protection Positive SOT-23-5 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSMICRONEVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsME6211C50M5G-N
SOT-23-5-40℃~+150℃@(Tj) 1 100mV@(100mA)、200mV@(200mA) 30uA 500mA 50uVrms 5V 6V 70dB@(1kHz) Enable、Short Circuit Protection Fixed Positive SOT-23-5 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSMICRONEVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsMMBT2222A
SOT-23-55℃~+150℃ 1 NPN 100 100nA 1V 300MHz 300mW 40V 600mA 6V NPN Standalone SOT-23 Bipolar (BJT) ROHShongjiachengBipolar (BJT)SS24
SMA(DO-214AC)-55℃~+150℃ 200uA@40V 2A 40V 50A 550mV@2A Independent SMA(DO-214AC) Schottky Diodes ROHShongjiachengSchottky DiodesWS2812
SMD5050-4P1.57mm 1000mcd 110mcd 120us 2kHz 3.7V~5.3V 300ns 320mcd 451nm 523nm 5mm 5mm 623nm 800Kbit/s Built-in power-on reset circuit、Built-in power-on reset circuit Top-mount SMD5050-4P RGB LEDs(Built-in IC) ROHSWorldsemiRGB LEDs(Built-In IC)
README
README.mdOmniDrive
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.
Full schematic — click image or open PDF
PCB top copper layer — open PDF
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
| Function | Component |
|---|---|
| MCU | ESP32-WROOM-32E |
| Motor drivers | 2× DRV8833 (HTSSOP-16 with thermal pad) |
| USB-C PD | CH224K sink, negotiates 9V |
| Current sense | INA219, 0.1Ω shunt, I2C |
| USB-UART | CH340C with auto DTR/RTS |
| Logic power | ME6211C50 (5V), ME6211C33 (3.3V) |
| Breakout | 12 GPIO through 2x 3x2 header, Power through 1x 3x1 header |
| PCB | 2-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/
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 + PCBParts
79| Qty | Value | Footprint | References |
|---|---|---|---|
| 16 | 0.1u | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C2, C4, C6, C8, C15, C20, C21, C23, C24, C26, C28, C29, C30, C31, C32, C33 |
| 5 | 10u | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C1, C5, C7, C22, C25 |
| 5 | BridgedJumper | Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm | JP5, JP6, JP7, JP8, JP10 |
| 4 | 10k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R7, R8, R9, R10 |
| 4 | 4.7k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R11, R13, R14, R15 |
| 4 | MountingHole_2.2mm_M2_Pad_Via | MountingHole:MountingHole_2.2mm_M2_Pad_Via | HoleA, HoleB, HoleC, HoleD |
| 3 | 1k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R2, R3, R4 |
| 3 | Conf | Jumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mm | JP2, JP3, JP9 |
| 2 | 0.01u | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C16, C18 |
| 2 | 0.1R | Resistor_SMD:R_2512_6332Metric_Pad1.40x3.35mm_HandSolder | R5, R6 |
| 2 | 2.2u | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C17, C19 |
| 2 | Conn_02x03_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Vertical | J8, J11 |
| 2 | DRV8833PWP | Package_SO:HTSSOP-16-1EP_4.4x5mm_P0.65mm_EP3.4x5mm_Mask2.46x2.31mm_ThermalVias | U3, U7 |
| 2 | MMBT2222A | Package_TO_SOT_SMD:SOT-23 | Q1, Q2 |
| 2 | RED | LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder | D3, D4 |
| 2 | SW_Push | Button_Switch_SMD:SW_Push_1P1T_NO_E-Switch_TL3301NxxxxxG | SW1, SW2 |
| 1 | 1u | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C3 |
| 1 | 22u | Inductor_SMD:L_Changjiang_FXL0630 | L1 |
| 1 | 6.8k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1 |
| 1 | Battery | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J2 |
| 1 | CH224K | Package_SO:SSOP-10-1EP_3.9x4.9mm_P1mm_EP2.1x3.3mm | U4 |
| 1 | CH340C | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | U1 |
| 1 | Conn_01x03 | Connector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_Vertical | J5 |
| 1 | Conn_01x08 | Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_Vertical | J4 |
| 1 | ESP32-WROOM-32E | RF_Module:ESP32-WROOM-32E | U8 |
| 1 | GREEN | LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder | D5 |
| 1 | INA219A | Package_TO_SOT_SMD:SOT-23-8 | U5 |
| 1 | ME6211C33M5 | Package_TO_SOT_SMD:SOT-23-5 | U9 |
| 1 | ME6211C50M5 | Package_TO_SOT_SMD:SOT-23-5 | U10 |
| 1 | OnLed | Jumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm | JP1 |
| 1 | SS24 | Diode_SMD:D_SMA | D1 |
| 1 | Switch | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J3 |
| 1 | USB_C | Connector_USB:USB_C_Receptacle_HCTL_HC-TYPE-C-16P-01A | J1 |
| 1 | WS2812 | LED_SMD:LED_WS2812_PLCC6_5.0x5.0mm_P1.6mm | D6 |
| 1 | ~ | Package_DFN_QFN:NXP_VQFN-16-1EP_4x4mm_P0.65mm_EP2.1x2.1mm | U2 |
Similar boards
- 2 layers73.5 × 37.5 mm

- 2 layers150 × 70 mm

- 2 layers58 × 48 mm

- 2 layers82 × 60 mm

- 2 layers77.3 × 55.5 mm

- 2 layers76.2 × 50.8 mm

- 4 layers25 × 12.5 mm

- 2 layers188.5 × 167.3 mm

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).