📗 Oft gestellte Fragen (FAQ)

Wo finden sich Impressum und Datenschutzerklärung?

Diese finden sich hier: Impressum & Datenschutzerklärung.

Gibt es ein spezielles Dokument für Einsteiger?

Ja, schau am besten mal hier vorbei: 📗 Kleiner Leitfaden für Einsteiger.

Wo ist der Quellcode von ESPuino zu finden?

In meinem Repository auf Github. Die Dokumentation dort ist Englisch. Auch wichtig: 📗 ESPuino in Platformio anlegen und mit git aktuell halten.

Aus welchen Bauteilen besteht ein ESPuino?

Hängt ein bisschen von der verwendeten Hardware ab, aber standardmäßig besteht er aus:

  • 1x Basisplatine mit Sockel
  • 1x ESP32-Develboard mit WROVER-Modul (z.B. ESP32-Develboard "D32 pro LiFePO4")
  • 1x RFID-Reader (RC522 oder PN5180)
  • 1x Lautsprecher (zwei Stück sind auch möglich)
  • 1x SD-Karte (FAT32-formatiert!)
  • 1x Kopfhörerplatine (optional)
  • 1x Neopixelring (optional, jdeochdringend empfohlen; muss auch kein Ring sein)
  • 1x Drehencoder (optional)
  • 3x Taster (optional, 0 bis 5 sind möglich)
  • 1x Akku (LiFePO4 oder LiPo)
  • 1x Gehäuse

Gibt es einen ESPuino fertig zu kaufen?

Nein. Es ist immer „Handarbeit“ notwendig - das gehört auch einfach zu ESPuino dazu. Aber es existieren eine Reihe von Platinen, die einem das Leben erheblich leichter machen: PCBs - ESPuino :: Rfid-controlled musicplayer. An dieser Stelle sei insbesondere Folgende erwähnt, da sie mit vergleichsweise wenig Aufwand viel kompakter Bauweise viel bietet: ESPuino-mini 4Layer. Du kannst sie in teilgelötet und komplett fertig gelötet von mir erhalten. Schau dich am besten auf der verlinkten Seite um, dort ist alles beschrieben.

Welches Betriebssystem benötigt der Computer?

Grundsätzlich benötigt man erstmal Visual Studio Code mit Platformio als Plugin oder auch 📗 Einrichtung von Visual Studio Code mit Platformio. Das gibt es für Windows, Linux und Mac OS. Man benötigt jedoch auch git und python, was je nach System, zusätzlichen Installationsaufwand mit sich bringt.

Wie funktioniert der ESPuino generell? Wo ist das dokumentiert?

Allgemein: Anleitungen - ESPuino :: Rfid-controlled musicplayer
Im Speziellen: 📗 ESPuino im Regelbetrieb und 📗 Die Playmodi des ESPuino.

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. Oft liegt es daran, dass SD_MMC gewünscht ist, jedoch SPI einkompiliert wurde => Settings-Dateien erneut überprüfen!
  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.
  5. Ist der GPIO für POWER richtig eingestellt? Muss ggf. INVERT_POWER gesetzt werden?

Was kann man tun, wenn der ESP32 nicht in den Flashmodus geht?

Ich schicke hier keine Boards raus, die ich nicht selbst mind. einmal geflasht habe. Aber speziell unter Windows scheint es wohl zuweilen Probleme zu geben…

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?

Ja, aber es gibt Dokumentation dazu:
📗 Einrichtung von Visual Studio Code mit Platformio.
📗 ESPuino in Platformio anlegen und mit git aktuell halten.

Ich kann den ESP32 nicht mehr flashen. Was kann ich tun?

Kann mitunter vorkommen - scheint es ESP32-Bug zu sein. Weitere Infos hier: ESP32 lässt sich nicht mehr flashen.

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. Weitere Infos: 📗 Die GPIOs des ESP32: Welche eignen sich für was?.

Wozu ist der Hostname gut, den man beim Einrichten von ESPuino in der WebGUI konfigurieren kann?

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 (beispielsweise über eine Modifikationskarte oder auch über eine Button-Konfiguration). Über den gleichen Weg kann man es auch wieder einschalten. Auch über den nächsten Neustart hinaus wird sich der ESPuino das merken.

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 man für gewöhnlich große Datenmengen aufspielen will. 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 LiFePO4-Akkus ist dies ESP32-Develboard "D32 pro LiFePO4". Für LiPo-Akkus ist das z.B. bei den Boards E32 oder 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. Ich lese jedoch immer wieder, 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, Akku). Empfehlen würde ich ESPuino-mini 4Layer in Kombination mit ESP32-Develboard "D32 pro LiFePO4". Mit dem Wechsel auf Arduino2 wird auf jeden Fall ein ESP32 mit PSRAM zwingend benötigt; dies ist nur bei ESP32-WROVER der Fall.

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.

