đź“— Kleiner Leitfaden fĂĽr Einsteiger

Du bist neu hier? Herzlich willkommen!
Um mehr über ESPuino zu erfahren schlage ich vor, dass du hier stöberst, denn dort habe ich sämtliche Dokumentation zu ESPuino hinterlegt.
Eine FAQ gibt es hier: đź“— Oft gestellte Fragen (FAQ)

Aber ich verstehe, dass so viel Dokumentation erschlagend ist und du erstmal einen Einstieg brauchst. Daher nachfolgend ein paar einleitende Worte, die dir den Einstieg in ESPuino hoffentlich etwas erleichtern.

Zuerst ist es wichtig zu wissen, aus was ein ESPuino besteht:

  • Mikrocontroller ESP32
  • SD-Modul samt micro SD-Karte
  • Digital/Analog-Converter (DAC)
  • Verstärker
  • RFID-Modul
  • LED-Ring („Neopixel“)
  • Taster
  • Drehencoder

Ein Mikrocontroller, nachfolgend geht es auschließlich um den ESP32 der chinesischen Firma Espressif, stellt an seine Umgebung einige Anforderungen, die speziell am Anfang nicht so einfach zu überblicken sind. Auch um sie zu löten braucht es etwas Erfahrung. Arduino (als Plattform) hat sie, die Mikrocontroller, sowohl in Software, aber auch in Hardware, wesentlich „nahbarer“ gemacht. Und so kommt es, dass man sie seit Jahren „gut und handlich verpackt“ auf sog. Develboards kaufen kann. Mit dabei ist dann üblicherweise ein USB/seriell-Konverter (z.B. CH340), so dass man die Mikrocontroller problemlos per USB programmieren kann. Weiterhin ein Festspannungsregler (z.B. ME6211 oder AMS1117), der aus den an USB üblichen 5 V die für den ESP32 notwendigen 3.3 V macht. Auch findet man Reset-Buttons und auf den besseren Develboards (beispielsweise Wemos Lolin D32 oder Lolin D32 pro) auch einen Laderegler für LiPo-Akkus. D.h. man hat auch gleich die Möglichkeit, das Ganze im Akkumodus zu betreiben und auch zu laden. Den ESP32 gibt es ganz grob unterteilt in zwei Varianten: WROOM und WROVER und mit unterschiedlich viel Flash-Speicher (4, 8 und 16 MB). Bei den Develboards dominieren hauptsächlich die günstigeren WROOM mit 4 MB Flashspeicher.

Der ESP32 dekodiert Audiostreams in Software und verwendet hierfür die freie Library ESP32-audioI2S. Als Quellen sind hierbei SD und Webradio zu nennen. Aber auch Bluetooth ist möglich, so dass man z.B. per Handy, Tablet oder Laptop auf den ESPuino streamen kann. Nachdem der ESP32 das Ganze verarbeitet hat, gibt er das Signal über den digitalen Bus i2s aus. So kann man natürlich damit noch nichts anfangen, daher braucht man einen Digital/Analog-Converter (DAC) für Audio, damit daraus ein analoges Signal wird. Zum Schluss muss das Signal noch verstärkt werden. Standardmäßig verwendet ESPuino als DAC+Verstärker einen einzigen Baustein, der beides zusammen macht: MAX98357a. Auch für diesen kann man kleine Breakout-Boards kaufen, so dass es nicht notwendig ist, SMD zu löten. Kaufen kann man diese beispielsweise von Adafruit. Oder aber auch direkt in China ohne Herstellerangabe, jedoch im gleichen Formformat und günstiger.

Nun will man das Ganze auch noch steuern können. Das macht man einerseits über RFID-Karten, für die man entsprechend im ESP32 eine Zuordnung über ESPuinos WebGUI anlernt. D.h. jede RFID-Karte besitzt eine fest einprogrammierte interne ID und diese ID wird mit einer Aktion verknpüft. Das wird einmalig über eine WebGUI gemacht und ist nachträglich natürlich (bei Bedarf) änderbar. Jedes Mal, wenn diese Karte wieder aufliegt, erinnert sich ESPuino wieder an diese Aktion und führt sie aus. Und klar: Um eine RFID-Karte lesen zu können, braucht man natürlich einen entsprechenden Kartenleser. ESPuino verwendet RC522 oder PN5180.
Zusätzlich benötigt man jedoch auch Taster und ggf. einen Drehencoder, über die man z.B. zum nächsten/vorherigen Titel springen kann oder auch lauter und leiser stellen kann. Die Anzahl der Taster kann man von 0 bis 5 frei wählen (der integrierte Taster des Drehencoders kommt noch dazu) und auch zahlreiche Aktionen beliebig zuweisen.

