Fahrzeug- und Sim-Racing-Telemetrie in einem reaktionsschnellen Interface.
RpmCounter verbindet ein ESP32-S3-Gerät mit AMOLED-Display, einer konfigurierbaren LED-Leiste und mehreren Telemetriequellen – vom BLE-OBD-Adapter im Fahrzeug bis zu SimHub über USB oder WLAN.
Ausgangslage
Im realen Fahrzeug liefert die bestehende Instrumentierung nicht immer eine frei positionierbare oder individuell einstellbare Schaltanzeige. Im Simulator liegen die Daten zwar am PC vor, müssen für eine externe Hardware aber zuverlässig transportiert werden. Beide Szenarien verwenden unterschiedliche Quellen, Formate und Fehlerzustände.
Herausforderung
BLE-OBD, SimHub im Netzwerk und eine direkte USB-Verbindung müssen in einen gemeinsamen Laufzeitstatus überführt werden. Kurzzeitige Ausfälle dürfen nicht zu flackernden oder eingefrorenen Anzeigen führen. Gleichzeitig sollen Display, 30 LEDs, Touchbedienung, Helligkeit und lokale Konfiguration auf begrenzter Embedded-Hardware zusammenspielen.
Lösung
Ein Telemetrie-Manager normalisiert die eingehenden Daten und wählt anhand von Präferenz, Aktualität, Haltezeit und Fallback-Regeln die aktive Quelle. LVGL rendert dieselbe zentrale Oberfläche auf dem ESP32-S3 und im SDL2-Desktop-Simulator. Die LED-Logik übersetzt den Drehzahlbereich in konfigurierbare Farbzonen und Blinkzustände; Einstellungen bleiben lokal im Gerät gespeichert.
Mehr als ein Drehzahlmesser: Datenweg, Anzeige und Diagnose.
Drei Telemetriepfade
BLE OBD-II macht Fahrzeugdaten nutzbar. Am Simulator gelangen SimHub-Daten wahlweise über das lokale Netzwerk oder eine direkte Python-USB-Bridge zum Gerät.
Ein System kann unterschiedliche Fahrzeug- und Simulator-Setups abbilden.
Quellenwahl mit Fallback
Die Runtime bewertet Präferenz und Aktualität von USB, Netzwerk und OBD, hält Übergänge kurz stabil und reduziert RPM bei vollständigem Datenverlust kontrolliert.
Kurze Aussetzer führen nicht sofort zu abrupten oder veralteten Anzeigezuständen.
AMOLED, Touch und Gesten
Eine kompakte LVGL-Oberfläche zeigt RPM, Gang, Geschwindigkeit, Status- und Sessiondaten. Touch und Gesten erschließen Einstellungen und Ansichten direkt am Gerät.
Fahrdaten und grundlegende Bedienung bleiben auf einer eigenständigen Anzeige gebündelt.
Konfigurierbares Shift-Light
Eine 30-LED-Leiste visualisiert Drehzahlbereich und Schaltfenster über einstellbare Start-, Maximal- und Blinkwerte, Farbzonen, Helligkeit und Darstellungsprofile.
Das visuelle Signal lässt sich ohne erneute Codeänderung an unterschiedliche Setups anpassen.
Lokales Dashboard und Persistenz
Verbindung, LED-Parameter, Anzeige, WLAN und Diagnose werden über eine lokale Browseroberfläche oder das Gerät konfiguriert und in ESP32 Preferences/NVS gespeichert.
Konfiguration und technische Prüfung funktionieren lokal und überstehen einen Neustart.
Simulator und Diagnose
Der SDL2-Desktop-Simulator verwendet die gemeinsame LVGL-UI mit Mock- oder SimHub-Daten. Frame-Capture, Status-APIs, Testmuster, Sensor-Probes und Debug-Historien unterstützen die Fehlersuche.
Oberfläche und Laufzeitlogik lassen sich auch ohne permanentes Flashen der Zielhardware weiterentwickeln.
Ablauf
Quelle verbinden – Das Gerät empfängt Fahrzeugdaten über BLE OBD-II oder SimHub-Telemetrie über USB beziehungsweise das lokale Netzwerk.
Daten normalisieren – Unterschiedliche Eingänge werden in einen gemeinsamen Laufzeitstatus mit Zeitstempeln, Verbindungs- und Sessiondaten überführt.
Quelle stabil auswählen – Präferenz, Freshness, Haltezeit und Debouncing bestimmen die aktive Quelle und einen möglichen Fallback.
Display und LEDs rendern – LVGL aktualisiert RPM, Gang und Fahrdaten, während die LED-Logik Schaltbereich und priorisierte Ereignisse visualisiert.
Ergebnis
Ein gemeinsamer Telemetrie-Snapshot für OBD, SimHub-Netzwerk und USB
Eine eigenständige AMOLED-Anzeige mit konfigurierbarem 30-LED-Shift-Light
Kontrollierte Quellenwechsel statt abruptem Verhalten bei kurzen Ausfällen
Lokale Konfiguration, persistente Geräteeinstellungen und gezielte Diagnose
Ein gemeinsamer LVGL-UI-Pfad für ESP32-Gerät und Desktop-Simulator
Funktionsumfang
BLE OBD-II
SimHub USB & WLAN
Quellen-Fallback
LVGL AMOLED
30-LED-Shift-Light
Lokale Webkonfiguration
Desktop-Simulator
Eingesetzte Technik
C++17 & Arduino
ESP32-S3 & FreeRTOS
PlatformIO
LVGL 8 & SDL2
BLE / NimBLE
WiFi & HTTP
Python, Flask & PySerial
Unity Tests
Rolle
Konzeption des Gesamtsystems, Embedded-Firmware, LVGL-Oberfläche, Telemetrie- und Fallback-Logik, LED-Rendering, lokale Webkonfiguration, USB-Bridge, Desktop-Simulator, Diagnosefunktionen und Tests.