Dass Visual Studio Code mit Platformio auf deinem System bereits läuft, setze ich an dieser Stelle als gegeben voraus.
Einrichtung
-
Installiere Git und klone das Repository mittels
git clone https://github.com/biologist79/ESPuino.git
. Du kannst das Repository von Github auch einfach als Zip-Datei runterladen, aber der Vorteil von Git ist, dass es damit recht einfach ist, das Repository lokal später auch zu aktualisieren, um up to date to bleiben. Git ist allerdings ein recht komplexes Thema (zugegeben kämpfe ich damit auch immer wieder), aber es gibt massig Doku dazu im Netz. Das hier z.B. beschriebt, wie man ein späteres Update macht: git - Updating a local repository with changes from a GitHub repository - Stack Overflow. -
Jetzt muss lokal vorliegende Repository in Platformio importiert werden. Dafür klickt man links auf den Alienkopf und öffnet, sofern nicht bereits Pio Home > Open das „Pio Home“ (sofern es eh nicht bereits geöffnet ist. Dort gibt es auf der rechten Seite „Quick Access“ und darunter „Import Arduino Project“. Das ist genau das, was du suchst.
-
Die zentrale Konfigurationsdatei in Platformio ist
platformio.ini
. Hier befindet sich die Projektkonfiguration und sich für unterschiedliche ESP32-Develboards unterschiedliche Konfigurationen. Hier kann man auch weitere Boards anlegen. Für Lolin D32 sieht die Dokumenation z.B. so aus. Ggf. wichtig sind die Einstellungen vonupload_port
undmonitor_port
. Passe diese an, wenn das Flashen nicht funktioniert. -
Editiere die Datei
src/settings.h
gemäß deinen Bedürfnissen. HAL musst du nicht anpassen, wenn du Platformio benutzt. Das wird über das Prozedere in Schritt 7 automatisch gemacht. Hinweis: Ist das Develboard, welches du verwendest, hier nicht dabei, starte am besten mit 99 (custom) hier. Beachte unbedingt auch das dynamische Button-Layout. -
Nun muss das
HAL
-spezifische Config-File editiert werden. Wurde für HAL die 1 gewählt, so handelt es sich umsettings-lolin32.h
. Hinweis: Dass diese Datei für Lolin32 konzipiert ist heißt ausdrücklich nicht, dass sie nicht mit anderen Develboards laufen würde. Es handelt sich einfach nur um Einstellungen, die mit diesem Develboard erfolgreich getestet wurden. Ggf. sind gar keine oder nur wenige Anpassungen für dein Develboard nötig und das Ganze läuft genauso. -
Verbinde das Develboard per USB (kann auch schon vorher erfolgt sein; spielt keine Rolle). Wichtig: Auf den Develboard befindet sich ein Chip, der eine Konvertierung von USB zu seriell durchführt. Für diesen Chip braucht man einen Treiber, der zuerst installiert werden muss. Welcher das ist, hängt vom verwendeten Chip ab.
-
Wichtig ist nun, dass du das passende Profil auswählst. Links oben unter „Project Tasks“ sind die Profile auswählbar. Im nachfolgenden Bild ist das passende Profil für Lolin32 ausgewählt.
-
Unterhalb dieses Profils nun auf
Upload and Monitor
klicken. Beim ersten Mal werden nun alle notwendigen Bibliotheken im Hintergrund geladen und anschließend der Code kompiliert. Ist dies abgeschlossen, so wird die Firmware auf den ESP32 aufgespielt. -
Anschließend sollten unten in der seriellen Konsole erste Lebenszeichen zu sehen sein. Wichtig ist an dieser Stelle zu wissen, dass der ESPuino für einen erfolgreichen Bootvorgang Zugriff auf die SD-Karte benötigt. Gibt es diesbzgl. eine Fehlermeldung, so wirf zuerst einen Blick in die FAQ. Hat alles funktioniert, so sollte der ESPuino einen Access Point geöffnet haben, der ESPuino heißt (sofern die Konfiguration nicht geändert wurde). Wunderbar, dein ESPuino ist nun einsatzbereit!
-
Schaue nun auch hier vorbei:
📗 Der erste Start deines ESPuino
📗 ESPuino im Regelbetrieb
📗 Die Playmodi des ESPuino
Weitere Tipps
- Kompiliere nur solche Module (MQTT, FTP, Neopixel…) ein, die du auch benötigst. Das gilt z.B. für MQTT, da die Nichterreichbarkeit eines MQTT-Brokers Timeouts verursachen kann, die echt lästig sind. Andererseits benötigen diese Module auch Speicher und von solchem hat man auf einem Mikrocontroller eigentlich nie genug.
- Die Ausgaben der seriellen Konsole kann auf unterschiedliche Stufen vor dem Kompilieren gestellt werden. Möglich sind ERROR, NOTICE, INFO oder DEBUG. In ERROR werden hierbei am wenigsten Meldungen ausgegeben und in DEBUG am meisten.
- Wenn MQTT einkompiliert ist, dann stelle sicher, dass du über die WebGUI auch einen MQTT-Broker und ein (optionales) Passwort konfigurierst. Auch wenn MQTT einkompiliert ist, lässt es sich über die WebGUI nachträglich noch deaktivieren.
- Falls du einen Neopixel verwendest, dann konfiguriere die Anzahl der LEDs
NUM_LEDS
passend. Eine Falschkonfiguration kann zu seltsamen Mustern oder sogar zum Absturz führen. - Wenn du die Batteriespannung messen willst, stelle sicher, dass
MEASURE_BATTERY_VOLTAGE
aktiviert ist. Gemessen werden muss hierbei über einen Spannungsteiler, da ein Eingang eines ESP32 maximal eine Spannung von 3.3 V verträgt (LiPo hat z.B. bis zu 4,2 V). - Werden Neopixel und
MEASURE_BATTERY_VOLTAGE
zusammen verwendet, so kann die Batteriespannung auch via Neopixel visualisiert werden. Die Spannungsbereiche sind über die WebGUI einstellbar. Nach einem kurzen Tastendruck auf den Drehencoder wird die Spannung über den Neopixel angezeigt. - Wenn beispielsweise die optionale Kopfhörerplatine verwendet wird, so macht es Sinn
HEADPHONE_ADJUST_ENABLE
zu benutzen, so dass die Kopfhörerlautstärke begrenzt werden kann. - Ist
SHUTDOWN_IF_SD_BOOT_FAILS
gesetzt, so geht der ESPuino in Deepsleep, wenn nicht von SD-Karte gelesen werden kann. Benutze dieses Feature, wenn Batteriebetrieb verwendet wird, da du sonst im eingebauten Zustand ggf. keine Möglichleit mehr hast, den ESPuino neu zu starten. - Ist
PLAY_LAST_RFID_AFTER_REBOOT
aktiviert, so erinnert sich der ESPuino nach einem Neustart an die zuletzt aufgelegte Karte. Achtung: Tritt bei einer solchen Karte ein Fehler auf, kann man sehr schnell in eine Schleife gelangen, die man ohne neues Aufspielen der Firmware nicht beheben kann. Daher: Mit Vorsicht zu genießen! - Ist
BLUETOOTH_ENABLE
aktiviert, so kannst du im Bluetooth-Modus (erreichbar per Modifikationskarte oder Tasten-KommandoTOGGLE_BLUETOOTH_MODE
) zwischen ‚normalem‘ Modus und Bluetooth-Modus wechseln. Hier kannst du z.B. mit deinem Handy auf deinen ESPuino streamen. WLAN funktioniert in diesem Modus nicht und man kann auch nichts von SD abspielen. - Ist
USEROTARY_ENABLE
aktiv, so kann der Drehencoder verwendet werden. - Kommt keine Musik aus den Lautsprechern und du hast keine Kopfhörerplatine angeschlossen? Vielleicht hilft das: Lolin32 mit SD (SD_MMC) und PN5180 als RFID-Leser - #10 von jpellenz. Ansonsten teste mal, ob sich das Problem durch das Aktivieren von
HEADPHONE_ADJUST_ENABLE
löst. Hier gibt es eine Diskussion dazu: Kein Ton mit Max98357a - Solltest du mit der SD-Karte Probleme haben, so prüfe, ob diese FAT32 formatiert sind. Speicherkarten, die größer als 32 GB sind, werden ab Werk offenbar üblicherweise mit ExFAT formatiert, was der ESP32 jedoch (bisher?!) nicht unterstützt. Diese Karten müssen entsprechend umformatiert werden: Werden 64 Gb SD Karten unterstützt? - #5 von biologist.
Noch Fragen? Gerne! Aber bitte auch einen Blick in die FAQ werfen.