Das ist eine für den Ausdruck optimierte Ansicht des gesamten Kapitels inkl. Unterseiten. Druckvorgang starten.

Zur Standardansicht zurückkehren.

Firmware

Firmware ist die Bezeichung für Software, die auf eingebetteten Systemen wie dem ESP32 und anderen Mikroprozessoren läuft, und dort für die Funktionalität der Hardware verantwortlich ist. Beim OpenBikeSensor ist dies also ein Programm das wir selbst schreiben, mit dem der ESP32 bespielt wird, und das sich um die Aufzeichnung der zu messenden Daten, die Anzeige im Display und die ganze Konfigurationsoberfläche kümmert.

Die Firmware wird, wie alle Softwareteile, unter Open Source Lizenz auf GitHub entwickelt: https://github.com/openbikesensor/OpenBikeSensorFirmware. Für die Weiterentwicklung sind alle eingeladen, die sich für Mikroprozessorprogrammierung interessieren.

Featurewünsche oder Fehlerberichte sammeln wir im Issue Tracker auf GitHub.

Installation / Flashen

Ein etwas komplizierter Schritt beim Aufbau des Sensors, den alle Bastler:innen mindestens einmal mit ihrem neuen Gerät durchlaufen müssen, ist die initiale Installation der Firmware auf dem ESP32. Dies wird auch als “Flashen” (engl. to flash) bezeichnet.

Hierfür muss das Mikroprozessor-Board aus dem OpenBikeSensor ausgebaut und mit einem USB-Kabel an einen Computer angeschlossen werden. Die Anleitungen für das Übertragen der Firmware auf den Mikroprozessor unterscheidet sich stark nach Betriebssystem des Computers, daher haben wir sie hier getrennt aufgeführt:

Versionsupgrade

Eine neue Version der Firmware kann direkt über die Bedienoberfläche eingespielt werden. Hierfür gibt es entsprechende Menüpunkte im Hauptmenü. Ein Auseinanderbauen des Geräts und der Anschluss an einen Computer sind dafür nicht mehr nötig.

Bauen und Flashen der Firmware aus dem gihub-Repository

mit VisualStudio Code und PlatformIO

Zunächst VS Code und darin die Erweiterung PlatformIO installieren.

Danach den gewünschten Stand der OBS-Firmware aus dem github-Repository klonen und das Verzeichnis in VS Code öffnen. Dann mit dem Upload-Befehl (Pfeil nach rechts in der Fußzeile von VS Code) oder per pio run -t upload in der PlatformIO CLI auf den ESP32 flashen.

1 - Flashen unter Linux

Vorbereitung

Lade das neueste Release-Archiv der OBS-Firmware von GitHub herunter.

Du benötigst die ZIP-Datei mit dem Namen obs-v9.9.9.9999-initial-flash.zip (v9.9.9.9999 steht für die Versionsnummer). Entpacke die Dateien in einem temporären Verzeichnis, sie heißen 0x??????.bin. Die Zahlen sind die Basisadresse, an die die Daten geflasht werden sollen.

Installation

Installiere das Programm esptool, falls es noch nicht installiert ist. Es ist in den meisten Linux-Distributionen verfügbar.

Debian GNU/Linux, Ubuntu

und davon abgeleitete Distributionen, wie z. B. Linux Mint

sudo apt install esptool

Fedora

sudo dnf install esptool

Alternative Installation

Sollte Deine Linux Distribution dieses Paket nicht enthalten, dann kannst du versuchen es so zu installieren.

  • lege ein Verzeichnis an, in dem das Tool installiert werden soll, und wechsle in dieses Verzeichnis
mkdir ~/esptool
cd ~/esptool
  • für die Installation gib nacheinander folgende Befehle ein
python3 -m venv venv
. venv/bin/activate
pip install esptool
  • nun lass dir die Version anzeigen
esptool.py version
  • war die Installation erfolgreich, dann wird die Versionsnummer angezeigt (diese kann bei dir abweichend sein)
esptool.py v3.2
3.2

Gerätenamen herausfinden

Stelle sicher, dass du den Gerätenamen für das USB-Gerät kennst. Sehr wahrscheinlich wird es /dev/ttyUSB0 sein – dieser Name wird auch im weiteren Beispiel verwendet.

Herausfinden kannst du den Namen mit folgenden Schritten:

  • den OpenBikeSensor noch nicht mit dem Computer verbinden
  • in einem Terminal eingeben und ausführen
ls -1d /dev/ttyUSB*
  • wenn kein solches USB-Gerät an deinem Computer angeschlossen ist, wird ein Fehler angezeigt, anderenfalls eine Liste der vorhandenen /dev/ttyUSB Geräte, z. B.
/dev/ttyUSB0
/dev/ttyUSB1
  • nun den OpenBikeSensor anschließen, einige Sekunden warten und nochmal im Terminal eingeben und ausführen
ls -1d /dev/ttyUSB*
  • nun sollte in der Liste der Geräte ein Eintrag dazugekommen sein, dies ist der Gerätename für deinen OpenBikeSensor