Zum Schluss gibt es noch einen LED-Ring (Neopixel-Ring), der dem ESPuino-Benutzer ein optisches Feedback gibt. Hier sieht man beispielsweise, wie laut die Audioausgabe ist: D.h. leuchten 50% der LEDs, dann liegt die Lautstärke bei 50% der Maximallautstärke. Oder man sieht, wie weit ein Titel schon gelaufen ist, ob der ESPuino beschäftigt ist oder auch, ob eine angefragte Aktion abgelehnt wurde und VIELES VIELES mehr. Dieser LED-Ring ist zwar grundsätzlich optional, aber da er viele Informationen transportiert, ist er nicht einfach nur Mäusekino, sondern aus meiner Sicht unabdingbar.

Was macht ESPuino einzigartig?

Das Konzept über RFID-Karten einen Musikplayer zu steuern ist nicht neu. Im Sinne von Open Source gibt es hier z.B. TonUINO - darüber habe ich mal einen Vergleichsartikel geschrieben. Es gibt jedoch auch so etwas wie Phoniebox, das auf einem Raspberry Pi basiert und damit extrem leistungsfähig ist (Spotify etc pp). Nachteil ist hier die vergleichsweise lange Bootzeit und der für Akkuzwecke doch recht hohe Stromverbrauch. In diese Lücke stößt nun ESPuino: Es bringt Netzwerk-Konnektivität in Form von WLAN mit sich, welches Features wie Webradio, Bedienung per Web-Schnittstelle und MQTT ermöglicht - dies jedoch gleichzeitig gepaart mit wenig Strombedarf, kurzer Bootzeit und geringeren Kosten.

Wie geht es nun weiter?

Nun, es stellt sich erstmal die Frage, welche Hardware du verwenden möchtest. 📗 Welche Hardware nutzen? (Develboard, RFID, SD) gibt dir einen grundsätzlichen Überblick über die Möglichkeiten. Speziell in Deutschland ist der erste Kontaktpunkt mit dem ESP32 häufig ein Develboard von AZ-Delivery. Grundsätzlich ist das in Ordnung und funktioniert, es eignet sich jedoch für Batteriebetrieb nicht sonderlich gut (weil es dafür keinen Anschluss hat und dessen Festspannungsregler für Batteriebetrieb auch etwas ineffizient ist). Wenn du nicht gerade schon ein solches Develboard besitzt und es deshalb, aus naheliegenden Gründen, unbedingt verwenden möchtest, dann würde ich dir an dieser Stelle empfehlen, einen Wemos Lolin D32 bzw. D32 pro zu nutzen. Beide sind kompatibel mit dem Board, das ich auch weiter unten noch beschreibe.

Wie baue ich den ESPuino auf? Gibt es einen Schaltplan?

Also zuerst mal gibt es nicht DEN ESPuino und insofern gibt es auch unterschiedliche Schaltpläne. So gibt es für das zuvor genannte Develboard von AZ-Delivery z.B. diesen Schaltplan. Dort siehst du die ganzen Zuordnungen zu den einzelnen GPIOs. In Grenzen kann man sich die GPIOs nach seinen Bedürfnissen anpassen. Welche Hardware du im Einzelnen benötigst und was sonst noch so zu beachten sind, findest du hier: AZ Delivery ESP32 NodeMCU / Devkit C mit SD_MMC und PN5180 als RFID-Leser.
Die Frage ist nun, wie man sowas aufbaut. Hier hat man drei Möglichkeiten.

  1. Man verwendet ein Breadboard und Jumper Wires. Damit kann man sich alles zusammenstecken (gemäß dem Schaltplan) und dann wird es normalerweise mehr oder weniger gut laufen. Problem ist, dass dieser Aufbau nicht sonderlich haltbar und die Zuverlässigkeit gefühlt von der Tagesform abhängig ist :slight_smile:. Kurzum: Von dieser Variante würde ich ganz klar abraten, da sie fehleranfällig ist.
  2. Man lötet alles auf Lochrasterplatinen auf. Spricht grundsätzlich nix dagegegen. Aber es ist halt viel Arbeit und ggf. wird es relativ groß, da man auf die Rasterung angewiesen ist.
  3. Man verwendet verwendet speziell für den ESPuino entwickelte Platinen, sog. PCBs. Mit einer Software wie z.B. KiCad kann man so etwas entwickeln, aber das brauchst du gar nicht. Es gibt hier im Forum eine eigene PCB-Sektion, in der verschiedene solcher PCBs beschrieben sind. Meine eigenen beschreibe ich immer sehr detailiert und supporte sie auch. Hervorheben möchte ich an dieser Stelle jedoch diesen und diesen. Erstgenannter ist von den Develboard-PCBs am weitesten entwickelt + am kompaktesten und kann von mir bezogen werden; wahlweise auch teilgelötet (nur SMD) oder komplett gelötet. Vom zweiten Board sind in meinem Github-Repository auch die Gerberfiles online. Mit diesen kannst du dir deine Platinen auch selbst bestellen - beispielsweise bei jlcpbc.com. So oder so: Die PCB-Variante ist auf jeden Fall am komfortabelsten.

