Lolin32 mit SD (SPI) und RC522 als RFID-Leser

Hinweis

Diese Platine ist „veraltet“. Ein aktuelles Design wäre beispielsweise ESPuino-mini 4Layer.

Link zu GitHub

Es geht um das hier: https://github.com/biologist79/ESPuino/tree/master/PCBs/Wemos%20Lolin32

Bilder



Hinweis: Entgegen der Bilder MAX98357a + µSD-Board lieber direkt auflöten und nicht gesockelt.

Features

  • Passend für Wemos Lolin32 (Lolin D32, Lolin D32 pro oder Lolin32 lite passen nicht!)
  • Die Außenmaße sind 56 x 93mm
  • 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. Entgegen den Bildern, die man hier findet, sollten beide direkt aufgelötet werden statt über weibliche Pinleisten gesockelt. Speziell beim MAX98357a hat sich einfach gezeigt, dass die gesockelte Variante zu schlechtem Kontakt und damit Störungen führt.
  • 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. Zusätzlich ist ein Spannungsteiler notwendig, da die Spannung von max. 4,2 V für den ESP32 sonst zu hoch wäre. Ich habe zwei 130 kOhm-Widerstände benutzt, die das Multimeter mit jeweils 129 kOhm vermessen hat. Diese Werte werden in der Develboard-spezifischen Konfiguration settings-lolin32.h als Rdiv1 und und Rdiv2 konfiguriert. Ursprünglich hatte ich mal mit einem großen und einem kleinen Widerstand hantiert, weil ich in meiner Ausbildung (lange ist’s her) mal gelernt habe, dass man in einem Messbereich am besten in das obere Drittel geht, da der Fehler (relativ) dann am kleinsten ist. 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. Also bin ich dann, wie Wemos beim Lolin D32 und D32 pro auch, bei 50% zu 50% gelandet. 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=1 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 Kommentar
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-Board 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
35 Drehencoder DT Tausche CLK mit DT, wenn du die Drehrichtung anpassen möchstes
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
33 Spannungsteiler / BAT Optional: Spannungsteiler zur Batteriespannungsmessung
22 Kopfhörerbuchse Optional: wenn auf GND gezogen, dann wird Kopfhörerlautstärke aktiviert

Anmerkungen

  • Bestellt man JST-PH-Konnektoren in China via Aliexpress, so sind es immer mind. zehn Stück. Damit man sich einen 6fach-Konnektor für RFID sparen kann, habe ich zwei 3fach benutzt, denn 3fach benötigt man für Neopixel eh schon.
  • Im Unterschied zum Lolin D32 besitzt Lolin32 keinen integrierten Spannungsteiler zur Spannungsmessung. Am unteren Konnektor auf dem PCB wird der Akku angeschlossen. Auf dem PCB werden dann zwei Drähte aufgelötet, die mittels JST-PH in den Lolin32 gesteckt werden (siehe Bilder oben). Es ist dabei immer darauf zu achten, unabhängig von Farben, dass (+) immer links und (-) immer rechts ist!
  • 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 Lolin32 development-board. Wichtig: Bevor dieser genutzt werden kann, muss zuerst der passende Treiber installiert werden für den USB/seriell-Chip darauf (CH2102).

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
  • 2x 130k Widerstand (kann auch durch 2x100k ersetzt werden)
  • 5x JST-PH2.0-Konnektor (2 Pins)
  • 3x JST-PH2.0-Konnektor (3 Pins)
  • 1x JST-PH2.0-Konnektor (5 Pins)
  • Weibliche Verbinder zum Sockeln des Lolin32
  • rev2: (optional) 1x 10 µF Kondensator (2.0mm-Raster) zur Glättung der Spannungsmessung

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.

Guten Abend,

ich versuche diese „alte“ Version (I know: depricated) zum Laufen zu bekommen und hab - nach einigem herumgelöte - auch alles bis auf den RC522 zum laufen bekommen.
Hier leuchtet die LED D1 auf der externen Platine nur ganz leicht auf, wohl dann wenn der ESP die RFID-Chips in der Nähe zu lesen. Denn leider liegen keine 3V3 an.
Wie kann ich herausfinden, ob einer der beinden MFets kaputt ist? Ich habe alle Verbindungen mit einem Messgerät „durchgepiept“, ich bin daher der Meinung das alle Verbindungen okay sind.

Eigentlich glingen mir solche Projekte recht gut, dieses will aber einfach nicht :frowning:

Das verstehe ich nicht so ganz. Also du sagst, dass du alles zum Laufen bekommen hast. Aber du sagst auch, dass keine 3.3V ankommen. Dann müssten diese 3.3V doch auch bei MAX und uSD fehlen!?

Vielen Dank für deine Antwort.
Ich muss mir beim BASTELN das VIA für den 3V3 des RFID Steckers kaputtgemacht haben. „Borge“ ich mir die vom SD-Kartenleser (Kabel aus dem Stecker genommen und daran geklemmt) geht alles.
Der „Bug“ wurde aber - wie meistens- von dem Diletanten vor dem PCB verursacht :roll_eyes: