Instead of one big screen pretending to be a dashboard, each gauge is its own round LCD with its own ESP32 brain. They look and feel like analogue gauges, but they're fully digital, configurable, and dirt cheap to add.
A hidden Master ECU reads all the car sensors (RPM, speed, temp, fuel, oil pressure) and broadcasts them on an RS-485 bus at 30 Hz. Each gauge is daisy-chained on standard RJ45 Ethernet cable — power and data in one cable. Gauges render their own dial face, needle, and theme locally; the wire only carries live signal data.
Car sensors
│
▼
┌──────────────┐
│ Master ECU │ 12V · reads ADC/PCNT/GPIO
└──────┬───────┘
│ RS-485 @ 30 Hz
│ (broadcast)
▼
┌───────┐ ┌───────┐ ┌───────┐
│ RPM │──▶│ Speed │──▶│ Temp │
│ 4" │ │ 4" │ │ 2.8" │
└───────┘ └───────┘ └───────┘
daisy-chain on RJ45 (power + data)
Firmware, simulator, and config tool are all running today.
C / ESP-IDF + LVGL. Loads config from flash, renders dial face + rotating needle + text, self-test sweep on startup, watchdog for lost connection.
Reads ADS1115 ADC (temperature, fuel), PCNT frequency counter (RPM, speed), GPIO digital inputs (oil, warning). Broadcasts at 30 Hz.
Python / Pygame. Full master + gauges running on a Windows PC over UDP. Sliders, presets, auto demo drive — no hardware needed.
Windows GUI for vehicle setup, gauge assignment, custom logos, theme picker, full export/import of configs.
All Waveshare parts, mostly off the shelf.
| Component | Role | Approx price |
|---|---|---|
| Waveshare ESP32-P4 4" round LCD | Main gauge (720×720, touch) | ~$75 each |
| Waveshare ESP32-S3 2.8" round LCD | Smaller gauges (480×480) | ~$22–25 each |
| Waveshare ESP32-S3-RS485-CAN | Master ECU brain | ~$18 |
| ADS1115 ADC | Analogue sensor input | ~$4 |
| RJ45 breakout boards | Per-gauge daisy-chain | ~$2 each |