Geht das auch einfacher?

Mich erreichen immer wieder Anfragen von Leuten, die gerne nicht so viel löten möchten (und SMD-löten eh gar nicht, hehe). Kein Problem! Ich biete daher an, z.B. ESPuino-miniD32(pro): Lolin D32/D32 pro mit SD_MMC und Port-Expander (SMD) auch komplett zu löten (natürlich inkl. Funktionstest). Eine solche Platine ist dann SMD-bestückt, so dass man das Develboard einfach nur noch einstecken muss.
Alternativ kann ich dir die Platine auch nur SMD-bestücken und du lötest den Rest selbst. Für diejenigen, die SMD löten können, liefere ich die notwendigen SMD-Bauteile gerne mit. Auch von den Teilen, die man sonst so braucht, habe ich fast alles da, so dass nicht jeder bei 10+ Händlern Hardware bestellen muss. Schreibe mir einfach und wir finden eine Lösung.

Wie ist so ein PCB aufgebaut?

Hier mal ein Bilder von ESPuino-miniD32(pro): Lolin D32/D32 pro mit SD_MMC und Port-Expander (SMD).
Es geht los mit einem 3d-Bild von oben:

Gefolgt von einem 3d-Bild von unten. Auf die einzelnen Konfigurationsmöglichkeiten per Lötbrücken, die man hier vornehmen kann, möchte ich in diesem Rahmen nicht eingehen:

Und nun das Ganze mal „in echt“ bestückt, jedoch ohne eingestecktes Develboard:

Das Ganze ist etwas kleiner als eine RFID-Karte (die liegt nämlich darunter zum Größenvergleich). Hierbei ist der Wemos Lolin D32 pro nicht eingesteckt. Als Verbinder werden JST-Konnektoren verwendet und zwar in der Variante ph. D.h. zwischen den Pins ist immer 2mm Abstand und NICHT das normale Lochraster (2,54 mm). Von den „normalen“ Buttons sind lediglich drei bestückt, weil ich für meine Zwecke nur drei gebraucht habe. Der IDC-Konnektor rechts oben dient zum optionalen Anschluss einer Kopfhörerplatine. Steckt man in deren Buchse den Stecker des Kopfhörers, dann geht der Lautsprecher automatisch aus (und umgekehrt). Das SD-Modul und der MAX98357a sind Fertigteile mit normalem 2,54mm-Lochrastermaß, die man jeweils aus zwei Teilen bestehend zusammenlötet und dann auf den ESPuino-PCB auflötet. Mit dem Power-Mosfet (Transistor) wird die Peripherie (SD-Modul, Neopixel, MAX98357a und ggf. auch RFID-Reader) spannungslos geschaltet, wenn dein ESPuino „schläft“. Defacto führt das aufgrund der restlichen weiterhin verbundenen Leitungen nicht zu vollständiger Spannungslosigkeit (etwa 1 V sind weiterhin messbar), aber es sorgt auf jeden Fall wirkungsvoll (und mit sehr einfachen Mitteln) dafür, dass der Stromverbrauch des ESPuino, wenn er „schläft“, erheblich reduziert wird. Du kannst dir natürlich auch irgendwo in die Zuleitung einen Schalter einbauen und alles komplett ausschalten. Den optionalen LiPo-Akku würde man übrigens links unten in den beigefarbenen Konnektor direkt auf dem Develboard einstecken. Dabei handelt es sich ebenfalls um JST ph (2fach). Hierbei unbedingt darauf achten, dass die Polarität passt! Und auch besser einen LiPo-Akku aus sicheren Quellen kaufen; ich persönlich emfehle immer gerne Eremit.

