Skip to the content
2 layers27.7 × 43.7 mmDaughter board, the printed circuit board in 3D

OpenGauge is an ESP32-S3 vehicle display. It reads OBD-II data over CAN, reads supported analogue sensors, and shows live information on a 240 x 240 round LCD. Touch gestures change the active gauge screen.

Size
27.7 × 43.7 mm
Copper layers
2
Thickness
1.6 mm
Parts
29
Nets
21
Pads
87
Tracks, vias
108, 16
Pours
5
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
18 May 2026
Updated
11 Oct 2026

Overview

Daughter board is an open-source printed circuit board by AngusClayton, from the AngusClayton/OpenGauge repository on GitHub. It is a 2-layer board of 27.7 × 43.7 mm with 29 parts on 21 nets, routed with 108 tracks and 16 vias.

It is built around the TJA1051T/3/1 and L7805. Its parts include 10 capacitors, 10 resistors, 6 connectors, 2 ICs and 1 diode.

Main components

2

README

README.md

OpenGauge

OpenGauge is an ESP32-S3 vehicle display. It reads OBD-II data over CAN, reads supported analogue sensors, and shows live information on a 240 x 240 round LCD. Touch gestures change the active gauge screen.

The project is for builders who want to adapt the display, sensor inputs, and gauge layouts to their own vehicle.

[!WARNING] This project is experimental vehicle electronics. Use suitable fuses, power protection, and CAN wiring. Do not use the display as the only source of vehicle safety information. Work on a stationary vehicle when you test it.

Current features

  • OBD-II polling over the ESP32 TWAI CAN controller.
  • Standard gauges for boost, airflow, AFR, and ignition timing.
  • A shift-light screen with gear, RPM, and speed.
  • An automatic 0-100 km/h timer that uses OBD speed.
  • A G-meter with a five-second dot trail and signed peak readings.
  • Analogue sensor inputs with linear calibration.
  • Swipe navigation on the integrated touch display.
  • Native and browser-WASM previews that run the production C++ renderer.
  • A temporary WPA2 configuration hotspot with live save and apply.

Hardware status

The firmware targets a Waveshare ESP32-S3 1.28-inch touch LCD. The repository includes KiCad daughter-board files, fabrication outputs, enclosure models, connector pinouts, and a prototype bill of materials. See Hardware, BOM, and CAD files.

Quick start with VS Code

  1. Install Visual Studio Code.
  2. Install the PlatformIO IDE extension.
  3. Clone this repository and open its root folder in Visual Studio Code.
  4. Open platformio.ini. Set upload_port and monitor_port if automatic port detection does not work.
  5. Connect the board.
  6. Select the PlatformIO icon in the Activity Bar.
  7. Open Project Tasks > waveshare_esp32s3_touch_lcd_128 > General.
  8. Select Build.
  9. Select Upload to write the firmware.
  10. Select Monitor to open the serial monitor at 115200 baud.

The PlatformIO toolbar also has Build, Upload, and Monitor buttons. The Upload task writes the firmware only. It does not write the configuration web files.

Quick start with the command line

Run these commands from the repository root:

sh
pio run
pio run --target upload
pio device monitor --baud 115200

If pio is not on PATH, open a PlatformIO Core CLI terminal from Visual Studio Code and run the commands there.

Install the configuration web UI

The web UI is a separate LittleFS image. Build the WASM renderer before you build the filesystem image. If you do not build the WASM files, the editor works but exact browser previews show WASM asset not installed.

For most users, install the latest tagged release with the OpenGauge web installer. It writes the firmware and the web interface to a supported ESP32-S3 board. Chrome or Edge with Web Serial support is required.

Permanent release packages are on the GitHub Releases page. Each release contains a merged factory image for browser installation, separate firmware and LittleFS images for manual installation, boot files, checksums, the WASM renderer, and a complete ZIP package. The Build OpenGauge workflow also produces a 14-day development artifact for each commit.

For a local maintainer build:

  1. Install and activate Emscripten so that em++ is available.

  2. Run the applicable WASM build script:

    powershell
    powershell -ExecutionPolicy Bypass -File tools/wasm/build_wasm.ps1
    sh
    bash tools/wasm/build_wasm.sh
  3. In the PlatformIO Task Explorer, open the project environment.

  4. Select Platform > Build Filesystem Image if this task is available.

  5. Select Platform > Upload Filesystem Image. Some PlatformIO versions show Upload File System image.

The command-line equivalents are:

sh
pio run --target buildfs
pio run --target uploadfs

[!CAUTION] The web installer and Upload Filesystem Image task replace the complete LittleFS partition. They can delete the saved /config.json file. Download the current JSON from the web UI before installation.

Do not connect the device to a vehicle until you have checked its power, ground, CAN wiring, and sensor calibration.

Configure a gauge

Swipe up on the gauge and start its temporary configuration hotspot. The gauge shows the device-specific Wi-Fi name and password. The captive portal can edit, preview, upload, download, save, and apply the versioned JSON without rebooting. The firmware pauses analogue input sampling while the hotspot is active. See Configuration and the configuration portal.

