Wichtig
Aufgrund eines Bugs mit SD via SPI sei an dieser Stelle davon abgeraten, dieses Design für neue ESPuinos zu verwenden. Ich werde diesen PCB überarbeiten, so dass er SD_MMC nutzt.
Es geht um das hier: https://github.com/biologist79/ESPuino/tree/master/PCBs/Wemos%20Lolin%20D32
Features
- Passend für Wemos Lolin D32 (Lolin32, Lolin D32 pro oder Lolin32 lite passen nicht!)
- Die Außenmaße sind 53 x 81mm
- Es werden JST-PH 2.0-Konnektoren für Taster, Drehencoder, Neopixel, RFID und Batterieanschluss 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.
- Ein Mosfet-Schaltkreis schaltet die Spannung von MAX98357a, Kopfhörerplatine (optional), RFID, Neopixel und µSD-Board ab, um Strom zu sparen, wenn der ESP32 im Deepsleep ist.
- Sämtliche Peripherie wird mit 3.3 V betrieben! Bedenke das bei der Auswahl des µSD-Baords. Den Neopixel betreibt man damit streng genommen außerhalb seiner Spezifikation, aber er funktioniert dennoch.
- Falls die Kopfhörerplatine #1 oder Kopfhörerplatine #2 verwendet werden, so wird der MAX98357a auf lautlos gestellt, wenn ein Kopfhörer eingesteckt ist und umgekehrt.
- 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 verwendete TDA1308 die Musik auf dem Kopfhörer recht laut machen kann. - Ab der rev2 ist euch eine Reset-Pinheader vorhanden. An diesen kann man z.B. einen Mikroschalter anschließen, den man (mehr oder weniger versteckt) am ESPuino-Gehäuse anbringt. So kann man den ESPuino auch im eingebauten Zustand resetten, was insbesondere dann von Bedeutung ist, wenn man ihn im Batteriebetrieb hat.
Vorraussetzungen
- Ist keine Kopfhörerplatine angeschlossen, so muss
HEADPHONE_ADJUST_ENABLE
deaktiviert werden. - Zum Messen der Batteriespannung muss
MEASURE_BATTERY_VOLTAGE
aktiviert sein. Ein Spannungsteiler mit zwei Widerständen à 100 kOhm ist bereits integriert und fest mit GPIO35 verdrahtet. Diese Werte werden in der Develboard-spezifischen Konfigurationsettings-lolin_D32.h
alsRdiv1
und undRdiv2
konfiguriert. Leider ist der analoge Eingang des ESP32 auch nicht gerade ein Präzisionsinstrument und speziell im oberen Spannungsbereich läuft das Ganze in ein Plateau, wie man hier lesen kann. Sollte die gemessene Spannung systematisch falsch sein, so kann man sie mittelsoffsetVoltage
korrigieren. AuchreferenceVoltage
lässt sich anpassen. Suuuuper genau ist es nicht, aber 0,1 V Genauigkeit ist aus meiner Sicht mehr als ausreichend. - In
settings.h
muss HAL=3 gesetzt sein. - Deaktiviere
SD_MMC_1BIT_MODE
undSINGLE_SPI_ENABLE
. - Aktiviere
RFID_READER_TYPE_MFRC522_SPI
. - Gleiche deine Konfiguration nun mit nachstehender Tabelle ab
ESP32 (GPIO) | Hardware | Pin | Comment |
---|---|---|---|
MFET 3.3V | SD-Board | 3.3V | |
GND | SD-Board | GND | |
15 | SD-Board | CS | |
13 | SD-Board | MOSI | |
16 | SD-Board | MISO | |
14 | SD-Leser | SCK | |
MFET 3.3V | RFID-Leser | 3.3V | |
GND | RFID-Leser | GND | |
21 | RFID-Leser | CS/SDA | |
23 | RFID-Leser | MOSI | |
19 | RFID-Leser | MISO | |
18 | RFID-Leser | SCK | |
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 |
33 | Drehencoder | DT | Tausche CLK mit DT, wenn du die Drehrichtung anpassen möchstest |
32 | Drehencoder | BUTTON | |
3.3 V | Drehencoder | + | |
GND | Drehencoder | GND | |
4 | Taster(next) | ||
GND | Taster (next) | ||
2 | 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 | |
35 | Spannungsteiler / BAT | ||
22 | Kopfhörerbuchse | Optional: wenn auf GND gezogen, dann wird Kopfhörerlautstärke aktiviert |
Anmerkungen
- Löte den Lolin32 nicht direkt auf den PCB auf, sondern verwende weibliche Konnektoren als Sockel. Die Kontaktierung funktioniert gut.
- Falls du einen LiPo-Akku verwendest, dann stelle sicher, dass dieser einen integrierten Tiefeentladeschutz besitzt. Dies ist GANZ GANZ GANZ wichtig! Nutze z.B. einen Solchen.
Benötigte Teile
Herz dieses PCBs ist der ESP32 auf einem Wemos Lolin D32 Development-Board. 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
- 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
- LiPo-Akku (2500 mAh) mit JST PH 2.0mm-Konnektor
Teileliste
- 1x IRL3103 (N-channel MOSFET) [anstelle von IRF530NPbF, da IRL3103 eine niedrigere Vgs besitzt]
- 1x NDP6020P (P-channel MOSFET)
- 1x 1k Widerstand
- 1x 10k Widerstand
- 2x 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 (6 Pins)
- Weibliche Verbinder zum Sockeln des Lolin D32
Kann man da einen Kopfhörer anschließen?
Nein, aber mit der passenden Kopfhörerplatine dazu geht es: Kopfhörerplatine basierend auf UDA1334 / PJ306b.
Wo bestellen?
Ich habe meine Platinen bei jlcpcb bestellt. Es müssen mindestens fünf Stück abgenommen werden, die Lieferzeit beträgt üblicherweise etwa zwei Wochen nach Deutschland. Alles, was du dafür brauchst, ist das Gerberfile (gerber.zip
) im Projektordner auf Github. Dessen Inhalt kannst du dir vorab auch auf Gerberlook anschauen.