Bilder
Hinweis
Passend für NodeMCU ESP32 / Devkit C mit 38 Pins. Achtung: Es gibt auch welche mit weniger Pins diese werden NICHT unterstützt. Am besten du schaust dir die Bilder oben genau an und vergleichst die Pinbeschriftungen: Das muss 100% passen.
Warum dieser PCB?
Die klassischen NodeMCU-Develboards, die via Amazon insbesondere vom Händer AZ-Delivery vertrieben werden, sind oft der Einstieg für viele Leute, die in das Thema ESP32 einsteigen. Aus diesem Grunde habe ich mich dessen angenommen und einen PCB erstellt, den jeder für sich selbst bestellen kann.
Der Nachteil gegenüber den genannten Lolin-Boards ist, dass kein Akku-Anschluss und keine Ladeelektronik für einen solchen integriert ist. Dies würde jedoch auch gar nicht so arg viel Sinn machen, da das Board mehrere mA Strom frisst im Standby. Kurzum: Wer dieses Board dennoch mit Akku betreiben will, der muss das, wie oft im Tonuino-Forum propagiert, über 5 V via USB machen - eine Powerbank bietet sich dafür z.B. an. Eine Messung der Akkuspannung sieht das hier vorgestellte Board daher natürlich nicht vor, ich habe jedoch den GPIO 33, da dieser hier nicht gebraucht wird, zur „freien Verwendung“ über einen Pinheader (inkl. 3.3 V und GND) nach außen geführt. Also kurzum: Aus meiner Sicht sind die Wemos-Plattformen (Lolin D32 und D32 pro) für ESPuino besser geeignet, aber wenn der NodeMCU ESP32 schon mal da ist, wird er Ein- oder Andere diesen vermutlich auch nutzen wollen. Und genau an diese Leute richtet sich mein Angebot.
Konfiguration
-
Es gibt für diesen PCB ein eigenes Configfile
settings-azdelivery_sdmmc.h
und auch einen eigenen HAL, der viaaz-delivery-devkit-v4
in Platformio aufrufbar ist. Dort ist bereits alles vorkonfiguriert. Plug’n’Play! -
Es gibt auch Gerber-Files, so dass sich jeder die PCBs selbst bestellen kann (z.B. bei jlcpcb.com). Ansonsten kontaktiert mich gerne, wenn euch das zu aufwändig ist und ihr einfach auch generell das Projekt unterstützen wollt .
-
Über die Widerstände R1 und R2 kann man man die Verstärkung steuern. Ich persönlich verwende immer 3dB, da ich den MAX98357a im unteren Lautstärkebereich sonst so laut finde (meine Kinder nutzen den ESPuino halt gerne zum Einschlafen). Aber was hier benötigt wird, hängt auch von den eigenen Vorlieben und nicht zuletzt auch vom verwendeten Lautsprecher ab (4 oder 8 Ohm). Je nach gewünschter Konfiguration wird entweder gar kein Widerstand für R1/R2 eingelötet, nur einer der beiden (100k Ohm) oder nur eine Drahtbrücke (0 Ohm). Damit das nicht vergessen geht, steht es auf dem PCB auch drauf. D.h. es müssen und sollen NIE BEIDE Widerstände gleichzeitig eingelötet sein und schon gar nicht zwei Drahtbrücken (Kurzschluss!). Hier eine Tabelle dazu aus dem Datasheet:
-
Für RFID habe ich einen JST-PH-Stecker mit 10 Pins vorgesehen, da dieser für den RFID-Reader PN5180 benötigt wird. Hierbei werden, das nochmal als Hinweis, sowohl der 5V- als auch der 3.3V-Anschluss am PN5180 mit 3.3 V beschaltet. Grundsätzlich spricht nichts dagegen, anstelle des PN5180 einen RC522 zu verwenden. Nur es bleiben dann halt manche Anschlüsse des JST-Anschlusses unbelegt, da der RC522 weniger Pins zum Anschließen benötigt. Es ist dann ausreichend nur SDA (wird an CS angeschlossen), SCK, MOSI, MISO, 3.3V und GND anzuschließen (RST und IRQ werden von ESPuino aktuell nicht ausgewertet/verwendet beim RC522).
-
Für den PN5180 gibt es mit
PN5180_ENABLE_LPCD
das Feature, den ESPuino aus dem Schlaf per RFID-Karte aufzuwachen. Das würde normalerweise nicht funktionieren, denn die Peripherie wird über die beiden Mosfets spannungslos geschaltet, wenn der ESPuino im Deepsleep ist. Damit dies also klappt, muss der PN5180 auch in diesem Falle mit 3.3V versorgt werden, damit er auch dann in Betrieb ist, wenn der ESPuino eigentlich schläft (was aber auch etwas mehr Stromverbrauch im Deepsleep nach sich zieht). Um dies zu konfigurieren habe ich einen Jumper vorgesehen, der mit „LPCD“ und „no LPCD“ beschriftet ist. D.h. bei „no LPCD“ erfolgt im Deepsleep keine PN5180-Versorgung mit 3.3V - und umgekehrt. Achte drauf, dass der Jumper auf JP1 auf jeden Fall gesteckt ist, da ansonsten das RFID-Modul nicht mit Spannung versorgt wird! In den FAQs habe ich das Thema LPCD mal kurz aufgegriffen - einfach dort mal danach suchen.
Features
- Passend für NodeMCU ESP32 / Devkit C mit 38 Pins. Achtung: Es gibt auch welche mit weniger Pins - diese werden NICHT unterstützt. Am besten du schaust dir die Bilder oben genau an und vergleichst die Pinbeschriftungen: Das muss 100% passen.
- Die Außenmaße sind 61 x 88mm
- Maximal drei Buttons werden unterstützt, dazu ein Drehencoder.
- Es werden JST-PH 2.0-Konnektoren für Taster, Drehencoder, Neopixel, RFID und Resetanschluss verwendet. Wichtig: Es handelt sich hier um 2mm-Abstand und NICHT das klassische 2,54mm-Lochraster!
- Die Anschlüsse für MAX98357a und das µSD-Board besitzen dagegen einen normalen Lochrasterabstand, so dass das Ganze zu den beiden Breadboards passt. Achte drauf, die Pinleisten auf die richtige Seite zu löten, so dass Pin-Kompatibilität gewährt ist.
- Um Strom zu sparen schaltet ein Mosfet-Schaltkreis die Spannung von MAX98357a, Kopfhörerplatine (optional), RFID, Neopixel und µSD-Board ab, wenn der ESP32 im Deepsleep ist.
- Sämtliche Peripherie wird mit 3.3 V betrieben! Bedenke das bei der Auswahl des µSD-Boards. Den Neopixel betreibt man damit streng genommen außerhalb seiner Spezifikation, aber er funktioniert dennoch.
- Falls die Kopfhörerplatine #1 oder Kopfhörerplatine #2 oder Kopfhörerplatine #3 verwendet wird, so wird der MAX98357a auf lautlos gestellt, wenn ein Kopfhörer eingesteckt ist und umgekehrt. Die ersten beiden Kopfhörerplatine kannst du direkt von mir fertig gelötet bekommen.
- Falls
HEADPHONE_ADJUST_ENABLE
einkompiliert wurde, erkennt der ESPuino das Einstecken und kann, sofern über die WebGUI entsprechend konfiguriert, die Lautstärke begrenzen. Dies macht deshalb Sinn, da der als Verstärker auf der Kopfhörerplatine verwendete TDA1308 die Musik auf dem Kopfhörer recht laut machen kann. - PN5180 kann, sofern er mit einer neuen FW-Version (4.1) verwendet wird, den ESPuino auch aufwecken (LPCD, siehe Beschreibung oben). Hierfür muss
PN5180_ENABLE_LPCD
aktiviert sein. WICHTIG: Vergesst nicht, den o.g. diesen Jumper zu stecken! - Üblicherweise haben die PN5180, wenn sie aus China kommen, die FW-Version 3.5 aufgespielt. Um 4.1 drauf zu bringen, muss man sie flashen. Wie das geht steht hier.
- 2Pin-Header für Reset (EN/GND) - hier kann man z.B. einen Mikroschalter anlöten und halb-versteckt außen am ESPuino-Gehäuse platzieren. Optional.
- 3Pin-Header für seriellen Anschluss (TX/RX/GND). Optional.
- 3Pin-Header für GPIO33. Optional.
Vorraussetzungen
- Ist keine Kopfhörerplatine #1 oder Kopfhörerplatine #2 angeschlossen, so sollte
HEADPHONE_ADJUST_ENABLE
deaktiviert werden. - Aktiviere
SD_MMC_1BIT_MODE
und deaktiviereSINGLE_SPI_ENABLE
. - Aktiviere
RFID_READER_TYPE_PN5180
, sofern du den PN5180 verwendest. Für RC522 entsprechendRFID_READER_TYPE_MFRC522_SPI
. - Wenn dein ESPuino auch aus dem Schlaf mittels Karte aufgeweckt werden soll, dann zusätzlich auch
PN5180_ENABLE_LPCD
. Das kann aber nur der PN5180 und auch nur wenn, wenn er eine Firmware >= 4.1 hat. - Achte beim verlinkten SD-Board darauf, dass der PullUp-Widerstand an GPIO 2 (MISO) entfernt wird, da der ESP32 sonst nicht mehr in den Flashmodus geht (siehe nachfolgendes Bild).
Pinout
- Gleiche deine Konfiguration nun mit nachstehender Tabelle ab.
ESP32 (GPIO) | Hardware | Pin | Kommentar |
---|---|---|---|
MFET 3.3V | SD-Board | 3.3V | |
GND | SD-Board | GND | |
xx | SD-Board | CS | entfällt bei SD_MMC! |
15 | SD-Board | MOSI | |
2 | SD-Board | MISO | |
14 | SD-Board | SCK | |
MFET 3.3V | RFID-Leser | 5V | Ja, 3.3V muss an 5V angeschlossen werden |
MFET 3.3V | RFID-Leser | 3.3V | Obwohl 3.3V schon an 5V hängt, muss es hier auch dran |
GND | RFID-Leser | GND | |
21 | RFID-Leser | NSS | |
23 | RFID-Leser | MOSI | |
19 | RFID-Leser | MISO | |
18 | RFID-Leser | SCK | |
22 | RFID-Leser | RST | |
16 | RFID-Leser | BUSY | |
39 (VN) | RFID-Leser | IRQ | |
MFET 3.3V | MAX98357 | VIN | |
GND | MAX98357 | GND | |
25 | MAX98357 | DIN | |
27 | MAX98357 | BCLK | |
26 | MAX98357 | LRC | |
— | MAX98357 | SD | Info: liegt hier GND an so schaltet MAX auf lautlos |
— | MAX98357 | GAIN | PullUp mit 100k auf 3.3V bewirkt weniger Verstärkung |
34 | Drehencoder | CLK | Tausche CLK mit DT, wenn du die Drehrichtung anpassen möchstest |
35 | Drehencoder | DT | Tausche CLK mit DT, wenn du die Drehrichtung anpassen möchstes |
32 | Drehencoder | BUTTON | |
3.3 V | Drehencoder | + | |
GND | Drehencoder | GND | |
13 | Taster (next) | ||
GND | Taster (next) | ||
36 (VP) | Taster (previous) | ||
GND | Taster (previous) | ||
5 | Taster (pause/play) | ||
GND | Taster (pause/play) | ||
MFET 3.3V | Neopixel | V | |
GND | Neopixel | G | |
12 | Neopixel | DI | |
17 | N-channel Mosfet | Gate | |
4 | Kopfhörerbuchse | Optional: wenn auf GND gezogen, dann wird Kopfhörerlautstärke aktiviert | |
33 | xxx | xxx | Ist unbeschaltet und kann frei verwendet werden |
Anmerkungen
- Löte das ESP32-Modul nicht direkt auf den PCB auf, sondern verwende weibliche Konnektoren als Sockel. Die Kontaktierung funktioniert gut.
- PN5180 scheint es fast ausschließlich in China zu geben. Kostet etwa 7€ und ist damit etwas teurer als der RC522.
Benötigte Teile
Herz dieses PCBs ist der ESP32 auf einem ESP32 NodeMCU. Wichtig: Bevor dieser genutzt werden kann, muss zuerst der passende Treiber installiert werden für den USB/seriell-Chip darauf.
- MAX98357A
- µSD-Board (nur für 3.3V!)
- RFID-Leser PN5180
- RFID-Karten
- Neopixel-Ring
- Drehencoder
- Taster
- Lautsprecher
- µSD-Karte: Muss keine super schnelle sein. Mit 32 GB läuft das Ganze auf jeden Fall.
- JSP PH-2.0-Konnektoren
- Weibliche Verbinder
- (optional) IDC-Verbinder weiblich 6pin für Kopfhörerplatinen-Anschluss
- (optional) IDC-Verbinder männlich 6pin ür Kopfhörerplatinen-Anschluss
- (optional) Mikroschalter
Teileliste
- 1x IRL3103 (N-channel MOSFET)
- 1x NDP6020P (P-channel MOSFET)
- 1x 1k Widerstand
- 4x 100k Widerstand
- 4x JST-PH2.0-Konnektor (2 Pins)
- 1x JST-PH2.0-Konnektor (3 Pins)
- 1x JST-PH2.0-Konnektor (5 Pins)
- 1x JST-PH2.0-Konnektor (10 Pins)
- Weibliche Verbinder zum Sockeln des Lolin32 (2,54 mm)
- Männliche Pinheader für Jumper und seriellem Anschluss (2,54 mm)
- 1x Jumper (2, 54mm)
Kann man da einen Kopfhörer anschließen?
Nein, aber mit der passenden Kopfhörerplatine dazu geht es:
Kopfhörerplatine basierend auf MS6324 und TDA1308.
Kopfhörerplatine basierend auf UDA1334 / PJ306b.
Probleme?
Ungeduldig?
Melde dich gerne bei mir, wenn du einen solchen PCB möchtest. In der Regel habe ich auch so ziemlich alles, was in der Teileliste steht, noch da.