

VCU3.0
Vehicle Control Unit (VCU) firmware for an electric go-kart, built on ESP32-S3 with FreeRTOS. Manages motor control, battery management, charging, telemetry, and safety systems over dual CAN buses.
- Size
- 128.4 × 70.8 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 109
- Nets
- 161
- Pads
- 505
- Tracks, vias
- 1,186, 166
- Pours
- 14
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 17 Oct 2025
- Updated
- 14 Oct 2026
Overview
VCU3.0 is an open-source printed circuit board by Obili69, from the Obili69/E-GoCart repository on GitHub. It is a 4-layer board of 128.4 × 70.8 mm with 109 parts on 161 nets, routed with 1,186 tracks and 166 vias.
It is built around the MCP2551-I/SN, TC4429COA and CP2102N-A02-GQFN28R, with the BC817, BTS716GB and D-SUB-DR-9PCM-CB among its other parts. Its parts include 58 resistors, 22 capacitors, 22 ICs, 1 inductor and 1 crystal. It belongs with the ESP32 boards of this library.
Main components
12MCP2551-I/SN
SOIC-8-40℃~+85℃ 1Mbps 365uA 4.5V~5.5V 75mA CAN Transceiver SOIC-8 CAN Transceivers ROHSMicrochip TechnologyCAN TransceiversTC4429COA
SOIC-80℃~+150℃ 1 25ns 25ns 4.5V~18V 450uA 6A 6A MOSFET SOIC-8 Gate Drivers ROHSMicrochip TechnologyGate DriversCP2102N-A02-GQFN28R
QFN-28-EP(5x5)-40℃~+85℃@(Ta) 1.3uA 3V~3.6V 9.5mA USB 2.0 USB to UART QFN-28-EP(5x5) USB Converters ROHSSilicon LabsUSB ConvertersBC817
SOT-231 NPN 100nA 150MHz 300mW 40 45V 500mA 5V 700mV NPN SOT-23 Bipolar (BJT) ROHSShikuesBipolar (BJT)BTS716GB
DSO-20DSO-20 Power Distribution Switches ROHSInfineon TechnologiesPower Distribution SwitchesD-SUB-DR-9PCM-CB
弯插-50℃~+105℃ 2 3A 9P Black Female Right Angle 弯插 D-Sub / VGA Connectors ROHSXUNPUD-Sub / VGA ConnectorsMCP23017-E/SS
SSOP-28(5.3x10.2x0.65)-40℃~+125℃ 1.7MHz 1.8V~5.5V 16 1uA 600mV 8 8mA I2C Interrupt Output Reset function、Cascading and address extension SSOP-28 I/O Expanders ROHSMicrochip TechnologyI/O ExpandersMCP2515-I/ST
TSSOP-20-40℃~+85℃ 1Mbps 1uA 2.7V~5.5V 5mA CAN Controller SPI TSSOP-20 CAN Controllers ROHSMicrochip TechnologyCAN ControllersSLO0530H4R7MTT
SMD,5.4x5.2mm4.5A 4.7uH 46mΩ 4A Molded Inductor ±20% SMD,5.4x5.2mm Molding Power Inductors ROHSSunltechPower InductorsVBQA4317
DFN5x6-8MOSFETsVBsemi ElecYTC-TC16S-24
SMD-20℃~+85℃ 1 16P 3A、5A 5,000 times、10,000 cycles 5V 7.3mm Female Surface Mount, Right Angle Type-C SMD USB Connectors ROHSYIYUANUSB ConnectorsK3A160002010
SMD3225-4P-40℃~+85℃ 16MHz 20pF 60Ω Crystal Oscillator ±10ppm ±20ppm SMD3225-4P Crystals ROHSKYXCrystals
README
README.mdE-GoCart VCU Firmware
Vehicle Control Unit (VCU) firmware for an electric go-kart, built on ESP32-S3 with FreeRTOS. Manages motor control, battery management, charging, telemetry, and safety systems over dual CAN buses.
Hardware
| Component | Details |
|---|---|
| MCU | ESP32-S3 @ 240 MHz (dual-core) |
| CAN1 | MCP2515 SPI, 500 kbps — Motor inverter (DMC) & charger (NLG5) |
| CAN2 | ESP32 TWAI, 250 kbps — Battery management system (BMS) |
| Display | Nextion HMI (UART) |
| I/O Expander | MCP23017 (I2C) |
| ADC | ADS1115 — throttle, regen pedal |
| Battery | 104S LiPo, ~385 V nominal, 16 Ah |
| Motor | Configured for 250 Nm fwd / 100 Nm regen / 60 Nm reverse |
Battery — Racepow RP-SSB-1174170
| Parameter | Value |
|---|---|
| Model | Racepow RP-SSB-1174170 |
| Configuration | 104S LiPo (7× 14S + 1× 6S in series) |
| Nominal Voltage | ~385 V system (104 × 3.7 V) |
| Charge Cut-off | ~436.8 V (104 × 4.2 V) |
| Discharge Cut-off | ~312 V (104 × 3.0 V) |
| Capacity | 16 Ah ~7 kWh |
| Charge Current | 8 A (0.5C) |
| Continuous Discharge | 400 A (25C) |
| Max Discharge | 480 A (30C) |
| Charge Temp | 0 °C – 45 °C |
| Discharge Temp | −20 °C – 55 °C |
| Storage Temp | −20 °C – 35 °C (alle 3 Monate nachladen) |
Software Architecture
12+ FreeRTOS tasks split across two cores:
Core 0 — Real-time / safety-critical
CANRx(P24) — CAN message ingestionCANTx(P23) — Motor torque commands at 10–50 msVehicleControl(P22) — Throttle/regen → torque demandStateManager(P21) — State machine (Sleep → Init → Ready → Drive/Charging)SafetyMonitor(P20) — Temperature, voltage, interlock watchdog
Core 1 — UI / networking
InputManager(P10) — Buttons, switches, ADC readsDisplayManager(P5) — Nextion HMI updatesWiFiManager(P4) — AP mode + optional STAWebServer(P3) — HTTP REST + WebSocket telemetry (50 ms)TaskMonitor(P2) — Per-task watchdog & auto-restartLEDControl(P3) — Status LED patternsErrorAggregator(P4) — Cross-subsystem error collection
Vehicle State Machine
SLEEP ──(start/charger)──> INIT ──(precharge ok)──> READY
│
┌──────────┴──────────┐
DRIVE CHARGINGWiFi & Web Interface
- SSID:
E-GoCart-VCU| Password:egocart123 - IP:
10.1.109.191 - Real-time WebSocket telemetry: speed, power, SOC, temps, errors
- OTA firmware update endpoint
- JSON configuration API
Building & Flashing
Requires PlatformIO.
# Build
pio run
# Flash
pio run --target upload
# Monitor serial
pio device monitorOTA updates are also supported via the web interface at http://10.1.109.191.
Project Structure
E-GoCart/
├── src/main.cpp # Main firmware entry point & all FreeRTOS tasks
├── include/
│ ├── config.h # Pin map, CAN IDs, safety limits, tuning params
│ ├── data_structures.h # Shared state structs
│ ├── can_manager.h # Dual CAN bus abstraction
│ ├── bms_manager.h # Battery management
│ ├── nlg5_manager.h # NLG5 onboard charger
│ ├── vehicle_control.h # Torque calculation
│ ├── state_manager.h # State machine
│ ├── contactor_manager.h
│ ├── display_manager.h
│ ├── input_manager.h
│ ├── wifi_manager.h
│ ├── web_server.h
│ └── task_monitor.h
├── data/www/ # Web UI static files (LittleFS)
├── platformio.ini # Build configuration
└── PinOut.csv # GPIO pin referenceSafety Features
- Emergency interlock kill (hardware switch)
- Motor/inverter/battery overtemperature shutdown
- BMS communication loss → immediate torque cut
- Precharge sequencing before main contactor closure
- Current verification before contactor switching
- Per-task watchdogs with auto-restart
Releases
| Version | Date | Notes |
|---|---|---|
| v1.0.0 | 2026-03-31 | Initial release — dual-CAN VCU, FreeRTOS multi-task, WiFi telemetry, Nextion display, deep sleep, OTA |
Parts
109| Qty | Value | Footprint | References |
|---|---|---|---|
| 22 | 7.5k | footprint:R0603 | R404, R405, R406, R407, R408, R601, R603, R605, R607, R609, R611, R613, R615, R617, R618, R619 +6 |
| 13 | 2.7k | footprint:R0603 | R411, R412, R413, R414, R415, R602, R604, R606, R608, R610, R612, R614, R616 |
| 10 | 100nF | footprint:C0603 | C202, C206, C208, C212, C303, C304, C305, C401, C404, C601 |
| 9 | 10k | footprint:R0603 | R201, R206, R207, R209, R301, R304, R305, R306, R401 |
| 4 | 210k | footprint:R0603 | R202, R208, R211, R402 |
| 4 | 22uF | footprint:CAP-SMD_L7.3-W4.3-L-FD | C204, C205, C210, C211 |
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3_DIN965 | H601, H602, H603, H604 |
| 3 | 2.2k | footprint:R0603 | R205, R302, R303 |
| 3 | 30k | footprint:R0603 | R204, R210, R212 |
| 2 | 10pF | footprint:C0603 | C203, C209 |
| 2 | 10uF | footprint:C0805 | C201, C207 |
| 2 | 22pF | footprint:C0603 | C402, C403 |
| 2 | 5.1k | footprint:R0603 | R307, R308 |
| 2 | BC817 | footprint:SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BR | U302, U304 |
| 2 | BTS716GB | footprint:SOIC127P1030X265-20N | IC602, IC603 |
| 2 | HX-6X6X7_3-TP_FT_SQUARE_BUTTON | test:SW-SMD_4P-L6.0-W6.0-P4.50-LS9.0-H7.3 | U607, U608 |
| 2 | TC4429COA | footprint:SOIC-8_L4.9-W3.9-P1.27-LS6.0-BL | U601, U602 |
| 2 | TPS564257DRLR | footprint:SOT-563-6_L1.6-W1.2-P0.5-LS1.6-BR | U201, U202 |
| 1 | 10 | footprint:R0603 | R403 |
| 1 | 1uF | footprint:C0805 | C301 |
| 1 | 22uF | footprint:CAP-SMD_BD4.0-L4.3-W4.3-LS5.1-FD | C302 |
| 1 | 2x3 | footprint:HDR-TH_6P-P2.54-V-M-R2-C3-S2.54-1 | H302 |
| 1 | 3.3uH | footprint:IND-SMD_L7.3-W6.6 | L201 |
| 1 | 43k | footprint:R0603 | R203 |
| 1 | 776087-1 | test:CONN-TH_776087-1 | U606 |
| 1 | 776163-1 | test:CONN-TH_776163-1 | U605 |
| 1 | ADS1015IDGST | footprint:VSSOP-10_L3.0-W3.0-P0.50-LS4.9-BL | U403 |
| 1 | CP2102N-A02-GQFN28R | footprint:QFN-28_L5.0-W5.0-P0.50-TL-EP3.3 | U303 |
| 1 | D-SUB-DR-9PCM-CB | footprint:DB9-TH_D-SUB-DR-9PCM-CB | U507 |
| 1 | ESP32-S3-WROOM-1(N8R2) | footprint:WIRELM-SMD_ESP32-S3-WROOM-1 | U301 |
| 1 | K3A160002010 | footprint:CRYSTAL-SMD_4P-L3.2-W2.5-BL | X401 |
| 1 | MCP23017-E/SS | footprint:SSOP-28_L10.2-W5.3-P0.65-LS7.8-BL | U604 |
| 1 | MCP2515-I/ST | footprint:TSSOP-20_L6.5-W4.4-P0.65-LS6.4-BL | U402 |
| 1 | MCP2551-I/SN | footprint:SOIC-8_L4.9-W3.9-P1.27-LS6.0-BL | U401 |
| 1 | SLO0530H4R7MTT | footprint:IND-SMD_L5.4-W5.2 | U203 |
| 1 | VBQA4317 | footprint:PDFN-8_L5.9-W5.2-P1.27-LS6.2-BL-1 | U603 |
| 1 | YTC-TC16S-24 | footprint:USB-C-SMD_YTC-TC16S-24 | U305 |
Questions
How big is the VCU3.0 PCB?
It measures 128.4 × 70.8 mm and has 4 copper layers, 1.6 mm thick.
What parts does the VCU3.0 use?
109 parts, built around the MCP2551-I/SN, TC4429COA, CP2102N-A02-GQFN28R and BC817. 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 VCU3.0 KiCad files?
From the Obili69/E-GoCart repository on GitHub, at the commit this page was made from: the board is VCU3.0/VCU3.0.kicad_pcb and its schematic BMS pcbs/Untitled/Untitled.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the VCU3.0 design in my own project?
Its repository states no licence, so its author keeps all rights: ask Obili69 before reusing the design.
Similar boards
- 4 layers137.2 × 61.6 mm

- 4 layers70 × 35 mm

- 2 layers97 × 79 mm

BciChess boardControlShield
allita99/8x8-LED-Matrix-Control-Circuit
KiCad design files and Gerber outputs for an 8×8 LED matrix controller capable of driving 64 LEDs at 15 V.
72 parts - 2 layers49.5 × 111.8 mm

Universal can board
franc0r/universal_can_board
Contains schematic, pcb layout and software of the francor's universal can board.
70 partsBSD-3-Clause - 2 layers157 × 58.5 mm

- 2 layers59.2 × 89.4 mm

- 4 layers70.2 × 71 mm

C3-27-epaper touch
martinberlin/bistable-smart-switch
An epaper switch project with 2 PCBs, controller+touch, and 220AC to 3DC with Relay (Latch or solid-state)
64 parts32Apache-2.0 - 4 layers102.9 × 43.7 mm

ESP-32 Design Görkem Güven
gorkemguven/ESP32-S3-4Layer-CoreBoard
High-performance 4-layer core board design based on the ESP32-S3 SoC, featuring impedance-controlled USB differential pairs and optimized power distribution.
105 partsGPL-3.0