Oft gestellte Fragen (FAQ)

Wo ist der Quellcode zu finden?

In meinem Repository auf Github. Die Dokumentation ist Englisch.

Was sind die Unterschiede zwischen ESPuino und Tonuino?

Dazu existiert hier ein längerer Artikel.

Die Fehlermeldung „SD could not be mounted“ wird angezeigt. Was mache ich falsch?

Dies ist mit Abstand die meistgestellte Frage. Dies kann mehrere Ursachen haben.

  1. Die kompilierten Einstellungen passen nicht zum Layout der Platine oder zum Versuchsaufbau.
  2. Sind alle Anschlüsse vorhanden?
  3. Es wurden Jumperwires verwendet. Das ist grundsätzlich in Ordnung, aber dies kann durch mangelhafte Kontaktierung zu Problemen führen. Auf jeden Fall sollte man schauen, dass die Jumperwires möglichst kurz sind. Besser ist es jedoch alles aufzlöten, um eine bessere Kontaktierung zu gewährleisten.
  4. Wurde das Flag SD_MMC_1BIT_MODE aktiviert, so ist zu beachten, dass andere GPIOs (2, 14, 15) verwendet werden, die auch nicht änderbar/konfigurierbar sind.

Wie funktioniert der ESPuino generell?

Es kommt keine Musik aus dem Lautsprecher

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

Ist es unbedingt notwendig Platformio anstelle der Arduino-IDE zu verwenden?

Nein, ist es nicht. Aber da das gesamte Projekt als Platformio-Projekt exportiert ist und da Platformio z.B. auch automatische abhängige Bibliotheken lädt, empfehle ich, es zu nutzen. Es hat auch GIT-Funktionalität direkt integriert, wodurch man recht einfach den Code vom öffentlichen Repository lokal aktuell halten kann. Tipp: Noch praktischer wird GIT, wenn man in Visual Studio Code das Plugin Gitlens installiert. Hier gibt es auch noch weitere Infos dazu.

Ich habe den ESPuino geflasht aber finde ihn nicht im WLAN. Was mache ich falsch?

Bitte das hier lesen: 📗 Der erste Start deines ESPuino.

Kann ich auch die GPIO-Konfiguration beliebig auf meine Bedürfnisse anpassen?

Im Prinzip ja. Man muss allerdings aufpassen, denn manche GPIOs haben auch weitere (interne) Zwecke. Da kann es dann durchaus mal zu Problemen kommen. GPIO 0 ist z.B. ein solcher Kandidat. GPIO 2 darf zum Flashen nicht auf HIGH gezogen werden, sonst geht der ESP32 nicht in den Flashmodus (vor allem für SD_MMC ist das wichtig zu wissen). Weiterhin sind die GPIOs >= 34 eigentlich nur GPIs. D.h. sie können nur als Eingänge benutzt werden und zudem besitzen sie keine internen PullUp-Widerstände. D.h. will man dort Taster dranhängen, dann benötigen diese externe PullUp-Widerstände mit 10k Ohm auf 3,3 V. Fehlen diese, dann „floatet“ der Eingang und es werden unkontrolliert Events ausgelöst.
Am besten mal einen Blick auf folgende Infoseite werfen: ESP32 Pinout Reference: Which GPIO pins should you use? | Random Nerd Tutorials

Wozu ist der Hostname gut?

Will man nen ESPuino konfigurieren, so geschieht dies über die WebGUI. Menschen sind nicht sonderlich gut darin, sich IP-Adressen zu merken. Deshalb hantieren wir im Alltag beim Webbrowsing auch mit sprechenden Namen. Der Hostname ist so einer. Wurde keim Kompilieren das Flag MDNS_ENABLE aktiviert (was ich empfehlen würde!), so ist der ESPuino über diesen künftig erreichbar. D.h. wurde als Hostname beispielsweise ‚espuino‘ konfiguriert, so ist er künftig über ‚espuino.local‘ erreichbar. Die Erreichbarkeit über die normale IP-Adresse ist natürlich weiterhin gegeben. Welche IP das ist, wird in der seriellen Konsole angezeigt. Benutzer einer Fritzbox können auch über .fritz.box zugreifen; also zum Beispiel ‚espuino.fritz.box‘.

Kann auch eine statische IP vergeben werden?

Normalerweise sorgen Router dafür, dass Geräten immer die gleiche IP-Adresse zugewiesen wird. Ein Router macht sich hier zunutze, dass Netzwerk-Geräte eindeutige MAC-Adressen besitzen und diese Geräte so wiedererkannt werden können. Mir wurde berichtet, dass z.B. Speedports, die die Telekom vertreibt, diese IP-Adressen manchmal ändert. Man kann dies adressieren, indem man sich am besten die Sektion ‚Wozu ist der Hostname gut?‘ durchliest. Oder man kann auch eine statische Konfiguration vornehmen, wobei IP-Adresse, Netzmaske und Gateway zu konfigurieren sind. Der ESPuino bekommt nun keine IP mehr zugewiesen sondern bestimmt selbst eine. Achtung: Kein Mechanismus hindert einen daran, hier falsche Sachen zu konfigurieren. Im Zweifelsfalle ist der ESPuino dann per WLAN nicht erreichbar, obwohl er sich ins WLAN eingebucht hat.

