Funktionsübersicht

Was das System leistet

Direkte BLE-Verbindung zum Dongle, simultane Ausgabe auf OLED, TCP und LoRa — ohne Smartphone-Zwang und ohne proprietäre Abhängigkeiten.

01 · BLE

Auto-Scan & Connect

Der µC sucht selbständig nach BLE-OBD-Dongles und verbindet sich automatisch. Unterstützt UUIDs 0x18F0, 0xFFE0, 0xFFF0, 0xAE30 und 0xAE3A. Bei Verbindungsverlust wird automatisch neu gescannt.

NimBLE 1.4.x · 5 Profiles
02 · DISPLAY

OLED Multi-Page + Helligkeit

5 konfigurierbare Display-Seiten. Button für kurzen/langen Druck zum Blättern und Fixieren. Helligkeit per dim 0..255 regelbar — dim 0 schaltet das Display komplett aus (SSD1306 Sleep).

SSD1306 · 128×64 · I²C · dim 0..255
03 · WLAN

TCP-Bridge · AP & STA

Verbindet sich mit dem Heimnetz (STA) oder öffnet einen eigenen Access-Point (AP, 192.168.4.1). TCP-Port 1234. Konfiguration über eine gemeinsame wifi_config.h — ein Symlink für alle drei Module.

TCP 1234 · HTTP 80 · AP-Fallback
04 · LORA

Extended-only Pakete (TLV)

Nur Extended-Paket (0x03, TLV): alle aktiven PIDs mit Scaling. Intervall wird automatisch aus echter Airtime berechnet (Semtech-Formel, 1% Duty Cycle DE/EU). Config-Paket (0x02): SF/Region/Power-Sync.

868 MHz · SF7 · SX1262 · DC-konform
05 · PID-REGISTRY

43 definierte PIDs

Gemeinsame pid_registry.h/.cpp für Bridge und Receiver — verhindert Sync-Fehler. PID-Tabelle mit Prioritäten (HIGH/MED/LOW), Gruppen und Capability-Bits. Blind-Scan automatisch.

43 PIDs · 6 Gruppen · TLV
06 · PYTHON-GUI

obd_gui2 Dashboard

Tkinter-Dashboard mit 4 Styles (F1, Sci-Fi, Aviation, Luxury). Verbindet sich direkt mit Bridge (--bridge) oder Receiver. Polling läuft auf der Bridge unabhängig von TCP-Verbindungen durch.

4 Styles · --bridge · TCP · CSV-Log
07 · WATCHDOG

Hardware-Watchdog

ESP32 Task-Watchdog mit 60s Timeout in der Bridge. Loop-Reset verhindert Einfrieren. Wird bei Button-Wartezeiten und BLE-Scan-Wartezeiten explizit zurückgesetzt.

esp_task_wdt · 60s
08 · DEMO-MODUS

Demo ohne Fahrzeug

Vollständig simulierte OBD-Werte für Test und Entwicklung ohne Fahrzeug. OLED, TCP-Live-Stream und LoRa laufen durch. Die Motor-PIDs werden realistisch simuliert.

demo · live on · LoRa TX
09 · TELNET-CLI

Einheitliches CLI

Identisches Textmenü über TCP (Port 1234) oder seriell (115200 Bd). Telnet-kompatibel (IAC-Filter). Vollständige Befehlsreferenz via help:

BLE: scan · disco · info
PID: pid list · pid status · pid scan · pid enable/disable <grp/id/all> · pid blind on/off · pid interval · pid profile fast/full/custom
DTC: dtc · cleardtc
Poll: poll <ms> · poll status
Live: live on/off
Display: next · prev · page N · pagetime N · pagelay R S · dim N · beep on/off/ack
LoRa: lora status · lora sf7..12 · lora de/int · lora pw<N>
CTRL: ctrl beep on/off/ack/pulse D N · ctrl gpio PIN [VAL] · ctrl ping
GPIO: gpio PIN · gpio PIN 0/1
System: demo · debug · version · reboot

Port 1234 · 115200 Bd · help · pid profile · live · ctrl · pagelay
10 · SIMULATOR

OBD2-Simulator

ESP32 WROOM-32 + MCP2515 (CAN-Controller) + TJA1050 (CAN-Transceiver) simulieren ein Fahrzeug-ECU via CAN-Bus. Sendet ab Boot automatisch BSC/EXT-Live-Pakete (live off zum Abschalten). Web-Interface zum manuellen Setzen aller Werte.

MCP2515 · TJA1050 · CAN 500k · Mode 01–09 · HTTP · live
11 · FLASH-TOOLING

obd_identify + obd_flash

obd_identify.sh erkennt automatisch welches Modul an welchem USB-Port hängt und gibt einen fertigen Flash-Befehl aus. obd_flash.sh kompiliert auf PC1 und flasht auf PC2 via SSH — mit Build-Zeitstempel im Binary.

obd_identify.sh · --port bridge=/dev/ttyUSB2
12 · BUILD-TIMESTAMP

Version im Binary

Jedes Binary enthält Build-Zeit und Quell-Stand als Compiler-Defines. Abrufbar via version oder im status-Output — so ist immer klar, welcher Code-Stand geflasht ist.

BUILD_TIME · SKETCH_MTIME · version
13 · BEEPER

Piezo-Beeper an Bridge

Statischer Piezo-Beeper direkt an GPIO 48 des Heltec LoRa V3 (3,3V ausreichend). Per CLI steuerbar: beep on/off (Dauerton), beep ack (Doppelpiep). Zustand im status-Output sichtbar.

GPIO 48 · beep on/off · beep ack · TCP · Serial
14 · LORA-RÜCKKANAL

Befehle Receiver → Bridge

Der Receiver kann Befehle per LoRa an die Bridge senden. Befehl wird in eine Queue geschrieben und unmittelbar nach dem nächsten empfangenen Paket gesendet — die Bridge ist dann garantiert im RX-Fenster. Pakettyp 0x04 (CMD), 4 Byte mit XOR-CRC.

0x04 · CMD-Queue · beep on/off · XOR-CRC