Mit wievielen Tasten wird ESPuino betrieben?

Das kann man sich im Prinzip aussuchen. Das von mir vorgesehene Standard-Layout hat drei Tasten und einen Drehencoder. Maximal kann man einen Drehencoder und fünf Tasten verwenden. Würde man es in die andere Richtung „auf die Spitze treiben“, dann könnte man die Tasten weglassen und deren Aktionen über Modifikationskarten bewerkstelligen: Neue Modifikationskartentypen. Die kurze Antwort lautet also: Mit null und bis zu fünf Tasten.

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 (ein MAX98357a ist ein DAC mit integriertem Verstärker) 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. Beim MAX98357a muss man jedoch beachten, dass man den SD-Pin jeweils mit passender Spannung versorgen muss, damit ein MAX den linken Kanal und einer den rechten Kanal spielt: Stereo-Ausgabe. Folgendes Board unterstützt dies nativ: ESPuino-mini 4Layer.

Welche Playmodi werden unterstützt?

📗 Die Playmodi des ESPuino. An dieser Stelle sei zur Vollständigkeit erwähnt, dass nur Hörspiel-Playmodi die letzte Abspielposition speichern und beim erneuten Start wieder auslesen.

Wie schnell ist die Übertragung per WLAN auf die SD-Karte?

Ist nicht so einfach zu beantworten und hängt mäßgeblich vom heimischen WLAN, dem Softwarestand und davon ab, ob die SD-Karte per SPI oder SDMMC angebunden ist. Von mir entwickelte Boards haben lediglich in der Anfangszeit von ESPuino SPI hierfür benutzt. Insofern darf SDMMC als „der ESPuino-Standard“ angesehen werden.
Seit dem Wechsel auf ESP32-Arduino2 kann man von ca. 500 bis zu 700 kB/s bei SDMMC und zwischen 300 und 350 kB/s bei SPI ausgegangen werden.

Braucht man den Neopixel unbedingt?

Nein, aber es ist zu empfehlen, da er sehr viele Informationen visuell darstellt werden und ohne ihn weitrechende Feedback-Mechanismen fehlen. Grundsätzlich ist mir die Problematik des Neopixels natürlich bewusst: Es ist vergleichsweise schwer, ihn in ein Gehäuse zu integrieren. Zumal man ihn eigentlich auch nicht komplett sehen möchte, da er so hübsch nun auch wieder nicht ist. Weitere Wege wären jedoch, mehrere WS2812b-LEDs als Streifen zu verwenden oder eben nur eine einzelne WS2812b-LED. Bei einem Streifen würde ich empfehlen eine LED-Anzahl zu wählen, die durch vier teilbar ist, da die Animationen des ESPuino ein Stück weit darauf ausgerichtet sind.
Weitere Infos und Tipps hier:
https://forum.espuino.de/t/was-zeigt-der-neopixel-des-espuino-alles-an.
Wie einen Neopixel ins Gehäuse integrieren?.

Kann man bei GIT sehen, welche Änderungen am ESPuino-Code wann gemacht wurden?

Aber klar :slight_smile: Am besten mal hier schauen: https://www.poftut.com/how-to-list-commit-history-with-git-log-command-with-examples/.

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 für die neue Playlist verlangsamt.

Es gibt jedoch Abhilfe dafür, die hier beschrieben ist. Im Zuge von ESP32-Arduino2 wurden jedoch zahlreiche Verbesserungen vorgenommen, so dass Caching nicht mehr notwendig ist. Mit dem Wechsel auf Arduino2 wird kein Caching mehr benötigt und das Ganze sollte kein Problem mehr sein.

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 Fehlermeldung 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 In der platformio.ini folgende Zeile gesetzt werden (was standardmäßig auch der Fall ist):

monitor_filters = esp32_exception_decoder

Alternativ den Stacktrace-Dekoder in der Arduino-IDE installieren. 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. Zuletzt 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. Hier wird er z.B. auch verwendet: ESPuino-mini 4Layer. Es wird ausschließlich der PCA9555 unterstützt.

Wo werden Konfigurationseinstellungen gespeichert?