Preview screens without an ESP32 build

The preview tool runs the production gauge renderer with desktop stubs. It does not require the Arduino or ESP32 toolchain.

powershell
python tools/gauge_preview.py --type standard --main-source boostPress --min -10 --max 25 --unit "Boost (PSI)" --boost-units --value boostPress=12.4 --value waterTemp=92 --value intakeTemp=31 --secondary "waterTemp,Water: ,C,range,80,105,blue,cyan,red" --secondary "intakeTemp,AIT: ,C" -o preview.png --scale 3

See Preview tool for all options. The checked-in examples are in previews.

Repository layout

PathPurpose
src/Firmware source files and display drivers.
include/Shared firmware headers.
tools/Native renderer and PNG preview tool.
previews/Example screen renders.
docs/Hardware and configuration documentation.
cad/KiCad PCB files, fabrication outputs, and enclosure models.
.github/workflows/Automated firmware, WASM, parser, and filesystem checks.

Contribute

Small, focused changes are easiest to review. Read CONTRIBUTING.md before you open a pull request.

License

OpenGauge uses strong reciprocal licences:

  • Original software is licensed under GPL-3.0-or-later. Distributed software modifications must remain available under the same licence.
  • Original hardware design material is licensed under CERN-OHL-S-2.0. Distributed modified designs and products must meet its source obligations.

See LICENSE for the precise scope, the complete texts in LICENSES, and THIRD_PARTY_NOTICES.md for components that retain separate notices.

Parts

29
QtyValueFootprintReferences
710KResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder_AngusTxtR3, R4, R5, R6, R7, R8, R9
40.1uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC4, C5, C8, C9
4COM-CONConnector_Phoenix_MC:PhoenixContact_MCV_1,5_3-G-3.81_1x03_P3.81mm_Vertical_ACJ3, J4, J5, J6
31uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC6, C7, C10
210uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1, C2
260Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R2
12.5KResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolder_AngusTxtR10
14.7nFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC3
1Conn_01x12_SocketConnector_JST:JST_SHL_SM12B-SHLS-TF_1x12-1MP_P1.00mm_HorizontalJ1
1DDiode_SMD:D_SMAD1
1L7805Package_TO_SOT_SMD:TO-252-3_TabPin2U1
1PWR-CONNConnector_Phoenix_MC:PhoenixContact_MCV_1,5_3-G-3.81_1x03_P3.81mm_Vertical_ACJ2
1TJA1051T-3Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU2

Similar boards

  • 2 layers120 × 90 mmBobbycontroller, the printed circuit board in 3D

    Bobbycontroller

    bobbycar-graz/Bobbycar-FOC-hardware

    Our own dual BLDC Motorcontroller

    328 parts23
  • 4 layers86.7 × 86.3 mmPehlivan VCU, the printed circuit board in 3D

    Pehlivan VCU

    anshinx/PehliVCU

    Trakya Üniversitesi Pehlivan Team ve Tas-Pro (Tasarım ve Proje Topluluğu) bünyesinde Shell Eco-marathon yarış aracı için özel olarak geliştirilmiş, endüstriyel standartlarda Araç Kontrol Ünitesi (VCU) donanım ve gömülü…

    84 parts
  • 2 layers120 × 90 mmBobbycontroller, the printed circuit board in 3D

    Bobbycontroller

    kitspace-test-repos/kicad6-file-collection

    328 partsMIT
  • 4 layers100 × 94 mmPicohome2, the printed circuit board in 3D

    Picohome2

    racerxdl/picohome

    Raspberry Pi Pico Home Automation using CAN Bus

    123 parts90Apache-2.0
  • 2 layers133 × 98 mmPrecharge, the printed circuit board in 3D

    Precharge

    michaelruppe/FSAE

    Projects for Formula SAE Electric Vehicle competition (Australia 2019/2020)

    121 parts59MIT
  • 4 layers231 × 67 mmBESC G2, the printed circuit board in 3D

    BESC G2

    galpavlin/BESC-G2

    BESC second generation

    300 parts58
  • 2 layers50 × 66 mmBluePhil, the printed circuit board in 3D

    BluePhil

    pms67/BluePhil

    STM32-based development board with various sensors.

    106 parts53MIT
  • 2 layers55.9 × 36.8 mmCANT, the printed circuit board in 3D

    CANT

    bitbane/CANT

    The CANT project is designed to allow people to screw around with CAN easily at layers 1/2. All of the stuff that is normally handled by a CAN controller that is baked into sillicon is up for grabs.

    15 parts51BSD-3-Clause

Questions

How big is the Daughter board PCB?

It measures 27.7 × 43.7 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Daughter board use?

29 parts, built around the TJA1051T/3/1 and L7805. 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 Daughter board KiCad files?

From the AngusClayton/OpenGauge repository on GitHub, at the commit this page was made from: the board is cad/PCB/daughter-board.kicad_pcb and its schematic cad/PCB/daughter-board.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Daughter board design in my own project?

Its repository states no licence, so its author keeps all rights: ask AngusClayton before reusing the design.