Es gibt zwar verschiedene ESPuino-Hardware, aber da die meisten Leute doch letztlich das benutzen, was ich entwickelt habe, habe ich mir überlegt, mal genau dafür ein gesamtes Tutorial zu schreiben, welches die wichtigsten Punkte aufgreift. Ganz am Ende gibt es auch ein paar Punkte zur Fehlersuche.
Insofern: Hier geht es ausschließlich um mini4L mit den Develboards Lolin D32 pro oder D32 pro LiFePO4. Ggf. auch Lolin D32.
Löten der mini4L
Hinweis: Sollte deine mini4L bereits fertig gelötet sein, so kannst du diesen Part überspringen.
- Die mini4L hat zwei Pinreihen in der Mitte, die eingelötet werden müssen. Zum Thema löten habe ich bereits ein Tutorial geschrieben: 📗 (SMD-)Löten.
- Auf der Rückseite der mini4L befinden sich Lötbrücken, die geschlossen werden müssen. Welche das im Einzelfall sind steht hier. Vergisst du diese zu löten, so werden RFID-Reader und Drehencoder nicht funktionieren.
So sieht die mini4L vor dem Löten aus:
Am Ende sollte sie oben so aussehen:
Löten des Drehencoders
Solltest du einen Drehencoder bei mir bestellt haben, so achte unbedingt darauf, wie dieser gelötet werden muss. Hier ist es beschrieben: Drehencoder by ESPuino.
Hardware
- Generell macht es Sinn, sich die Seite der mini4L genau durchzulesen.
- Achte beim Löten der Anschlussleitungen für Neopixel, RFID-Reader und ggf. Drehencoder (wenn du keinen von mir hast mit Steckanschluss) darauf, dass die Belegung 100% übereinstimmt. Verlasse dich NIE (!) auf Farben der Anschlussleitungen. Vor allem das Anschließen des Neopixels ist sehr kritisch: Vertauschst du die Polarität, so kommt es zu einem Kurzschluss, der dir im schlimmsten Fall das Develboard zerstört!
- Stecke, sofern vorhanden, die Anschlussleitung für die Kopfhörerplatine NICHT in die Buchse des i2c-Anschlusses auf der mini4L! Hier besteht Verwechselungsgefahr, da beide Anschlüsse fünf Pins besitzen.
- Achte drauf, dass das Develboard RICHTIG HERUM und OHNE VERSATZ im Sockel der mini4L steckt. Hier gibt es verschiedene Bilder dazu. Die USB-Buchse des Develboards muss in die gleiche Richtung (unten) zeigen, auf der auch der µSD-Slot ist. So sollte es aussehen:
Welchen Branch benutzen?
Bei ESPuino gibt es zwei Branches (Entwicklungszweige):
Master: Dies ist der Hauptentwicklungszweig, er gilt als „stabil“, hat jedoch den Nachteil, dass er nicht immer alle neuen Features besitzt. Es gibt keinen festen Release-Zyklus.
Dev: Dies ist in der Entwicklungszweig. Hier kommen Neuentwicklungen rein und werden dort zuerst getestet, bevor sie später, wenn sie als stabil genug gelten, in den Master überführt („gemerged“) werden. Keine Angst: Sachen, die in den Dev-Branch integriert werden, sind nicht komplett ungetestet, jedoch möglicherweise nur von 1-2 Personen.
Fazit: Wer sich unsicher ist, benutzt am besten den Master-Branch. Wer den Dev-Branch benutzt, der muss keine Angst davor haben, aber sollte das einfach im Hinterkopf haben. D.h. im Gegenzug natürlich nicht, dass es im Master-Branch keine Fehler gibt (Software ist ja bekanntlich nie fehlerlos) und im Dev-Branch aber schon . Ich würde sagen: Wenn man den Dev-Branch benutzen möchte (was völlig ok ist), dann sollte man zum Zeitpunkt des Wechselns hier im Forum etwas mitlesen, damit man auf dem aktuellen Stand ist, was gerade entwickelt wird.
Einrichtung Visual Studio Code
Sämtliche Develboards, die ich rausschicke, sind bereits mit ESPuino vorgeflasht. Hierbei werden die Standardeinstellungen verwendet, die für mini4L und die Lolin D32 pro bzw. D32 pro LiFePO4 notwendig sind. Davon abweichend ist Support für den RFID-Reader PN5180 einkompiliert. Solltest du davon nicht abweichen wollen, so kannst du dir die Einrichtung von VSC zur Not auch sparen. Normalerweise macht es aber schon Sinn, es installiert zu haben; nicht zuletzt zur Fehlersuche. Achso: Im Normalfall kompiliere ich die Firmware aus dem dev-Branch.
Wichtig: Nachfolgend ist immer von lolin_d32_pro_sdmmc_pe
die Rede. Solltest du einen Lolin D32 (ohne pro) verwenden, so musst du lolin_d32_sdmmc_pe
verwenden. Das wird jedoch für die wenigsten Leute zutreffend sein (und ist auch nicht zu empfehlen aufgrund von Speichermangel).
Vorgehensweise:
-
Zuerst musst du Visual Studio Code (nachfolgend VSC) installieren und anschließend Platformio als Plugin. Wie das geht steht hier: 📗 Einrichtung von Visual Studio Code mit Platformio.
-
Am linken Rand in VSC findest du allerlei Symbole. Nachfolgend ein paar Infos zu diesen Symbolen. Über das oberste Symbol hast du Zugriff auf Dateien. Wenn du später (folgt weiter unten) das Projekt ausgecheckt hast, dann siehst du sie dort:
Klickst du dort drauf, wo du im Bild die 6 siehst, öffnest du den GIT-Browser, in dem du z.B. siehst, welche Dateien von dir bearbeitet wurden. Weiter Infos dazu findest du hier.
Etwas weiter unten, bei der 1, findest du den Plugin-Browser. Hier kannst du Plugins installieren (Platformio brauchst du zwingend, ich würde zusätzlich auch Gitlens empfehlen).
Das vielleicht wichtigste Symbol ist jedoch der Alien-Kopf, welcher das Platformio-Plugin repräsentiert. Hier kannst du mittels „Upload and Monitor“ in einem Schritt die Firmware kompilieren, auf den ESP32 hochladen und anschließend den seriellen Monitor aktivieren. Um nur den seriellen Monitor zu aktivieren klickst du auf „Monitor“.
- Wichtig ist es nun, in das richtige Environment (auch HAL genannt) zu wechseln. Im oberen Bereich ist es hier beschrieben, aber nochmal in Kürze: Ganz unten am Bildschirmrand von VSC siehst du irgendwas mit „env:…“ stehen. Das klickst du an und wechselst auf
env:lolin_d32_pro_sdmmc_pe
. Achte drauf, dass du es nicht verwechselst: Es gibt auch Profile, die ähnlich heißen (ohne sdmmc, ohne pro).
Hier die Liste aller verfügbaren Environments:
- Im Anschluss musst du den ESPuino-Code in VSC auschecken: 📗 ESPuino in Platformio anlegen und mit git aktuell halten.
- In
src/settings.h
bzw.src/settings-lolin_d32_pro_sdmmc_pe.h
musst du nun deine Anpassungen vornehmen. Mindestens solche, die ich hier beschrieben habe. Kritisch könnte noch sein, wenn du einen Neopixel mit weniger als 24 LEDs hast: Dann musst du in settings.h auf jeden Fall die EinstellungNUM_INDICATOR_LEDS
anpassen. Hast du keinen Neopixel, dann kannst du das einfach ignorieren; es ist dann auch nicht unbedingt notwendig, den Neopixel-Support zu entfernen in dersettings.h
. - Ganz allgemein sind alle Optionen, die man anpassen kann, nochmal zentral beschrieben: 📗 Welche Optionen beim Kompilieren gibt es?. In Zukunft wird einiges davon in das ESPuino-Webinterface wandern, aber es ist noch unklar, wann das fertig sein wird.
- Hast du alles fertig konfiguriert, dann schließt du dein Develboard an den Rechner an. Unter Windows könnte es sein, dass der Treiber für CH340 installiert werden muss, damit das Develboard erkannt wird. Schließe es einfach mal an und schaue, ob’s auch ohne Treiber-Installation klappt. Unter Linux und Mac OS ist dies jedenfalls nicht notwendig. Hintergrund dafür ist, dass sich auf dem Develboard ein Chip (CH340C) befindet, der die seriellen Signale des ESP32 zu USB übersetzt.
- Nun klickst du in VSC links oben unter „Project Tasks“ auf „Upload and Monitor“. Die Firmware wird nun kompiliert (kann ein paar Minuten dauern) und im Anschluss auf dein Develboard geflasht. Anschließend kannst du im unteren Bildschirmbereich in der Konsole sehen, ob alles geklappt hat. Hier siehst du z.B. auch, ob ein etwaiger PN5180 erkannt wurde. Später dann auch die IP-Adresse, die dein WLAN-Router dem ESPuino in deinem Netzwerk zugewiesen hat (dazu nachfolgend gleich mehr).
- Dein ESPuino ist, wenn alles geklappt hat, nun startklar.
- Noch ein Tipp für die Profis (der „normale User“ muss hier nie etwas ändern!): Es gibt eine zentrale Datei, die
platformio.ini
heißt, in der das Projekt und die einzelnen Environments konfiguriert werden. Falls du dort Anpassungen machen willst oder musst: Hier gibt’s weitere Informationen dazu: Espressif 32 — PlatformIO latest documentation.
Weitere Tipps
- Sollten die LEDs auf deinem Neopixel-Ring sich entgegen des Uhrzeigersinns aufbauen, so kannst du das mittels
NEOPIXEL_REVERSE_ROTATION
korrigieren (settings.h). - Ist dir der Lautsprecher des ESPuinos im unteren Lautstärke-Bereich zu laut, so teste die Anpassung der Option
VOLUMECURVE
(settings.h). - Ist die Drehrichtung des Drehencoders anders rum, als du es erwartest, so kannst du das über
REVERSE_ROTARY
(settings-lolin_d32_pro_sdmmc_pe.h) korrigieren. Weitere Infos hier. - Du kannst alle Buttons und auch Mehrtasten-Kombinationen auch mit anderen Aktionen belegen. Die Konfiguration findet in der settings.h statt. Welche Optionen es gibt, das findet du hier: 📗 Das dynamische Button-Layout.
- Der ESP32 ist in der Spannungsmessung kein Präzisionswunder. Am besten ist es, wenn du auf dem Develboard (am besten ohne eingestecktes USB!) im Akkubetrieb mit einem Multimeter eine Gleichspannungs-Messung zwischen den Kontakten VBat gegen GND machst. Bei einem LiFePO4-Akku sind hier, wenn der Akku nicht ganz voll ist, üblicherweise so 3,2 V zu erwarten, bei LiPo eher irgendwas zwischen 3,3 V und 4,2 V. Du wechselst im Anschluss in das Webinterface des ESPuino und drückst einmal auf den Drehencoder (hast du keinen, so kannst du auch warten, da der ESPuino zyklisch diese auch von selbst ausführt), so dass eine Spannungsmessung gemacht wird. Das Ergebnis dieser Spannungsmessung kannst du dann in „Log“ sehen. Dieses Ergebnis vergleichst du nun mit der zuvor gemessenen Spannung. Beim Bau der Biobox3d war es beispielsweise so, dass der ESP32 mit einem LiFePO4-Develboard nur 3,08 V gemessen hat, während die tatsächliche Spannung zu diesem Zeitpunkt bei 3,225 V lag. Es lag also eine Differenz von 0,145 V vor. Exakt diesen Wert habe ich dann in offsetVoltage addiert, so dass dort 0,245 stand. Wird im Gegenzug zu viel gemessen, so musst du das Ganze nicht addieren sondern abziehen. Also 100 % genau wird es nicht, aber man kriegt es näherungsweise schon recht gut hin.
Inbetriebnahme
- Viele Infos zur Inbetriebnahme findest du hier: 📗 Der erste Start deines ESPuino.
- Du musst auf deinem Rechner nun in das WLAN deines ESPuinos wechseln, um dort die Zugangsdaten deines Heim-WLANs zu konfigurieren. D.h. kann ESPuino selbst sich nicht an einem WLAN anmelden (entweder weil noch keine Zugangsdaten konfiguriert wurden oder weil es aus sonstigen Gründen nicht geklappt hat), so spannt der ESP32 selbst ein WLAN auf. Sofern du es nicht anders benannt hast, heißt es standardmäßig „ESPuino“ (ohne Passwort); du kannst das über den Parameter
accessPointNetworkSSID
(settings.h) auch ändern. Auch ein Passwort kann gesetzt werden. Hast du in das ESPuino-WLAN gewechselt, so wird der ESP32 deinem Rechner eine IP-Adresse zuweisen und üblicherweise automatisch ein Fenster (Captive Portal) erscheinen, in dem du die WLAN-Zugangsdaten eintragen musst. Dort legst du auch den Namen (Hostname) des ESPuinos im Netzwerk fest. Sollte das mit dem Captive Portal nicht klappen, so musst du dich im Webbrowser per http://192.168.4.1 mit deinem ESPuino verbinden. Wichtig: Du kannst das grundsätzlich auch mit einem Smartphone machen, aber es kann dir z.B. mit Android passieren, dass der Zugriff scheitert, da Android erkennt, dass im ESPuino-WLAN kein Internetzugang vorhanden ist. Dann wird alles über LTE geschickt und landet im Nirvana. Bei iOS weiß ich es nicht. - Nach dem Abspeichern der Konfiguration (Button ganz unten im Captive Portal) und einem sich anschließenden ESPuino-Neustart sollte dein ESPuino Teil deines WLANs sein: Konnte er sich dort erfolgreich anmelden, so wechselt die LED-Farbe auf weiß (grün: hat nicht geklappt). Falls es geklappt hat: Schaue, dass sich dein Computer/Handy auch wieder mit dem gleichen WLAN verbunden hat, in dem sich dein ESPuino befindet. Ab jetzt kannst du problemlos auch dein Smartphone verwenden, so lange es Verbindung zum WLAN hat, in dem sich dein ESPuino befindet.
- Du musst nun entweder die IP-Adresse deines ESPuinos im Webbrowser eintragen (nur http, kein https!) oder den konfigurierten Hostname: Hast du ihn z.B. einfach bei
espuino
belassen, so kannst du via http://espuino.local darauf zugreifen (dauert ggf. ein paar Sekunden). Fritzbox-Benutzer können auch http://espuino.fritz.box eingeben oder im Webinterface der Fritzbox die IP-Adresse des ESPuinos raussuchen. Auch in der Konsole von VSC findest du die IP-Adresse. Es ist auf jeden Fall mit extrem großer Wahrscheinlichkeit NICHT die o.g. 192.168.4.1 . - Du kannst den Namen des ESPuinos auch nachträglich über das Webinterface von deinem ESPuino ändern (macht vor allem bei mehreren ESPuinos im gleichen Haushalt absolut Sinn). Du kannst dort auch mehrere WLANs konfigurieren, falls du an verschiedenen Orten WLAN-Konnektivität benötigst. Es wird immer zuerst dasjenige verwendet, das zuletzt funktioniert hat. Klappt das nicht, klappert dein ESPuino alle WLANs nacheinander ab, für die du Zugangsdaten hinterlegt hast.
- Im ESPuino-Webinterface angekommen solltest du, falls du ein LiFePO4-Develboard hast, noch die Spannungen anpassen. Weitere Infos dazu hier: 📗 Hinweise für Nutzer mit einem FePo-Develboard.
- Wir leiten den Füllstand des Akkus indirekt über dessen Spannung ab, was insbesondere bei LiFePO4 nur so bedingt genau ist, da die Entladekurve sehr flach ist. Der ESP32 ist in der Disziplin Spannungsmessung auch kein Präzisionswunder. Dennoch: Sollte dein Akku voll geladen sein und dir dein ESPuino bei der Spannungsmessung melden, dass er trotzdem nicht voll ist, so musst du in der
settings-lolin_d32_pro_sdmmc_pe.h
den ParameteroffsetVoltage
anpassen. Am besten du misst die Akkuspannung mit einem Multimeter und vergleichst es mit dem, was ESPuino dir als Spannung liefert: Die Differenz aus beidem musst du dort korrigieren und entsprechend addieren oder subtrahieren. Hast du kein Multimeter zur Hand, dann musst du Pi mal Daumen empirisch vorgehen Die Spannungsmessung ist dennoch nicht hochpräzise, aber für unsere Zwecke hier sollte es reichen. Die Spannung findest du entweder unter VSC unten in der Konsole (wenn ESPuino angeschlossen ist an den Rechner) oder im Webinterface unter Infos.
Damit sollte dein ESPuino vollständig betriebsbereit sein. Generell gibt es hier massig Anleitungen. Solltest du noch keine Idee für ein Gehäuse haben, so kannst du dich hier vielleicht inspirieren lassen: Gehäuse - ESPuino :: Rfid-controlled musicplayer.
Viel Spaß mit deinem ESPuino!
Fehlersuche
Es geht nicht immer alles glatt. Hier ein paar wenige Fehlerbilder und deren Abhilfe.
- Der Klassiker ist, dass die Schnelleinstellungen nicht beachtet wurden. Kontrolliere penibel, ob du ALLES umgesetzt hast, was dort beschrieben ist.
- Wenn die µSD-Karte nicht gelesen werden kann überlege, ob diese größer als 32 GB ist. Ist das der Fall, so sei darauf hingewiesen, dass µSD-Karten für den ESP32 immer FAT32 formatiert sein müssen. Üblicherweise ist das bei Karten, die man frisch auspackt, nur bis 32 GB der Fall. Karten, die größer sind, sind üblicherweise exFat-formatiert, was vom ESP32 jedoch nicht gelesen werden kann! Bisschen schwierig ist, dass man das Fehlerbild vom ersten Punkt nicht unterscheiden kann, da in beiden Fällen die Fehlermeldung kommt, dass die µSD-Karte nicht gelesen werden kann.
- Miss die Spannung am Ext-Konnektor zwischen Pin 2 oder 4 (switched 3.3 V) und Pin 10 oder 12 oder 14 (GND). Hier sollten, wenn ESPuino gestartet ist, 3,2 bis 3,4 V anliegen. Üblicherweise liegt hier die Spannung bei <= 1V, wenn kein Support für den Port-Expander einkompiliert wurde.
- Miss die Spannung am Ext-Konnektor zwischen Pin 6 oder 8 (3.3 V) und Pin 10 oder 12 oder 14 (GND) bei reinem USB-Betrieb (ohne Akku). Hier sollten stabil 3,3 V ankommen. Ist das nicht der Fall, so ist sehr wahrscheinlich der Festspannungsregler auf dem Develboard defekt. Das kann z.B. durch Kurzschlüsse passieren (Develboard falsch eingesteckt, Polarität bei Neopixelring missachtet…). Problematisch ist, dass es mitunter passiert, dass ein Festspannungsregler, der abraucht, die volle USB-Spannung (5 V) hinten am Ausgang raus haut. Ist das der Fall, so ist das ESP32-Modul ebenfalls defekt. Das hört man auch gerne mal durch Fiepen.
- Wenn der RFID-Reader nicht funktioniert, so kontrolliere einerseits, ob der passende Support (RC522 bzw PN5180) einkompiliert ist. Andererseits, ob auf der Rückseite der mini4L JP1 gelötet ist (1+2 oder 2+3). Ist Letztgenanntes nicht der Fall, so wird das Modul nicht ausreichend mit Spannung versorgt.
- Stürzt der ESPuino ab, wenn du am Drehencoder drehst, so hast du ihn vermutlich am i2c-Anschluss und nicht am Drehencoder-Anschluss angeschlossen. Korrigieren!
- Passiert beim Drehen am Drehencoder nichts, so hast du ggf. vergessen, unten auf der mini4L die Lötjumper JP2 und JP3 zu setzen.
- Hast du einen PN5180 und möchtest gerne das LPCD-Feature nutzen, so sind mehrere Dinge zu beachten. Erstens muss
PN5180_ENABLE_LPCD
(settings.h) aktiviert sein. Zusätzlich muss sich auf dem PN5180 mind. die Firmware 4.1 befinden und weiterhin muss auf der Rückseite der Lötjumper JP1 auf 2+3 gejumpert sein. - Wurde dein Problem hier nicht behandelt, dann benutze bitte die Suchfunktion des Forums - vielleicht findest du dort was. Ansonsten öffne bitte einen neuen Diskussionsfaden.