GitHub: Carputer-project/esp32_cluster
5-screen instrument cluster display using ESP32 + 3.5" ILI9488 SPI TFT. Receives sensor data from the sensor module and media/trip data from the carputer app via UDP.
| Component | Cost |
|---|---|
| ESP32 DevKit | ~$5 |
| 3.5" ILI9488 SPI TFT (480×320) | ~$8-12 |
| Momentary push button (GPIO 12) | ~$0.50 |
| Total | ~$14-18 |
| Screen | Content |
|---|---|
| GAUGES | RPM arc, speed (km/h), gear badge, fuel/temp/battery/oil bars, door indicators |
| MEDIA | Title, artist, album, volume, playback position/duration |
| TRIP | Distance, avg speed, fuel used, instant MPG, trip time |
| OBD2 | 9-field live data grid + DTC distance countdown |
| INFO | IP address, uptime, RSSI, connection status, firmware version |
Press button on GPIO 12 to cycle through screens (auto-cycles every 5s in demo mode).
Connects to Carputer_ECU WiFi AP. Receives two UDP streams:
| Port | Source | Data |
|---|---|---|
| 5001 | Sensor module (broadcast) | Coolant, oil, ambient, intake, doors, OBD2, RPM, speed, fuel, battery, TPS, MAP, AFR |
| 5006 | Carputer app (broadcast) | Media (title/artist/album/playing/volume/position/duration) + trip (distance/avgSpeed/fuelUsed/instantMpg/tripTime/running) |
cd esp32_cluster
pio run # Build
pio run --target upload # FlashEdit platformio.ini to set:
WIFI_SSID/WIFI_PASS— WiFi credentials (default: Carputer_ECU)- TFT pin assignments in
build_flags(TFT_eSPI configuration)
- TFT_eSPI — ILI9488 SPI driver (configured via build_flags)
- ArduinoJson — JSON parsing (v7)
- ESP32 Arduino core
| ESP32 Pin | TFT Pin | Function |
|---|---|---|
| GPIO 5 | CS | Chip select |
| GPIO 18 | SCK | SPI clock |
| GPIO 23 | SDA/MOSI | SPI data |
| GPIO 2 | DC | Data/Command |
| GPIO 15 | RST | Reset |
| GPIO 4 | BL | Backlight |
| GPIO 12 | Button | Screen cycle (INPUT_PULLUP) |