Ist WLAN unbedingt notwendig?

Jein. Benötigt wird es mindestens zum Einrichten der Grundeinstellungen und der RFID-Zuweisungen. Zwangsläufig benötigt wird es natürlich auch, wenn man Webradio hören möchte oder man die Steuerung via MQTT nutzen möchte. Abseits dessen kann man das WLAN jedoch auch abschalten (Vorheriger-Titel-Taste + Nächster-Titel-Taste parallel drücken). Mit dieser Tastenkombination kann man im laufenden Betrieb das WLAN beliebig an oder ausschalten. Auch über den nächsten Neustart hinaus wird sich der ESPuino das merken. Frage: Hältst du es für sinnvoll, dieses nur sagen wir mal in der ersten Minute nach dem Neustart zu können, weil Kinder gerne an den Tasten rumspielen? Lass’ es mich wissen!

Welche Möglichkeiten gibt es, Daten auf die SD-Karte zu kriegen?

Grundsätzlich kann man sie natürlich in den Rechner stecken und Daten aufspielen - das ist mit Abstand die schnellste Variante und macht insbesondere am Anfang Sinn. Wenn jedoch mal alles zusammengebaut ist, hat man u.U. wenig Lust, die SD-Karte auszubauen. Man kann dann die Daten über FTP-Upload oder HTTP-Upload hochladen. Für den FTP-Upload muss man zuerst den FTP-Dienst aktivieren. Hierfür muss man einer Taste oder einer Tastenkombination in settings.h die Aktion ENABLE_FTP_SERVER zuweisen. Per Default sind das Pause/Play-Taste + Nächster-Titel-Taste, die man kurz parallel drücken muss. Hinweis: Paralleles Abspielen von Musik sollte man unterlassen, da es den Upload ziemlich ausbremst. Wie schnell ein Upload ist, hängt maßgeblich davon ab, ob die SD-Karte per SPI oder SD_MMC angebunden ist.

Wird Batteriebetrieb unterstützt?

Ja. Wie dies im Einzelnen umzusetzen ist, hängt jedoch vom eingesetzten Develboard des ESP32 ab. Am einfachsten hat man es, wenn man ein Develboard besitzt, das eine integrierte Ladeschaltung hat. Für LiPo-Akkus ist das z.B. bei den Boards Lolin32, Lolin D32 und Lolin D32 pro der Fall. Auf jeden Fall unterstützt ESPuino den Batteriemodus in verschiedener Hinsicht (Messung der Spannung, Visualisierung per Neopixel und publizieren der Spannung per MQTT). Man kann natürlich auch einfach extern eine Powerbank anschließen an USB, aber damit habe ich selbst keine Erfahrung. Weiß jedoch, dass die Powerbank abschaltet, wenn die Last (im Deepsleep) zu niedrig ist. Man muss sie dann wieder „aufwecken“, damit der ESPuino starten kann.

Welche Hardware wird unterstützt bzw. empfohlen?

Bitte das lesen: 📗 Welche Hardware nutzen? (Develboard, RFID, SD)

Kann die Änderung der Lautstärke auch über Tasten anstelle Drehencoder erfolgen?

Ja. Dafür müssen in settings.h die Aktionen CMD_VOLUMEUP bzw. CMD_VOLUMEDOWN den gewünschten Tasten zugewiesen werden. Es ist allerdings aktuell nicht möglich, durch längeren Tastendruck die Lautstärke mit einem Drücken um mehrere Einheiten zu erhöhen oder zu verringern. An dieser Stelle sei dieser Artikel empfohlen: 📗 Das dynamische Button-Layout

Ich habe Probleme mit dem FTP-Dienst

Zuerst mal muss der FTP-Dienst nach jedem neuen Bootvorgang erst aktiviert werden. Grund dafür ist, dass es Speicher spart, wenn er nicht benötigt wird (was ja normalerweise der Fall ist). Die Zugangsdaten lassen sich über die WebGUI konfigurieren. Als FTP-Client wird Filezilla empfohlen (kostenlos und für Windows, Mac OS und Linux Verfügbar). Es ist darauf zu achten, dass nur eine Verbindung gleichzeitig aufgebaut wird!


Und der Zeichnsatz muss CP437 sein:

Kann ich auch zwei Lautsprecher anschließen?

