Skip to the content
PCBKitNew board
4 layers128.4 × 70.8 mmVCU3.0, the printed circuit board in 3D

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

12

README

README.md

E-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

ComponentDetails
MCUESP32-S3 @ 240 MHz (dual-core)
CAN1MCP2515 SPI, 500 kbps — Motor inverter (DMC) & charger (NLG5)
CAN2ESP32 TWAI, 250 kbps — Battery management system (BMS)
DisplayNextion HMI (UART)
I/O ExpanderMCP23017 (I2C)
ADCADS1115 — throttle, regen pedal
Battery104S LiPo, ~385 V nominal, 16 Ah
MotorConfigured for 250 Nm fwd / 100 Nm regen / 60 Nm reverse

Battery — Racepow RP-SSB-1174170

ParameterValue
ModelRacepow RP-SSB-1174170
Configuration104S 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)
Capacity16 Ah ~7 kWh
Charge Current8 A (0.5C)
Continuous Discharge400 A (25C)
Max Discharge480 A (30C)
Charge Temp0 °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 ingestion
  • CANTx (P23) — Motor torque commands at 10–50 ms
  • VehicleControl (P22) — Throttle/regen → torque demand
  • StateManager (P21) — State machine (Sleep → Init → Ready → Drive/Charging)
  • SafetyMonitor (P20) — Temperature, voltage, interlock watchdog

Core 1 — UI / networking

  • InputManager (P10) — Buttons, switches, ADC reads
  • DisplayManager (P5) — Nextion HMI updates
  • WiFiManager (P4) — AP mode + optional STA
  • WebServer (P3) — HTTP REST + WebSocket telemetry (50 ms)
  • TaskMonitor (P2) — Per-task watchdog & auto-restart
  • LEDControl (P3) — Status LED patterns
  • ErrorAggregator (P4) — Cross-subsystem error collection

Vehicle State Machine

text
SLEEP ──(start/charger)──> INIT ──(precharge ok)──> READY
                                                      │
                                          ┌──────────┴──────────┐
                                        DRIVE              CHARGING

WiFi & 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.

bash
# Build
pio run

# Flash
pio run --target upload

# Monitor serial
pio device monitor

OTA updates are also supported via the web interface at http://10.1.109.191.

Project Structure

text
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 reference

Safety 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

VersionDateNotes
v1.0.02026-03-31Initial release — dual-CAN VCU, FreeRTOS multi-task, WiFi telemetry, Nextion display, deep sleep, OTA

Parts

109
QtyValueFootprintReferences
227.5kfootprint:R0603R404, R405, R406, R407, R408, R601, R603, R605, R607, R609, R611, R613, R615, R617, R618, R619 +6
132.7kfootprint:R0603R411, R412, R413, R414, R415, R602, R604, R606, R608, R610, R612, R614, R616
10100nFfootprint:C0603C202, C206, C208, C212, C303, C304, C305, C401, C404, C601
910kfootprint:R0603R201, R206, R207, R209, R301, R304, R305, R306, R401
4210kfootprint:R0603R202, R208, R211, R402
422uFfootprint:CAP-SMD_L7.3-W4.3-L-FDC204, C205, C210, C211
4MountingHoleMountingHole:MountingHole_3.2mm_M3_DIN965H601, H602, H603, H604
32.2kfootprint:R0603R205, R302, R303
330kfootprint:R0603R204, R210, R212
210pFfootprint:C0603C203, C209
210uFfootprint:C0805C201, C207
222pFfootprint:C0603C402, C403
25.1kfootprint:R0603R307, R308
2BC817footprint:SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BRU302, U304
2BTS716GBfootprint:SOIC127P1030X265-20NIC602, IC603
2HX-6X6X7_3-TP_FT_SQUARE_BUTTONtest:SW-SMD_4P-L6.0-W6.0-P4.50-LS9.0-H7.3U607, U608
2TC4429COAfootprint:SOIC-8_L4.9-W3.9-P1.27-LS6.0-BLU601, U602
2TPS564257DRLRfootprint:SOT-563-6_L1.6-W1.2-P0.5-LS1.6-BRU201, U202
110footprint:R0603R403
11uFfootprint:C0805C301
122uFfootprint:CAP-SMD_BD4.0-L4.3-W4.3-LS5.1-FDC302
12x3footprint:HDR-TH_6P-P2.54-V-M-R2-C3-S2.54-1H302
13.3uHfootprint:IND-SMD_L7.3-W6.6L201
143kfootprint:R0603R203
1776087-1test:CONN-TH_776087-1U606
1776163-1test:CONN-TH_776163-1U605
1ADS1015IDGSTfootprint:VSSOP-10_L3.0-W3.0-P0.50-LS4.9-BLU403
1CP2102N-A02-GQFN28Rfootprint:QFN-28_L5.0-W5.0-P0.50-TL-EP3.3U303
1D-SUB-DR-9PCM-CBfootprint:DB9-TH_D-SUB-DR-9PCM-CBU507
1ESP32-S3-WROOM-1(N8R2)footprint:WIRELM-SMD_ESP32-S3-WROOM-1U301
1K3A160002010footprint:CRYSTAL-SMD_4P-L3.2-W2.5-BLX401
1MCP23017-E/SSfootprint:SSOP-28_L10.2-W5.3-P0.65-LS7.8-BLU604
1MCP2515-I/STfootprint:TSSOP-20_L6.5-W4.4-P0.65-LS6.4-BLU402
1MCP2551-I/SNfootprint:SOIC-8_L4.9-W3.9-P1.27-LS6.0-BLU401
1SLO0530H4R7MTTfootprint:IND-SMD_L5.4-W5.2U203
1VBQA4317footprint:PDFN-8_L5.9-W5.2-P1.27-LS6.2-BL-1U603
1YTC-TC16S-24footprint:USB-C-SMD_YTC-TC16S-24U305

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 mmVCU2.0, the printed circuit board in 3D

    VCU2.0

    milutintech/LADA

    VCU for Lada Niva

    94 parts1
  • 4 layers70 × 35 mmTempWatchtV1, the printed circuit board in 3D

    TempWatchtV1

    steiger-systems/TempWatch

    65 parts
  • 2 layers97 × 79 mmBciChess boardControlShield, the printed circuit board in 3D

    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 mmUniversal can board, the printed circuit board in 3D

    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 layers59.2 × 89.4 mmCAN Relay, the printed circuit board in 3D

    CAN Relay

    MST-Solar-Car-Team/Can-Relay-Board

    28 partsMIT
  • 4 layers70.2 × 71 mmC3-27-epaper touch, the printed circuit board in 3D

    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 mmESP-32 Design Görkem Güven, the printed circuit board in 3D

    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