Lolin D32 mit SD (SPI) und RC522 als RFID-Leser

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 Konfiguration settings-lolin_D32.h als Rdiv1 und und Rdiv2 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 mittels offsetVoltage korrigieren. Auch referenceVoltage lässt sich anpassen. Suuuuper genau ist es nicht, aber 0,1 V Genauigkeit ist aus meiner Sicht mehr als ausreichend.
  • In settings.hmuss HAL=3 gesetzt sein.
  • Deaktiviere SD_MMC_1BIT_MODE und SINGLE_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.

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.

Nachbau fertig und anbei meine Unterlagen:

Tipp zur Anreißschablone: Am besten man bestellt den Neopixel zuerst und schaut dann, ob die Anreißschablone dazu passt. Nicht, dass man am Ende ein Gehäuse mit Löchern hat und der Ring passt dazu nicht.
Neopixel-Ringe gibt’s, auch wenn die LED-Zahl gleich ist, in ganz unterschiedlichen Durchmessern und Streifendicken. Dass da vom o.g. Link immer der gleiche Typ von Ring kommt mag sein. Muss aber nicht :slight_smile:.

@ossel Das Thema „Wie ätze ich eine Platine selbst?“ hatten wir hier noch überhaupt nicht. Grundsätzlich wird die Bereitschaft hier dafür vermutlich eher klein sein, aber manch einer fände das bestimmt spannend zu sehen, wie man sowas macht. Vielleicht hast ja mal Lust einen Thread dazu aufzumachen.

Wenn ich die nächste Platine mache, probiere ich alles zu dokumentieren und stelle den Ablauf online…

1 „Gefällt mir“