/dev/ttyUSB0
/dev/ttyUSB1
/dev/ttyUSB2  <-- neu hinzugekommen

Flashen

Führe im selben Verzeichnis, in das du die ZIP-Datei entpackt hast, folgenden Befehl aus:

esptool \
    --chip esp32 \
    --port /dev/ttyUSB0 \
    --baud 921600 \
    --before default_reset \
    --after hard_reset \
    write_flash -z \
    --flash_mode dio \
    --flash_freq 40m \
    --flash_size detect \
    0x1000 0x01000.bin \
    0x8000 0x08000.bin \
    0xe000 0x0e000.bin \
    0x10000 0x10000.bin
cd ~/esptool
. venv/bin/activate

Und das Kommando esptool durch esptool.py ersetzen.

  • python3 esptool.py ...
  • python esptool.py ...
  • python3 /absoluter/pfad/zu/esptool.py ... (Pfad beim Paketmanager recherchieren)
  • python /absoluter/pfad/zu/esptool.py ... (s. o.)
  • python3 -m esptool ...
  • python -m esptool ...

Führt auch keiner dieser Aufrufe zum Erfolg, melde dich im Forum (https://forum.openbikesensor.org), wir finden gemeinsam eine Lösung.

Versionsupdates

Versionsupdates können in weiterer Folge über die Weboberfläche des OpenBikeSensors erfolgen und nicht mehr durch den oben angeführten, doch recht komplizierten Vorgang.

Jetzt ist dein OpenBikeSensor einsatzbereit und du kannst mit der Konfiguration fortfahren!

Bei Problemen

Wenn du keine Schreibberechtigung hast, kannst du den Dateimodus des Geräts ändern (oder das Kommando als root ausführen):

sudo chmod 0x666 /dev/ttyUSB0

Wenn du öfter mit dem ESP32 arbeitest, installiere dir entsprechende udev-Regeln.

Sollte alles fehlschlagen, und du noch Fragen haben oder weitere Infos suchen, findest du in der Community immer Hilfe.

2 - Flashen unter Windows

So flasht du eine neue Firmware auf deinen ESP32, wenn du einen Windows-Computer benutzt.

Firmware herunterladen

Lade das neueste Release-Archiv der OBS-Firmware von GitHub herunter.

Du benötigst die größere ZIP-Datei mit dem Namen obs-v9.9.9.9999-initial-flash.zip. Entpacke die Dateien in einen temporären Ordner, sie heißen 0x??????.bin. Die Zahlen sind die Basisadresse, an die die Daten geflasht werden sollen. Mach dir keine Gedanken darüber, was das bedeutet, dies wird in den nächsten Schritten Sinn ergeben.

Flash Tools herunterladen

Lade die “Flash Download Tools” für ESP32 (und einige verwandte Chips) vom Hersteller ESPRESSIF herunter und extrahieren das Archiv in einen speziellen temporären Ordner.

Es erfolgt keine Installation, vielmehr wird das Tool direkt aus dem Ordner heraus gestartet.

Treiber installieren

Du musst wahrscheinlich einen sogenannten USB-to-UART (seriellen) Treiber installieren, damit Windows mit dem Chip auf dem ESP-Entwicklungsboard kommunizieren kann. Da es sich um einen generischen Treiber handelt, hast du diesen möglicherweise bereits schon bei anderen Projekten installiert? Im Zweifelsfall lade und installiere sicherheitshalber den Treiber von der Herstellerseite, Silicon Labs. Eventuell kann es sich auch lohnen, auf die neueste Version zu aktualisieren. Der Treiber ist im Paket für die CP210x-Chips enthalten. Du findest ihn auf dieser Seite, er heißt “CP210x Universal Windows Driver”. Folge den dort gegebenen Anweisungen.

Sollte der Link nicht mehr funktionieren, verwende Google, um eine aktualisierte Version zu erhalten, aber achte wie gewohnt darauf, dass du auf einer vertrauenswürdigen Seite landest.

Flash Tool Bedienung

Trenne alle USB-Geräte vom Computer, die du gerade nicht benötigst. Der Anschluss könnte ansonsten bei der Auswahl des richtigen (zu flashenden) Gerätes verwechselt werden.

Verbinde nun das ESP32 Board über USB-Kabel. Du kannst das Entwicklungsboard hierfür aus dem OpenBikeSensor ausbauen, oder nur die Stromzufuhr der Batterie mit dem Schalter trennen (normal ausschalten) und das USB-Kabel durch die Öffnung hinter der GPS-Antenne führen und in das eingebauten Board einstecken.

Windows sollte bestätigen, dass ein neues Gerät erkannt wurde. Manche Kabel funktionieren nicht, wenn dein Gerät nicht erkannt wird, probiere es mit einem anderen.

Starte die ausführbare Datei flash_download_tool_3.X.X.exe im Ordner des Flash Download Tools. Das dauert ein wenig – nur Geduld. Es öffnet zuerst ein Konsolenfenster und schließlich eine einfache Benutzeroberfläche.

Wähle Entwicklermodus - ESP32 DownloadTool in der Benutzeroberfläche (der Factory-Modus kann verwendet werden, wenn mehrere ESPs gleichzeitig geflasht werden sollen – in diesem Fall kann man auch mehrere ESPs gleichzeitig verbinden).

Eine korrekte Konfiguration der ESP32 Flash Download Tools (klicken zum Vergrößern)

Jetzt musst du dem Tool mitteilen, was geflasht werden soll. Oben im Dialog gibt es mehrere Zeilen, beginnend mit Kontrollkästchen, einem Textbereich, einen Knopf mit drei Punkten, einem @-Zeichen und einem weiteren Textbereich.

Wähle für jede der 4 Dateien, die wir flashen müssen, die drei Punkte aus, die eine Dateiauswahl ermöglichen, in der du jeweils eine der 4 *.bin-Dateien der Firmware auswählst. Die Reihenfolge ist nicht wichtig, aber du musst die Adresse der Datei in das rechteste Textfeld eingeben. Die Adresse steht jeweils im Dateinamen, z. B. 0x01000. Die Kästchen wechselt auf grünen Hintergrund, was eine positive Plausibilitätsprüfung des Flash-Tools bedeutet.

Aktivieren nun die Kontrollkästchen, die sich vor den soeben vorgenommenen Eingaben befinden. Alle anderen Werte bleiben auf ihren Standardeinstellungen:

  • SPI SPEED: 40MHz
  • SPI MODE: DIO (ändert sich gleich automatisch)
  • FLASH SIZE: 32Mbit
  • SpiAutoSet: nicht ausgewählt
  • DoNotChgBin: ausgewählt

Unten siehst du eine Dropdown-Box mit der Beschriftung COM. Hier musst du den richtigen COM-Port für den Flash-Vorgang auswählen. Wenn du dir nicht sicher bist, belasse den Standardwert und versuchen einen anderen Wert, wenn der Vorgang fehlschlägt. Stelle sicher, dass keine anderen Geräte angeschlossen sind!

Drücke nun Start. Danach solltest du etwa Folgendes sehen: „Flashing in Progress“

Wenn alles richtig läuft, erhältst du einen Fortschrittsbalken mit einer abschließenden Erfolgsmeldung. Ziehe danach das USB-Kabel ab. Das ESP32 kann dann in das OpenBikeSensor-Gehäuse eingebaut werden (falls noch nicht geschehen).

Versionsupdates können in weiterer Folge über die Weboberfläche des OpenBikeSensors erfolgen und nicht mehr durch den oben angeführten, doch recht komplizierten Vorgang.

Jetzt ist dein OpenBikeSensor einsatzbereit und du kannst mit der Konfiguration fortfahren!

Bei Problemen

Wenn du eine rote Fehlermeldung erhältst, überprüfe ob die USB-Verbindung korrekt ist und der richtige COM-Port ausgewählt wurde. Wenn alles fehlschlägt, und du hast Fragen oder weitere Infos suchst, findest du in der Community immer Hilfe.

3 - Flashen unter macOS

Vorbereitung

Lade das neueste Release-Archiv der OBS-Firmware von GitHub herunter.

Du benötigst die größere ZIP-Datei mit dem Namen obs-v9.9.9.9999-initial-flash.zip. Entpacke die Dateien in einen temporären Ordner, sie heißen 0x??????.bin. Die Zahlen sind die Basisadresse, an die die Daten geflasht werden sollen.

Installiere das Programm esptool, falls es noch nicht installiert ist. Über Homebrew kannst du es so bekommen:

brew install esptool

Stelle sicher, dass du den Gerätenamen für das USB-Gerät kennst. Dies ist normalerweise /dev/tty.usbserial-0001 – dies wird auch im Beispiel unten angenommen. Auf macOS kannst du deine aktuellen USB-Geräte mit ioreg -p IOUSB -w0 -l auflisten. Suche im Zweifelsfall nach einem USB-zu-UART-USB-Gerät.

Flashen

Führe im selben Verzeichnis, in das du die ZIP-Datei entpackt hast, folgenden Befehl aus:

esptool.py \
    --chip esp32 \
    --port /dev/ttyUSB0 \
    --baud 921600 \
    --before default_reset \
    --after hard_reset \
    write_flash -z \
    --flash_mode dio \
    --flash_freq 40m \
    --flash_size detect \
    0x1000 0x01000.bin \
    0x8000 0x08000.bin \
    0xe000 0x0e000.bin \
    0x10000 0x10000.bin

Bei Problemen

Wenn du keine Schreibberechtigung hast, kannst du den Dateimodus des Geräts ändern (oder das Kommando als root ausführen):

sudo chmod 0x777 /dev/ttyUSB0

Sollte alles fehlschlagen, und du noch Fragen haben oder weitere Infos suchen, findest du in der Community immer Hilfe.