← All projects in the gallery
Coolant Gauge
by jonathan harrocks
A coolant temperature gauge for a 240 x 240 round panel, fed from the diagnostic socket. The ESP32 has the CAN controller built in, so the only extra part is a transceiver.
The needle is a picture that a Scale turns about a pivot inside it, under a hub cap that is a second picture and does not turn - it is lit from one side, and a highlight that went round with the needle would give it away. The cold and hot ends are sections of the scale, so the red line is a setting: move it and the ticks and numbers under it change colour with it.
It reads PID 05, which every car with OBD-II over CAN reports. The device shows each value with its code, and takes signals of your own - another PID, or bytes of a frame the bus carries - for anything else the car has.
With no car attached it says NO ECU and the needle rests at cold.
About this design
Coolant Gauge is an LVGL interface for the ESP32-S3 + GC9A01 1.28" round (GC9A01 / GC9A01A 240 x 240, CST816S touch), with 1 screen and 6 widgets, made for Arduino (C++) on LVGL 9.
Screens
- Coolant
Hardware and build
- Board
- ESP32-S3 + GC9A01 1.28" round
- MCU
- ESP32-S3
- Display
- GC9A01 / GC9A01A
- Resolution
- 240 x 240
- Touch
- CST816S
- Graphics library
- GFX Library for Arduino
- LVGL
- v9
- Exports to
- Arduino (C++)
- Peripherals
- CAN bus / OBD-II (car diagnostics)
- Libraries
- lvgl, GFX Library for Arduino, TWAI driver (bundled with the core)
Notes from the author
Engine temperature on a round panel, read from the car over CAN: a real needle on a real scale.
Using it
Open a copy in the designer and it is yours to edit: restyle the screens, move it to another board, and export the Arduino (C++) project. Designing is free, and a copy needs no account. Open the designer.
Every pin of the ESP32-S3 + GC9A01 1.28" round, and the preset this design starts from: ESP32-S3 + GC9A01 1.28" round pinout and LVGL designer.