Zum Inhalt

T-RGB Fahrradcomputer

Ein Fahrradcomputer auf dem LilyGO T-RGB: rundes Touch-Display mit 480×480 Pixeln, ESP32-S3 mit BLE und WLAN, SD-Karte und LiPo-Lader auf der Platine. Er liest übliche BLE-Fahrradsensoren, zeigt Abbiegehinweise und den nächsten Anstieg vom Handy, zeichnet jede Fahrt auf SD-Karte auf und bewertet den Untergrund mit einem eigenen Beschleunigungssensor.

Hauptscreen

Hauptscreen

Navigation

Navigation

Anstieg

Anstieg

Wege-Labels

Wege-Labels

Einstellungen

Einstellungen

Screenshots vom Gerät, aufgenommen während einer simulierten Fahrt von Villach nach Bovec.

Funktionen

Anzeige -- Oberfläche „Rim & Ridge" (LVGL 8, entworfen in EEZ Studio) mit fünf Screens:

  • Hauptscreen: Geschwindigkeit (Zahl und äußerer Ring), Trittfrequenz, Puls mit Zonenband, Temperatur, Höhe, Steigung, Strecke (Fahrt / Trip / Tour / gesamt), Fahrzeit oder Uhrzeit, Fahrzustand, Linie für die Wegequalität, Symbole für WLAN, GPS-Fix und Akku
  • Navigation: öffnet sich vor einem Manöver von selbst und schließt danach wieder. Großer Abbiegepfeil, Distanzring, Straßenname, übernächstes Manöver, Fahrspuren, Kreisverkehr-Ausfahrten
  • Anstieg: Höhenprofil des Anstiegs voraus, gefärbt nach Steigung, mit Kategorie; öffnet sich von selbst am Fuß eines bewerteten Anstiegs (Anstiege)
  • Wege-Labels: Untergrund und Qualität während der Fahrt von Hand markieren, als Vergleichswert für die automatische Wegequalität
  • Einstellungen: eine Übersicht mit je einer Seite pro Gruppe -- WLAN (IP-Adresse, an/aus, Hotspot, Netz einrichten mit der Display-Tastatur), IMU (Kalibrierung und Referenzfahrt), Höhe (drei Presets, GPS, Höhe oder NN-Druck manuell, Höhenkalibrierung), BLE-Geräte (Speed, Kadenz, Puls, TrailBridge, im FL-Build der Forumslader: Farbe = Verbindung, Batteriestand; lang drücken vergisst einen Sensor, damit ein anderer koppeln kann) -- dazu Neustart, Ausschalten und eine Markierung für Simulator-Builds

Fahrten und Statistik

  • Eine Taste startet eine Fahrt, pausiert sie („Cruise") und beendet sie; Stopps und Pausen werden aus der Geschwindigkeit erkannt
  • Strecke, Zeit, Durchschnitts- und Höchstgeschwindigkeit und mittlere Trittfrequenz je Fahrt, Trip, Tour und gesamt; Durchschnitte mit oder ohne Stopps, Pausen und Cruise-Zeit (Fahrten und Statistik)

Sensoren

  • BLE: Geschwindigkeit und Trittfrequenz (CSC), Puls, Batteriestand jedes Sensors; Sensoren werden einmal gekoppelt und an ihre Adresse gebunden
  • I²C: BME280 (barometrische Höhe und Steigung, Temperatur), Beschleunigungssensor BMI160
  • Forumslader (Lader am Nabendynamo) über mein BLE-Gateway (Build-Variante -FL)

Navigation und GPS von der Android-App TrailBridge über BLE (Protokoll):

  • Abbiegehinweise von OsmAnd oder von einer GPX-Route, die TrailBridge selbst abspielt -- dann mit dem Höhenprofil für den Anstiegs-Screen
  • Die GPS-Position des Handys für das Log und seine Zeit für die Uhr, wenn kein WLAN da ist
  • Tools/gpxenrich macht aus einem einfachen GPX-Track eine solche Route (Abbiegehinweise von BRouter)

Wegequalität aus dem BMI160 mit 400 Hz: Rauheitsklasse je Intervall, Stoßerkennung (mit dem zweiten Peak vom Hinterrad), eine Referenzfahrt auf glattem Asphalt und die Steigung aus dem Beschleunigungssensor als Alternative zum Barometer.

Aufzeichnung

  • Binärlog auf SD-Karte, eine Sitzung je Boot in datierten Ordnern: Fahrdaten alle 5 s mit GPS, Wegequalität je Intervall, jeder Stoß, manuelle Wege-Labels, Fahrzustände; Rohdaten des Beschleunigungssensors auf Anforderung
  • Debug-Log und rohes Forumslader-Log (auf dem Gerät wieder abspielbar)
  • Python-Werkzeuge, die Logs in CSV und GPX umwandeln, und ein Dienst, der die Sitzungen abholt, sobald der Fahrradcomputer im WLAN auftaucht, sie archiviert, GPX exportiert, mit Nextcloud abgleicht und zu Komoot hochlädt

Web-Oberfläche (im WLAN)

  • Logdateien herunterladen, abspielen und löschen; Live-Log mit einstellbaren Log-Leveln
  • Fahrstatistik mit Diagramm, Kilometerstand und Radumfang
  • BLE-Sensoren verwalten; Debug-Seiten für Sensoren, Beschleunigungssensor, Anstiege und Abstürze
  • WLAN: gespeicherte Netze und ihre Priorität, Hotspot-Einstellungen (WLAN)
  • Firmware und Dateisystem über WLAN aktualisieren

Serielle Konsole mit Zeileneditor, Verlauf und Tab-Vervollständigung (Debugging).

Für die Entwicklung: ein Simulator-Build mit simulierten Sensoren (Simulator), Screenshots und Touch-Eingaben über HTTP (Tools/uishot.py), Host-Tests für die reinen Algorithmen (test/, Tools/tests/).

Hardware

  • LilyGO T-RGB (die beiden Builds unterscheiden sich im Touch-Controller, TRGB_ROUND / TRGB_OVAL, und in der Forumslader-Unterstützung)
  • Optional: BME280 und BMI160 am I²C-Bus
  • LiPo-Akku
  • Gehäuse und Lenkerhalter aus dem 3D-Drucker -- ein parametrisches Modell für das Canyon CP0007 Gravel-Cockpit liegt in cad/

T-RGB Fahrradcomputer am Lenker (ältere Oberfläche)

Bauen

PlatformIO, Arduino-Framework (pioarduino-Plattform):

pio run -e trgb-esp32-s3 -t upload        # Standard: BLE- und I²C-Sensoren
pio run -e trgb-esp32-s3-FL -t upload     # Forumslader-Variante
pio run -e trgb-esp32-s3 -t uploadfs      # Dateien der Web-Oberfläche (data/site)

trgb-esp32-s3-ota und trgb-esp32-s3-FL-ota sind dieselben Builds, hochgeladen per WLAN an den /update-Endpunkt des Geräts. Ziel ist TRGB-BC.local; löst mDNS nicht auf, die IP angeben: pio run -e trgb-esp32-s3-ota -t upload --upload-port 192.168.x.y. trgb-esp32-s3-sim ist der Simulator-Build.

Der Build wendet kleine Patches auf zwei Bibliotheken an (apply_patches.py); dafür wird das Programm patch gebraucht.

Wie es weitergeht

Quellcode: github.com/euphi/TRGB-BikeComputer. Mitarbeit ist willkommen; die Roadmap zeigt, wo Hilfe gesucht wird.

Lizenzen und Quellen