Klar. Beispielsweise der MAX98357a wird per i2s angeschlossen. Hängt man auf den i2s-Bus noch einen zweiten MAX98357a, so kann man dort ebenfalls einen Lautsprecher anschließen. Die DACs werden also einfach auf den i2s-Bus parallel angeschlossen. Sogar im laufenden Betrieb kann man noch einen dazuhängen; das Protokoll scheint recht robust zu sein.

Welche Playmodi werden unterstützt?

Wie schnell ist die Übertragung per FTP oder HTTP auf die Karte?

Hängt u.a. davon ab, ob die SD-Karte per SPI oder SD_MMC angebunden ist. Hier eine Messung mit einer Datei, die 70,7 MiB groß ist:

SD_MMC:
FTP (up): 3:57min => 298 kiB/s
FTP (down): 3:45 => 314 kiB/s
HTTP: 3:10min => 372 kiB/s

SPI:
FTP (up): 6:38 => 178 kiB/s
FTP (down): 5:38 => 208 kiB/s
HTTP: 6:24min => 184 kiB/s

Braucht man den Neopixel unbedingt?

Nein aber es ist zu empfehlen, da er sehr viele Informationen visuell darstellt. Weitere Infos hier: https://forum.espuino.de/t/was-zeigt-der-neopixel-des-espuino-alles-an.

Kann man bei GIT sehen, welche Änderungen wann gemacht wurden?

Aber klar :slight_smile: Am besten mal hier schauen: How To List Commit History with Git Log Command with Examples? – POFTUT

Es dauert lange, bis die Musik anfängt zu spielen. Was kann ich tun?

Nun grundsätzlich gibt es zwei Faktoren, die das begünstigen

  • Es befinden sich viele Dateien in einem Ordner und sie gehören alle zur Playlist. Je mehr Dateien zu einer Playlist gehören, desto länger dauert es.
  • Der ESPuino spielt parallel bereits etwas ab. Ist das der Fall, so ist der mit dem Dekodieren beschäftigt, was den Prozess der Playlist-Generierung verlangsamt.

Es gibt jedoch Abhilfe dafür, die hier beschrieben ist.

Auch wurde schon berichtet, dass ein spezielles Tool Besserung schaffen soll: Verzögerung nach Auflegen des Tags mit vielen Hörspielen

Mein ESPuino stürzt ab. Was fange ich mit der Fehlerneldung an?

Wenn ein Mikrocontroller sich aufgrund eines Softwarefehlers neu startet, sieht die Ausgabe oft hinreichend kryptisch aus. Was jedoch mitgeliefert wird ist ein Backtrace. Hieraus kann man einen Stacktrace dekodieren, den man auch lesen kann. Dafür muss man den Stacktrace-Dekoder in der Arduino-IDE installieren (eine direkte Einsatzmöglichkeit in Platformio ist mir leider nicht bekannt). Im Anschluss geht man in Platformatio ins Projektverzeichnis von ESPuino und dort in das Unterverzeichnis .pio/build/. Dort findet man eine Datei namens firmware.elf. Diese und auch der Backtrace werden als Eingaben im Stacktrace-Dekoder in der Arduino-IDE benötigt. Im Anschluss erhält man einen Stacktrace, mit dem man wesentlich mehr anfangen kann :slight_smile:

Die Anzahl der GPIOs reicht nicht. Wird ein Port-Expander unterstützt?

Ja. Weitere Infos siehe hier: 📗 Einsatz des Port-Expanders PCA9555

Wo werden die Konfigurationseinstellungen gespeichert?

Alle Dinge, die über die WebGUI konfiguriert werden (WLAN-Zugangsdaten, Hostname, Lautstärke, Passwörter etc pp) werden im sog. NVS des ESP32 gespeichert. Das NVS ist ein Teil des Flash-Speichers, der je nach verwendetem ESP32-Chip (WROOM, WROVER, ESP32-A1S) 4 oder 16 MB groß ist. Dieser Speicher wird in Partitionen unterteilt - die NVS-Partition ist eine solche. Welches Partitions-Layout verwendet wird, wird in platformio.ini über den Parameter board_build.partitions konfiguriert. Wichtig an der Stelle zu wissen: Wird das Konfigurations-Profil hier geändert, so wird dadurch der Inhalt des NVS überschrieben. D.h. alle Konfigurationen sind neu vorzunehmen - inklusive WLAN. Für die Zuweisungen zwischen RFID und Hörbüchern/Musik gibt es jedoch einen Backup/Restore-Mechanismus: 📗 Die Backupfunktion des ESPuino.

Was ist eine cached Playlist?

Dazu gibt es hier weitere Infos: Neues Feature: Cached-Playlist

Funktionieren bei Webradio auch https-Streams?

Grundsätzlich ja. Aber bitte Folgendes bedenken.

mDNS funktioniert auf einem Android-Handy nicht. Was kann ich tun?

Bitte das hier beachten: mDNS Problem

2 „Gefällt mir“