Und zum Schluss das Ganze nochmal mit eingestecktem Develboard (Wemos Lolin D32 pro):


D.h. der schwarze Sockel, der in obigem Bild zweireihig ausgeführt ist, nimmt hier das Develboard auf. Diese Kontaktierung funktioniert sehr gut und kann jederzeit gelöst werden. Unbedingt aufpassen muss man, dass man das Develboard nicht mit Versatz oder gar um 180 Grad verdreht einsteckt! So ein Develboard wird dreiteilig geliefert. D.h. man hat zwei Reihen mit Pinheadern und das Board selbst - das Ganze muss man dann erstmal (ordentllich!) zusammenlöten.
Bei RFID-Reader, Drehencoder und Neopixel steht die Pinbelegung auf dem PCB; die Gegenseite muss man entsprechend anlöten. Hier muss man unbedingt aufpassen, dass man nichts vertauscht. Bei den Tastern hingegen kann man nichts vertauschen; hier ist die Polarität egal. Jetzt schließt du nur noch einen Lautsprecher an (siehe Schraubterminal rechts unten auf dem MAX98357a) und dann bist du mit der Hardware auch schon durch.

Wie kommt die Software auf den ESP32?

Es sei an der Stelle erwähnt, dass es keine fertige ESPuino-Firmware gibt, die man runterlädt, damit den ESP32 flasht und dieser kann dann universell alles so, wie man das braucht. Langfristig soll sich ESPuino in diese Richtung entwickeln, aber aktuell geht das noch nicht. Heißt: Man muss den Code von meinem Repository auschecken (runterladen) und Visual Studio Code samt Platformio als Plugin installieren. Wie man das alles einrichtet steht hier und hier. Die Arduino-IDE kann auf jeden Fall nicht verwendet werden. Die Konfiguration von ESPuino sieht so aus, dass man zwei Dateien gemäß seinen Anforderungen anpassen muss, wobei man sagen muss, dass alles schon bestmöglich vorkonfiguriert ist. Einerseits ist das die settings.h, in der man globale ESPuino-Eigenschaften konfiguriert. Hier sagt man z.B., ob man einen Neopixel oder einen Drehencoder verwenden möchte, auch konfiguriert man dort, welchen RFID-Reader man verwendet. Zudem gibt es noch ein weiteres Configfile, welches abhängig davon ist, welches PCB du verwendest. Ist es z.B. ESPuino-miniD32(pro): Lolin D32/D32 pro mit SD_MMC und Port-Expander (SMD), dann ist settings-lolin_d32_pro_sdmmc_pe.h die für dich maßgebliche Datei. Im Normalfall musst du hier lediglich INVERT_POWER aktivieren und (je nach Konfiguration) aus der 32 eine 115 machen. Der Rest ist passend konfiguriert.
Ist es dagegen AZ Delivery ESP32 NodeMCU / Devkit C mit SD_MMC und PN5180 als RFID-Leser, dann müsstest du settings-azdelivery_sdmmc.h verwenden. Hier musst du gar nichts ändern. Startest du hingegen eine Eigenentwicklung, dann wirst du settings-custom.h verwenden wollen. Allerdings bist du dann auch komplett für die passende Konfiguration selbst verantwortlich. Am Anschluss muss man die Software kompilieren und den ESP32 damit flashen.

Gibt’s Bilder von ESPuinos anderer Forenteilnehmer?

Na klar! Zeigt her eure ESPuinos.

Noch Fragen?

Ansonsten stöbere bitte hier um dich mit weiteren Infos zu ESPuino zu versorgen. Insbesondere die FAQ sei hier auch nochmal erwähnt.

Wenn du Fragen hast, dann frag’ hier gerne. Dafür ist das Forum da!

4 „Gefällt mir“

Hallo, Meine erste Frage :
Nach langem stöbern auf den Seiten, wo finde ich eine Bauanleitung mit Schaltplan und allem drum und dran?
Dankeschön :wink:

Ich habe mal ein paar einleitende Worte hier geschrieben. Ich hoffe das hilft erstmal.