Infos zur Inbetriebnahme
Features:
Diese Platine ist die Weiterentwicklung der bisherigen mini-Platine. Sie bietet folgende Features:
- µSD-Slot integriert
- MAX98357A (Verstärker) integriert
- Port-Expander (PCA9555) integriert
- Zweiter MAX98357a optional per Breadboard einlötbar
- Anschlüsse für bis zu fünf Buttons (JST-PH 2fach)
- Anschluss für Neopixel (JST-PH 3fach)
- Anschluss für Drehencoder (JST-PH 5fach)
- Integrierter Reset-Button und optionaler Anschluss eines zusätzlichen Reset-Buttons (JST-PH 2fach)
- Anschluss für RFID-Reader (JST-PH 10fach)
- Anschluss für Lautsprecher (JST-PH 2fach)
- Anschluss für optionale Kopfhörerplatine (JST-PH 6fach)
- Externer i2c-Anschluss möglich (JST-PH 5fach)
- Verschiedene Anschlüsse für ext-Konnektor (3,3 V, GND …)
Wenn du eine mini4L, eine Kopfhörerplatine oder ein Develboard benötigst, dann kannst du dich gerne bei mir melden.
Revisions-Historie
- rev3.1: 05/2024. Verschiedene Anpassungen.
- rev3: 01/2023. Änderungen zu rev2.x sind hier beschrieben.
Kompatibilität:
Dieser PCB eignet sich für folgende Develboards:
- Wemos Lolin D32
- Wemos Lolin D32 pro
- D32 pro FePo (meine Empfehlung)
- E32 LiPo
Lolin D32 besitzt im Gegensatz zu den restlichen Develboards zusätzlich die GPIOs 16+17. Sie werden jedoch von der mini-Platine nicht benutzt und somit ist das Ganze vollständig pinkompatibel. Der Nachteil am D32 ist, dass man OTA nicht nutzen kann, weil nur 4 MB Flash vorhanden ist.
Bitte beachten, dass für den D32 (im Gegensatz zu allen anderen drei) immer das Profil settings-lolin_d32_sdmmc_pe.h
verwendet werden muss.
WICHTIG: Da der Lolin D32 kein PSRAM besitzt, rate ich davon ab, diesen für ESPuino zu verwenden, da der Speicher für viele Dinge nicht (mehr) ausreicht!
Einstellungen auf die Schnelle / Kurzfehlersuche:
Allgemein: 📗 Tutorial: Aufbau mini4L mit LiFePO4- oder LiPo-Develboard samt Inbetriebnahme und Tipps.
Weiter unten im nachfolgenden Text sind alle Einstellungen im Detail beschrieben, aber hier in einer Kurzzusammenfassung alle Änderungen, die mindestens vorgenommen werden müssen, um diese Platine erfolgreich in Betrieb zu nehmen:
- Als Profil muss lolin_d32_pro_sdmmc_pe gewählt werden in Platformio für Wemos Lolin D32 pro, D32 pro FePo und auch E32 LiPo. Nur für den Wemos Lolin D32 entsprechend abweichend settings-lolin_d32_sdmmc_pe.h - das gilt auch auf die nachfolgenden Punkte.
- In
settings.h
mussPORT_EXPANDER_ENABLE
aktiviert werden. Siehe hier. - In
settings-lolin_d32_pro_sdmmc_pe.h
muss POWER von 32 auf 115 geändert werden. - In
settings-lolin_d32_pro_sdmmc_pe.h
muss INVERT_POWER aktiviert werden. - Solltest du das Stereo-Feature (zwei MAX98357a) verwenden dann achte drauf, dass
PLAY_MONO_SPEAKER
auskommentiert ist.
Ist von den beschriebenen Einstellungen (1-4) auch nur eine falsch konfiguriert, so wirst du in der seriellen Konsole mind. eine solche Fehlermeldung kriegen:
[E][SD_MMC.cpp:85] begin(): Failed to initialize the card (263). Make sure SD card lines have pull-up resistors in place.
Achte auch darauf, dass für den Start zwingend die µSD-Karte eingelegt werden muss. Vergisst du das, so kommt die gleiche Fehlermeldung.
Bilder:
Ab 05/2024 (rev3.1): Bis auf die beiden Pinreihen in der Mitte ist die Platine nun immer vollständig bestückt. Gegenüber der Vorgängerversion (rev3) ist der i2c-Anschluss nun fünfpolig, es wurden ein paar Kondensatoren hinzugefügt und die Widerstände zum Einstellen der Lautstärke befinden sich nun weiter in der Mitte.
- Alle weißen Anschlüsse sind JST-PH mit 2 mm Pinabstand.
- Auf der linken Seiten befinden sich fünf zweipolige Anschlüsse für die Buttons.
- Über den zweipoligen Anschlüssen befindet sich oben ein dreipoliger Anschluss für den Neopixel.
- Rechts oben quer wird sechspolig die optionale Kopfhörerplatine angeschlossen.
- Rechts am zehnpoligen Anschluss wird der RFID-Reader angeschlossen.
- Darunter befindet sich der fünfpolige Anschluss für den Drehencoder.
- Rechts außen befindet sich der fünfpolige Anschluss für das externe i2c. NICHT MIT DEM DREHENCODER VERWECHSELN!
- Unten in der Mitte/rechts befinden sich zweipolige Anschlüsse für Reset und Lautsprecher.
- Unten links befinden sich der integrierte Reset-Button und der µSD-Slot.
So sieht es dann fertig gelötet aus (Vorgängerversion):
Jetzt (Vorgängerversion) mit eingestecktem LiFePO4-Develboard. Wichtiger Hinweis an dieser Stelle: Die USB-Buchse des Develboards zeigt immer nach unten und MUSS(!) ohne Pin-Versatz in die mini4L eingesteckt werden.
Detailaufnahme des integrierten MAX98357a-ICs unten rechts:
Von links unten mit eingestecktem LiFePO4-Develboard:
Und das Gleiche nochmal von rechts unten:
Von oben rechts mit eingestecktem LiFePO4-Develboard:
Und das Gleiche nochmal von links oben:
Detailaufnahme der Sockelung von oben:
Und das Ganze nochmal mit angeschlossener Kopfhörerplatine und eingestecktem Develboard. Hier sind alle Anschlussleitungen dabei - das ist das sog. „Set C“.
Und hier noch ein Bild der mini 4L (Vorgängerversion) im „Vollausbau“ mit zusätzlichem MAX98357a-Breadboard (blau), zwei Lautsprechern, Drehencoder, zwei Tastern, Kopfhörerplatine, Neopixel-Ring und RFID-Reader PN5180. Beim internen MAX93857a zu sehen, dass er Lautsprecher-Ausgänge per JST PH besitzt während auf dem aufgelöteten MAX-Board ein Schraubterminal vorhanden ist. Als Develboard ist hier E32 LiPo zu sehen.
Wer sich fragt warum die Platine jetzt grün ist und nicht mehr so schön blau: Bei vier Layern in bleifrei und mit Bestückung verlangt JLCPCB Aufpreis für blau, da diese Kombination wohl nicht ganz so häufig ist. Und so wichtig war es mir dann doch nicht .
Schaltplan:
Schematics_ESPuino-mini_4Layer rev3.1.pdf (267,9 KB)
Schematics_ESPuino-mini_4Layer rev3.pdf (273,0 KB)
STEP-File
ESPuino mini4L.step (751,1 KB)
Features:
- Die Außenmaße sind 81x51 mm. Das ist etwas kleiner als eine RFID-Karte.
- Bis auf die beiden Pinreihen in der Mitte ist der Rest ab Werk bereits aufgelötet. Insgesamt ist der Lötaufwand und die Schwierigkeit recht überschaubar. Tipps zum Löten gibt es hier: 📗 (SMD-)Löten. Pinsockets sind die schwarzen Buchsenleisten in der Mitte, in die das Develboard einfach eingesteckt wird.
- Passend für die Develboards Wemos Lolin D32, Wemos Lolin D32 pro, D32 pro FePo und E32 LiPo.
- Die Peripherie (MAX98357a, SD, Neopixel und (nicht jedoch bei LPCD) RFID) wird per Mosfet-Schaltung zum Stromsparen im Deepsleep spannungslos geschaltet. Aufgrund der restlichen Verdrahtung ist sie jedoch auch dann nicht 0 V sondern liegt bei etwa 0,6 V.
- RFID: 10pin (JST-PH). Bedarf (Anzahl Pins) orientiert sich primär an PN5180, RC522 kann auch verwendet werden.
- Taster: 2pin (JST-PH). Maximal fünf Stück. Wieviele man verwendet das kann man sich aussuchen. Sind allesamt am Port-Expander angeschlossen.
- Drehencoder: 5pin (JST-PH). Kann optional verwendet werden.
- Neopixel: 3pin (JST-PH). Kann optional verwendet werden. 📗 Was zeigt der Neopixel des ESPuino alles an?.
- I2C: 5pin (JST-PH) (bis rev3 4Pin). Kann optional für externe i2c-Geräte verwendet werden.
- Reset: 2pin. Es gibt einen aufgelöteten Reset-Taster (links unten) und weiterhin kann per JST-PH ein weiterer angeschlossen werden.
- Kopfhörerplatine: 6pin (JST-PH). Falls die Kopfhörerplatine verwendet wird, so wird der MAX98357a automatisch auf lautlos gestellt wenn ein Kopfhörer eingesteckt wird (und umgekehrt). Das Aus- und Einschalten des MAX98357a übernimmt hierbei der Port-Expander über
PA_EN
. Der Port-Expander erkennt viaHP_DETECT
, ob ein Kopfhörer eingesteckt ist. - Lautsprecher: 2pin (JST-PH). Als Verstärker wird der integrierte MAX98357a verwendet. GAIN ist über die Widerstände R13/R14 einstellbar - ab Werk ist 3 dB voreingestellt. Standardmäßig werden über einen Anschluss gleichzeitig der linke und rechte Kanal ausgegeben.
- Lautsprecher extern: 7pin. Optional kann ähnlich der alten mini-Platine rechts unten ein zusätzlicher MAX98357a aufgelötet werden. Der interne MAX wird dann auf den linken Kanal konfiguriert und der externe auf rechts. So kann man zwei Lautsprecher nutzen. GAIN wird hier über R7/R8 eingestellt.
- Die GPIs, die für DT und CLK des Drehencoders verwendet werden, werden auch auf den doppelreihigen Pinheader (EXT) geführt. D.h. wird kein Drehencoder verwendet oder DT und/oder CLK auf den Port-Expander geroutet, so stehen diese GPIs anderweitig zur freien Verfügung.
- Die GPIOs 0 und 5 werden ebenfalls auf EXT geführt. Sie sind unbeschaltet und können grundsätzlich frei verwendet werden. Weitere Infos hier: 📗 Die GPIOs des ESP32: Welche eignen sich für was?.
- Im Falle von PN5180 kann LPCD genutzt werden. Infos: 📗 Was ist LPCD und wie funktioniert es?. Was man machen muss, damit der PN5180 LPCD unterstützt, steht hier: Firmwareupdate des PN5180 an der ESPuino-mini 4Layer Platine.
- GPIO32 ist ebenfalls auf den externen Pinheader geführt und aber nur dann anderweitig nutzbar, wenn LPCD nicht verwendet wird.
- Auf dem EXT-Konnektor befinden sich noch weitere Anschlüsse zur freien Verfügung.
Hardware-Konfiguration
- Auf Unterseite der Platine befinden sich mehrere Lötbrücken, die konfiguriert werden können bzw. müssen. Sie werden im Folgenden beschrieben. Kursiv markiert ist die Konfiguration, die aus meiner Sicht „standard“ ist (sofern anwendbar):
- JP1: Schließe 1+2 wenn du kein LPCD benötigst (Normalzustand). Schließe 2+3, wenn du LPCD benötigst. Auswirkung: Für LPCD wird das RFID-Modul dauerhaft mit Spannung versorgt, so dass eine etwas höhere Stromaufnahme im Deepsleep anfällt. Vergisst du JP1 komplett, so wird dein RFID-Reader nicht funktionieren, da er (egal wann) keine Versorgungsspannung erhält. Hinweis: Willst du dieses Feature nutzen, dann musst du auch die Brücke von JP4 schließen. Sollte dir unklar sein, was LPCD bedeutet, so findest du hier die Erklärung: 📗 Was ist LPCD und wie funktioniert es?.
Pflicht! - JP2: Schließe 1+2 wenn DT des Drehencoders auf GPI(O)39 geroutet werden soll. Schließe 2+3, wenn GPIO39 frei sein soll und DT stattdessen auf dem Port-Expander (109) landen soll. Stand jetzt (01/2023) macht ausschließlich GPIO Sinn, da ESPuino hier den Port-Expander noch nicht unterstützt. Vergisst du JP2 komplett, so funktioniert die Drehbewegung deines Drehencoders nicht (sofern du diesen verwendest).
Pflicht wenn ein Drehencoder verwendet wird! - JP3: Schließe 1+2 wenn CLK des Drehencoders auf GPIO34 geroutet werden soll. Schließe 2+3, wenn GPIO34 frei sein soll und DT stattdessen auf dem Port-Expander (110) landen soll. Stand jetzt (01/2023) macht ausschließlich GPIO Sinn, da ESPuino hier den Port-Expander noch nicht unterstützt. Vergisst du JP3 komplett, so funktioniert die Drehbewegung deines Drehencoders nicht (sofern du diesen verwendest).
Pflicht wenn ein Drehencoder verwendet wird - JP4: Schließe diese Brücke, wenn du LPCD verwenden möchtest (beachte dafür unbedingt auch JP1!).
Optional! - JP5: Gibt es nicht (mehr).
- JP6: (Gibt es ab rev3.1 nicht mehr!) Schließe 1+2 wenn der 3.3 V-Pin am externen I2C-Konnektor dauerhaft mit Spannung versorgt werden soll. Schließe 2+3, wenn er im Deepsleep des ESP32 spannungslos geschaltet werden soll. Da so gut wie niemand bisher externe I2C-Devices anschließt, hat ein Vergessen der Brücke erstmal keine Auswirkungen. Hintergrund der Konfigurationsmöglichkeit ist hier beschrieben.
Optional! - JP7: Wenn du einen zweiten MAX98357a anschließen möchtest, dann solltest du diese Brücke schließen, so dass der aufgelötete MAX98357a nur den linken Kanal ausgibt. Der zweite MAX98357a wird automatisch den rechten Kanal ausgeben, so dass du stereo über zwei Lautsprecher nutzen kannst. Achte in diesem Falle auch drauf, dass du
PLAY_MONO_SPEAKER
auskommentieren musst.
Optional!
Anmerkungen
- Der JST-PH-Stecker für den RFID-Reader ist 10 Pins breit. Alle Drähte werden für den PN5180 benötigt, für den RC522 jedoch nicht. Da sich kein kleinerer Stecker auflöten lässt, bleiben einige Drähte beim RC522 unbeschaltet. Achte darauf, dass die unbenutzten Drahtenden nicht frei herumliegen und mache etwas z.B. Isolierband darüber (Kurzschlussgefahr)! BSY, RST, 5 V und IRQ benötigst du beim RC522 nicht. CS mappt beim RC522 auf SDA und beim PN5180 auf NSS. Die Anschlüsse GPIO, AUX und REQ werden beim PN5180 modulseitig nicht benötigt.
- Löte das ESP32-Develboard nicht direkt auf die mini-Platine auf, sondern verwende weibliche Konnektoren als Sockel. Die Kontaktierung funktioniert verlässlich und somit kann man das Develboard jederzeit wieder entnehmen.
- Wenn du dich dafür entscheidest, einen zweiten MAX98357a zu verwenden, dann bedenke bitte, dass die gesamte Stromversorgung nur über einen Festspannungsregler (LDO) auf dem Develboard läuft. Der Strombedarf kann hier bei höheren Lautstärken zu groß werden, so dass der ESP32 neu startet. Ausnahme: Du verwendest D32 pro FePo im Akkubetrieb (USB nicht eingesteckt!). Dann wird der LDO umgangen und es sollte stromtechnisch keine Engpässe geben. Ich habe es jedoch mit zwei solchen Lautsprechern über einen LDO und der Einstellung von je 3 dB probiert und hatte auch in der höchsten Lautstärke (21) keine Probleme. Scheint also grundsätzlich zu klappen. Die dauerhafte Stromaufnahme via USB lag dann bei etwa 250 mA (Stromspitzen nicht gemessen).
Allgemeine Software-Konfiguration / Einrichtung
- Ggf. musst du Treiber für den USB/seriell-Chip (CH340) auf dem Lolin D32 pro installieren. Bei aktuellen Versionen von Mac OS oder Linux muss man dies nicht tun. Bei Windows, soweit ich weiß, schon. Weitere Infos dazu gibt es bei Wemos (siehe Links weiter oben).
- Auf deinem Rechner benötigst du Visual Studio Code als Programmierumgebung (IDE) mit PlatformIO als Plugin. 📗 Einrichtung von Visual Studio Code mit Platformio.
- Lade dir ESPuino aus meinem GitHub-Repository herunter. Wie das geht steht hier: 📗 ESPuino in Platformio anlegen und mit git aktuell halten. Dort erfährst du auch, wie du die Software aktuell halten kannst.
- Wähle nun das passende Profil aus. Für den D32:
lolin_d32_sdmmc_pe
und für alle andere:lolin_d32_pro_sdmmc_pe
und . Wie das geht steht hier: Projekt- und Profilwechsel in Visual Studio Code. - Nun müssen
src/settings.h
undsettings-lolin_d32_pro_sdmmc_pe.h
bzw. settings-lolin_d32_sdmmc_pe.h` editiert werden. Alternativ sei an dieser Stelle für Profis noch das hier beschrieben: 📗 Override: Eigene Settings und Boards verwenden. Dessen sollte man sich jedoch IMMER bewusst sein, wenn man sich dazu entscheidet, es zu verwenden. settings.h
: Zwingend mussPORT_EXPANDER_ENABLE
aktiviert werden. Benutzt du einen PN5180 (anstelle eines RC522), so musst duRFID_READER_TYPE_MFRC522_SPI
auskommentieren undRFID_READER_TYPE_PN5180
aktivieren. Ich würde empfehlenHEADPHONE_ADJUST_ENABLE
ebenfalls zu aktivieren, auch wenn keine Kopfhöreplatine angeschlossen ist. Warum? Weil es nicht stört und du es später dann nicht vergessen kannst, wenn du doch mal eine anschließt .settings-lolin_d32_pro_sdmmc_pe.h
/settings-lolin_d32_sdmmc_pe.h
: AktiviereINVERT_POWER
und setzePOWER
auf 115. Weiterhin mussRFID.IRQ
auf 32 gesetzt werden wenn du LPCD benutzt.- Möchtest du die Drehrichtung deines Drehencoders umkehren, so aktiviere
REVERSE_ROTARY
. - Ansonsten gibt es, speziell über
settings.h
, noch zahlreiche Konfigurationsmöglichkeiten: 📗 Welche Optionen beim Kompilieren gibt es?. - Schließe deinen ESPuino mit einstecktem Develboard per USB an deinen Rechner an und klicke auf
Upload and Monitor
. Wenn alles klappt, wird nun die Firmware kompiliert und anschließend auf deinen ESP32 geladen. - Hat alles funktioniert, dann startet dein ESPuino und es geht hiermit weiter: 📗 Der erste Start deines ESPuino. Ansonsten (allgemein): Anleitungen - ESPuino :: Rfid-controlled musicplayer.
Probleme?
Kein Problem, dafür gibt es dieses Forum hier. Schreib’ uns einfach!
Ggf. hilft auch das: Lolin D32 Pro Upload - Timeout.
Pinout
Es ist in settings-lolin_d32_pro_sdmmc_pe.h
bzw. settings-lolin_d32_sdmmc_pe.h
bereits fast alles entsprechend voreingestellt. Dennoch zur Erklärung: GPIO-Werte zwischen 0 und 39 sind GPIOs des ESP32, solche zwischen 100 und 115 zeigen, dass der Anschluss über den Port-Expander PCA9555 erfolgt. Der Port-Expander besitzt zwei Kanäle mit je 8 Pins, die per Software wahlweise beliebig zu Ein- und Ausgängen konfiguriert werden können. Der erste Kanal besitzt bei ESPuino die Nummern 100 bis 107 und der zweite 108 bis 115. Die nicht benutzten Pins sind teilweise auf den zweireihigen Pinheader Ext. rausgeführt. Deren Nutzen ist aktuell (Stand 01/2023) begrenzt, aber möglicherweise für künftige Anwendungen noch sinnvoll. Gleiches gilt für den I2C-Anschluss. Deaktiviert werden Pins mittels der Nummer 99 - nicht auskommentieren!
Benötigte Teile / Vorschläge
Herz dieses PCBs ist der Mikrocontroller ESP32. Möchtest du USB-C nutzen, so frage am besten direkt bei mir D32 pro FePo oder E32 LiPo an.
Die nachfolgende Liste spiegelt nur Vorschläge wieder - bestelle die Sachen wo immer du willst. Sollte ein Link kaputt sein, so teile mir das bitte mit.
- RFID-Leser PN5180 oder hier
- RFID-Leser RC522
- RFID-Karten
- Neopixel-Ring
- Drehencoder
- Taster
- Lautsprecher
- µSD-Karte. Mit 32 GB läuft das Ganze auf jeden Fall. Mit 64 GB auch (es gab jedoch vereinzelt auch schon Probleme), jedoch muss etwas beachtet werden.
- JST PH-2.0-Konnektoren 2, 3, 4, 5, 10fach
- Weibliche Verbinder zum Sockeln des Develboards
- (optional für Akkubetrieb) LiPo-Akku => mit JST-PH-Anschluss bestellen - nicht für FePo-Develboards verwenden!!!
- (optional für Akkubetrieb) FePo-Akku => mit JST-PH-Anschluss - nicht für LiPo-Develboards verwenden!!!
- (optional für Akkubetrieb) kleiner FePo-Akku => mit JST-PH-Anschluss bestellen - nicht für LiPo-Develboards verwenden!!!
- (optional) MAX98357A
Interesse?
Falls du Interesse an einem solchen PCB hast, dann melde dich bei mir per privater Nachricht. Die Platine kommt nahezu fertig gelötet; es müssen nur noch die beiden Buchsenleisten in der Mitte eingelötet werden - es sind keine SMD-Lötkenntnisse notwendig! Traust du dir das Löten gar nicht zu, dann kann ich auch diese Lötarbeiten für dich übernehmen, so dass du eine fertig bestückte + getestete Platine erhältst. Ansonsten biete ich das Ganze auch als Set an:
- Set A1: nur mini4L + alle Anschlussleitungen
- Set A: mini4L + Develboard + alle Anschlussleitungen
- Set B: mini4L + Kopfhörerplatine + alle Anschlussleitungen
- Set C: mini4L + Develboard + Kopfhörerplatine + alle Anschlussleitungen
Normalerweise habe ich auch RFID-Reader (nur PN5180) und zusätzliche MAX98357a vorrätig. Auch einen Drehencoder kannst du von mir kriegen
Was grundsätzlich jeder jedoch selbst besorgen muss, das sind Neopixel, Lautsprecher, Akkus und die Buttons.
Kann man da einen Kopfhörer anschließen?
Nicht direkt, aber mit der passenden Kopfhörerplatine geht es: Kopfhörerplatine basierend auf MS6324 und TDA1308 bzw. LM4808M. Sie wird einfach per sechspoligem JST-Konnektor angeschlossen - Plug’n’Play! Sobald ein Kopfhörer eingesteckt ist, wird der Lautsprecher auf stumm geschaltet und umgekehrt. Melde dich bei mir, wenn du eine solche benötigst.