Alle Dinge, die über die WebGUI konfiguriert werden (WLAN-Zugangsdaten, Hostname, Lautstärke, RFID-Zuweisungen, Passwörter, Spannungslevel 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 8 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 ggf. 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.

Funktionieren bei Webradio auch https-Streams?

Grundsätzlich ja. Aber bitte Folgendes bedenken. Kurz gesagt: Wann immer möglich, bitte auf https verzichten und stattdessen http verwenden.
Tipp: Solltest du einen Link mit https vorliegen haben, so teste einfach aus, ob das Streaming auch funktioniert, wenn du http anstelle von https verwendest.

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

Bitte das hier beachten: mDNS Problem

Ich kann nicht löten. Wie lerne ich das?

Hier gibt es zahlreiche Infos: 📗 (SMD-)Löten. Ansonsten gibt es auf YouTube Videos dazu in Hülle und Fülle. Man muss allerdings kein SMD löten können, um einen ESPuino zu betreiben. „Normales“ Löten reicht :slight_smile:.

Werden auch Speicherkarten mit 64 GB unterstützt?

Ja, werden sie. Allerdings müssen diese mit dem Dateisystem FAT32 formatiert sein und das sind sie üblicherweise ab Werk nicht. Man muss diese Karten also umformatieren. Diskussion dazu: Werden 64 Gb SD Karten unterstützt? - #5 von biologist. Mitunter wurden jedoch auch schon Probleme mit 64 GB-Karten gemeldet, so dass ich eher empfehlen würde, eine mit 32 GB zu verwenden. Es wurde allerdings auch schon berichtet, dass auch 256 GB-Karten funktionieren.

Was mache ich, wenn gar nichts mehr geht?

Möglicherweise hilft es, ein Flash Erase mittels Platformio durchzuführen. Hinweis dazu: Sämtliche Einstellungen (WLAN-Zugangsdaten z.B.) sind danach weg und es müssen auch alle RFID-Karten neu angelernt werden. Letztgenanntes kann man jedoch „beschleunigen“, wenn man backup.txt aus dem Hauptverzeichnis der SD-Karte importiert.
Einem anderen Benutzer hat das Löschen auf jeden Fall geholfen.

Wie kann ich die Drehrichtung des Drehencoders umkehren?

Dies ist hier beschrieben: 📗 Drehrichtung des Drehencoders umkehren.

Kann man die Audio-Puffergröße beeinflussen?

Ja, kann man: Buffersize kann nun konfiguriert werden.

Was ist LPCD?

Der Zugriff auf den seriellen Port funktioniert nicht

Unter Windows muss ggf. erst der Treiber für CH340 installiert werden. Anschließend sollte das Develboard, wenn es bei USB angeschlossen ist, auch im Gerätemanager erscheinen.
Bei Mac OS und Linux sind standardmäßig Treiber vorhanden, jedoch kann es unter Linux neuerdings Probleme geben, dass der serielle Port kurz eingerichtet ist und dann wieder verschwindet. Weitere Infos: Serial Port verschwindet unter Linux.

Kann man ESPuino auch mit einer Powerbank betreiben?

Die meisten Leute werden den Akku direkt an das ESP32-Develboard anschließen wollen, aber auch eine Powerbank ist möglich. Es gibt dabei jedoch das Problem, dass der ESP32 im Deepsleep so wenig Strom zieht, dass die Powerbank sich abschaltet. Und diese muss man dann erstmal wieder aufwecken. Hier ist ein Lösungsvorschlag: Powerbank aufwecken.

Ich habe mich im Bluetooth-Modus „eingesperrt“ - was kann ich tun?

Um den BT-Modus zu erreichen, muss man eine Aktion vom Typ „Modifikation“ auslösen. Im Normalfall ist dies eine RFID-Karte, es ist jedoch auch möglich, diese über das Webinterface oder MQTT auszulösen. Das Problem ist nun, dass sich der ESP32 den aktivierten BT-Modus merkt (über Neustarts hinweg) und wenn man keine RFID-Karte für BT-Modus angelernt hat, dann kommt man aus diesem Modus eigentlich nur noch raus, indem man „Flash Erase“ in Platformio ausführt.
Da das mehreren Leuten passiert ist, haben wir einen „Notausgang“ geschaffen: Legt man im aktiven BT-Modus eine RFID-Karte auf, die der ESP32 nicht kennt (sie wurde noch nicht angelernt), so wechselt ESPuino sofort in den normalen Modus zurück.

Gibt es eine Liste mit Links zu Inhalten für Kinder?

Das Flashen funktioniert nicht, was kann ich tun?

Leider gibt es speziell unter Windows immer wieder Probleme. Vielleicht hilft das hier oder das.

Ich benutze ein Board mit Port-Expander: Ist es möglich, dass nicht alle Tasten den ESPuino aufwecken?

Ja, mit einem Workaround geht dies: Aufwecken nur über Drehencoder.

Mein Develboard ist defekt nach einem Kurzschluss. Kann man es reparieren?

Kommt drauf an. Ich habe dazu mal eine längere „Abhandlung“ geschrieben: Verbindungsfehler nach Anschlussfehler - #2 von biologist.

6 „Gefällt mir“