Single 2-layer PCB with dual Feather ESP32s for the Carputer project. Designed for OBD1 vehicles (pre-1996, all makes) — taps into sensor voltages, switch signals, and diagnostic pins directly. No CAN bus required. CAN/OBD2 is an easy add — just a firmware update and an external CAN module (e.g. MCP2515 via SPI).
| Feature | Description |
|---|---|
| Board | 160×120mm, 2-layer FR-4, through-hole assembly |
| MCUs | 2× ESP32 DevKit V1 (sensor + body controller) |
| Power | 12V automotive → DC-DC buck → 3.3V rail |
| Relay drivers | 2× ULN2003A (DIP-16), 7 darlington pairs each |
| Connectors | 3× WAGO 8-way for vehicle harness, 2-way for power |
| Slot | Module | Role | IP | Protocol |
|---|---|---|---|---|
| J5 | Sensor ESP32 | ECU tapping, door switches, DTC | 192.168.4.20 (STA) | UDP 5001/5002/5003 |
| J6 | Body ESP32 | Relays, HVAC, joypad | 192.168.4.1 (AP) | TCP 5000 |
- 6 voltage dividers (5.6K + 10K) — scale 0-5V ECU signals (MAP, coolant temp, TPS, speed, RPM, DTC) to ESP32 3.3V ADC
- 2 sender pullups (120Ω to 3.3V) — fuel level, oil pressure
- 4 digital inputs with 10K series resistors — door switches (D/P/T/H)
- DTC read circuit — 2× 2N2222 transistors for TE1/TE2 control
| ULN2003A #1 | ULN2003A #2 |
|---|---|
| Door lock (GPIO 25) | HVAC relay (GPIO 2) |
| Window up (GPIO 26) | AC compressor (GPIO 4) |
| Window down (GPIO 27) | Remote start (GPIO 5) |
| Interior light (GPIO 32) | Fan speed 2 (GPIO 12) |
| Door chime (GPIO 33) | Fan speed 1 (GPIO 18) |
- 2× ADC channels (GPIO 36/Y, 39/X) — analog joystick
- 5× digital buttons (GPIO 14, 16, 17, 22, 23) — SELECT, EXIT, etc.
| File | Description |
|---|---|
sensormodule final.kicad_pro |
KiCad project |
sensormodule final.kicad_sch |
Schematic |
sensormodule final.kicad_pcb |
PCB layout |
PCB_PLAN.md |
Full design plan |
build_plan.md |
THT assembly build plan |
product_description.md |
Product overview |
voltage_divider_circuit.txt |
ECU voltage divider circuit & wiring |
carputerpcb.png |
PCB render preview |
*-Cu.gbr, *-Mask.gbr, *-Silkscreen.gbr |
Gerber files for fabrication |
esp32_sensor_module_bom.csv |
Bill of Materials |
Sample-BOM_JLCSMT.xlsx |
JLC SMT assembly BOM |
generate_pcb.py |
Python PCB generation toolkit |
Send Gerber files (sensormodule final-*.gbr + *job.gbrjob) to any PCB fab (JLCPCB, PCBWay, etc.). Board is 2-layer, 160×120mm.
See voltage_divider_circuit.txt for ECU wiring diagram. Connectors use WAGO 8-way terminal blocks for vehicle harness interface.
This PCB integrates two ESP32 modules that communicate with the head unit software:
| Component | Firmware Repo | Connects To | Protocol |
|---|---|---|---|
| J5 — Sensor ESP32 | esp32_sensor_module | Carputer head unit | UDP 5001 (sensor data), 5002 (commands), 5003 (DTC) |
| J6 — Body ESP32 | esp32_body_controller | Carputer head unit | TCP 5000 (relay/audio commands) |
The head unit can be either:
- carputer — Qt5/QML dashboard running on a Linux SBC
- carputerandroid — Android companion app
