Lolin32 mit SD (SD_MMC) und PN5180 als RFID-Leser

Habe heute dann mal LPCD ausprobiert, leider ohne Erfolg. Die Brücke ist geändert, PN5180_ENABLE_LPCD ist drin, Firmware Update war auch erfolgreich - trotzdem bisher ohne Erfolg.
Jemand eine Idee woran es liegen könnte?
Letzter Eintrag im Serial Monitor (PIN 0 wundert mich, da 39 gesetzt ist):

prepare low power card detection…
PN5180 IRQ PIN: 0
switch to low power card detection: success
deep-sleep, good night…

Das sieht doch schon mal gut aus, die Firmware des PN5180 scheint erfolgreich aktualisiert zu sein auf Version 4.1, nur damit funktioniert das.
Die Meldung zeigt nur an ob der IRQ-PIN (also PIN zum aufwecken) 0 oder 1 ist. Wenn eine ISO-14443 Karte oder auch Metall ins Feld kommt wird der IRQ ausgelöst und der ESPuino sollte aufwachen und einen Kartencheck durchführen.
Schließ doch mal eine LED mit 470Ohm Widerstand an den IRQ-Pin gegen GND an oder ein Multimeter und schau ob der auf 1/High geht wenn Du eine Karte auflegst.

Im Standby geht IRQ auf 1 dauerhaft - unabhängig ob eine Karte aufgelegt ist oder nicht.
Im regulären Betrieb ist er auf 0

Es funktioniert doch, nur es dauert länger als ich dachte :face_with_hand_over_mouth:

Habe seit gestern ein seltsames Verhalten. Von jetzt auf nachher (die Kleine hatte ziemlich lang immer wieder neue Karten angelegt, im Sekundentakt :smiley: ) ging das WLAN nicht mehr. Lag wohl an einem korrupten NVRAM, habe das mit ESPTOOLS geresettet und alles neu eingerichtet.

Beim Anschalten leuchtet der LED-Ring jetzt ca. 20 Sekunden lang im gleichen Muster, wie wenn man lange auf den Rotary Encoder zum Ausschalten drückt (roter, durchlaufender Ring der immer wieder von vorne anfängt). Währenddessen sprechen weder Buttons noch der RFID-Leser an. Nach den 20 Sekunden ist der Spuk dann vorbei und der Espuino geht in den Warten-Modus.

Was könnte das denn sein?

Edit: Hier ein Video: https://www.peter-shaw.de/PXL_20220121_062438188.m4v

Meine Nicht hat eine T**iebox und hat demletzt den ESPuino meiner Tochter in die Hand bekommen. Da wollte sie dann auch mal drauf hören. Sowas wie einen Neopixel und Buttons kennt sie in der Form ja nicht und fand es glaube ich lustig, dass das so wild rumgeblinkt hat. Die hat es tatsächlich dann auch geschafft (Softwarestand September 2021), einen Reboot zu erzwingen. Guter Pentester, diese Kinder :joy:. Meine Tochter (3,5 Jahre) ist in Sachen Technik immer sehr zurückhaltend und drückt eher zu wenig als zu fiel. Mein Sohnemann hat seinen ESPuino glaube ich erst so mit vier bekommen. Und das war ja noch ziemlich beta damals, insofern habe ich gesagt, dass er da „vorsichtig“ sein soll. Das hat sich auf jeden Fall so festgesetzt und damit hatte ich unterm Strich „inhouse“ nie das Problem mit Kindern, die wild auf dem ESPuino rumdrücken, hehe.
Wie auch immer: Wir hatten das Thema mit dem WLAN demletzt glaube ich schon mal. Ist halt unglaublich schwer, sowas zu reproduzieren. Die ESP32 und/oder der Arduino-Core darüber haben ja auch so ihre Eigenarten, die schwer zu durchschauen sind.

Man kann ja WLAN per Tastenkombination deaktivieren. Daran könnte es nicht gelegen haben? Ich habe auch schon überlegt, ob ich das aus der Standardkonfiguration mal rausnehme, weil ich glaube der Großteil deaktiviert es nicht. Kinder deaktivieren es durch wildes Rumdrücken jedoch ggf. und am End wundert man sich, warum das WLAN nicht mehr geht.

Die Config mit den Buttons passt komplett? Und siehst du in dieser Zeit vielleicht irgendwelche Ausgaben per serial?

1 „Gefällt mir“

Ja, das war echt ein Stresstest :slight_smile: Könnte sein, dass sie das per Tastenkombination deaktiviert hat - die Funktion war mir gar nicht bekannt. Jedenfalls geht jetzt wieder alles, nachdem ich die neueste Version geflashed habe und alles noch einmal neu angepasst habe.
Ich liste mal alle Änderungen auf, falls ich es später noch einmal machen muss (Das erneute Einarbeiten hat mal wieder ewig gedauert :smiley: )

platformio.ini:

upload_port = COMX
monitor_port = COMX

settings.h:

#define RFID_READER_TYPE_PN5180                   // use PN5180 via SPI
#define BUTTON_MULTI_01   CMD_NOTHING             // WIFI Kombination rauskommentiert

settings-lolin32.h

    #define ROTARYENCODER_CLK         34           // CLK mit DT tauschen       
    #define ROTARYENCODER_DT          35     
    #define HP_DETECT                 99          // von 22 auf 99 ändern, sonst geht der PN5180 nicht!

HP_DETECT gehört auf 13. Aber ja, kannst es, wenn du eh keine Kopfhörerplatine dran hast, auch ausschalten.

Tasks für mich:
a) Configfile anpassen, so dass die GPIOs out of the box passen.
b) Die Wifi-Aktion rausnehmen. Vermutlich ist das eher nachteilig.

1 „Gefällt mir“

So, habe gestern Abend beides angepasst. Was ich auch angepasst habe: Man kann den FTP-Server jetzt nur noch innerhalb den ersten 30s einschalten. Das ist dann quasi so ein Mittelweg. Mir fiel jetzt nur nachträglich noch ein, dass das so, wie es jetzt implementiert ist, keinen Sinn Macht. Weil das wirkt sich dann auch auf die Modifikationskarten und die FTP-Aktivierung per WebGUI aus. Das will man ja eigentlich nicht, dass man da so eine „halbe Sperre“ drin hat.

1 „Gefällt mir“

Ich habe ein ähnliches Problem. Fehlercode 264 statt 263

E (1116) sdmmc_io: sdmmc_io_reset: unexpected return: 0x108
[E][SD_MMC.cpp:85] begin(): Failed to initialize the card (264). Make sure SD card lines have pull-up resistors in place.

Ich habe das PCB von @biologist und konnte anhand der Anleitungen mit VCS die Config auf den ESP32 laden.

Anhand der Konfiguration habe ich folgendes von den default Werten geändert:

  • 2 bestehende SD-Karten genutzt. Da diese nicht funktionierten, habe ich eine neue SD-Karte (32GB) gekauft (um die SD selber auszuschliessen)
  • #define PORT_EXPANDER_ENABLE
  • #define SD_MMC_1BIT_MODE
  • //#define RFID_READER_TYPE_MFRC522_SPI
  • #define RFID_READER_TYPE_PN5180
  • ESP ist auf dem PCB gesteckt, aber weder RFID Leser noch Buttons aktiv, nur SD-Card

An für sich gehört dein Post hier nicht hin, weil das ein komplett anderes Board ist. Aber sei es drum.
Die Platine war von mir ja komplett gelötet worden und ist daher auch getestet.

a) Hast du denn das passende Profil (lolin_d32_pro_sdmmc_pe) gewählt? Am unteren Bildschirmrand von VSC kann man das auswählen.
b) Hast du INVERT_POWER gesetzt? Wenn nicht, dann bitte mal die ganze Anleitung lesen.
c) Ich weiß nicht mehr, was ich für JP5 (Unterseite) konfiguriert habe. Wenn das 1+2 ist, dann ist 32 hier ok (unverändert). Wenn das 2+3 ist, dann muss da 115 statt 32 stehen.

Ich tippe auf b und/oder c. Das führt dazu, dass der Mosfet nicht angesteuert wird und damit werden keine 3.3V auf den SD-Reader geschaltet.

Ansonsten: Dein Link oben zeigt auf das falsche Board. Du verwendest ESPuino-miniD32(pro): Lolin D32/D32 pro mit SD_MMC und Port-Expander (SMD).

Guten Abend,

habe nun auch genau das Problem

E (18844) sdmmc_io: sdmmc_io_reset: unexpected return: 0x108
[E][SD_MMC.cpp:85] begin(): Failed to initialize the card (264). Make sure SD card lines have pull-up resistors in place.

mit dem lolin_d32_pro_sdmmc_pe

mit Deiner software lief es einwandfrei @biologist , wollte aber REVERSE_ROTARY noch fixen/einschalten. (Hast Du die evtl noch?)
Oder gibt es sonst noch einen Tip?

#define POWER 32 / 115 hat bei mir keinen Unterschied gemacht.
INVERT_POWER ist gesetzt,
sowie auch PORT_EXPANDER_ENABLE und SD_MMC_1BIT_MODE.
SINGLE_SPI_ENABLE ist auskommentiert.

edit:
bei der Durchsicht des Codes wundert mich in der SdCard.h #include „SD_MMC.h“ - diese Datei SD_MMC.h gibt es im Repo nicht.
Un in der settings-lolin_d32_pro_sdmmc_pe.h Z.24-26 stehen ja nur Kommentare?

Hast du denn in Visual Studio Code auch als Profil „lolin_d32_pro_sdmmc_pe“ ausgewählt? Wenn ja, dann sollte ganz unten, in den blauen Zeile „env:lolin_d32_pro_sdmmc_pe …“ stehen.

Ob Power auf 32 oder 115 muss orientiert sich daran, was bei JP5 auf der Rückseite konfiguriert ist. Üblicherweise liefere ich das mit 2+3 aus => 115.

Korrekt. Das gehört zum ESP32-Arduino-Framework.

Ja, das steht da nur zu Infozwecken. Weil man kann die GPIOs für SDMMC eh nicht ändern.

Hast du denn in Visual Studio Code auch als Profil „lolin_d32_pro_sdmmc_pe“ ausgewählt? Wenn ja, dann sollte ganz unten, in den blauen Zeile „env:lolin_d32_pro_sdmmc_pe …“ stehen.

Ja, hatte ich. Gehe heute Abend nochmal alles durch und poste ein diff+Screenshots

Wäre super wenn Du Dein binary teilen könntest (für rc522). Hatte dummerweise kein Backup gezogen.

Ich schicke dir das per PN, weil das ganze Thema hier überhaupt nicht hingehört.

stimmt, sorry, hatte in diesem thread nur die letzten posts gelesen.
Hat sich jedenfalls erledigt, mit deiner fw läuft es, Danke! Mit meiner jetzt auch. Habe keine Änderungen mehr im Code gemacht, einziger Unterschied war, dass ich mit esptool heute mal ein erase_flash durchgeführt hatte. Vielleicht war ich auch nur verpeilt…

1 „Gefällt mir“

Tolle Platine. Ich bin gerade dabei mir die Teile für diese Platine zusammenzusuchen und wollte mal Fragen aus welchem Grund du dich für diese MOSFETs entschieden hast. Ich suche nämlich momentan alternative Transistoren, da der IRL3103 ja als „discontinued“ eingestuft wurde.

Im Grunde geht’s, neben einem möglichst niedrigen Widerstand auf der Drain/Source-Strecke, vor allem um Vgs. Die muss hinreichend gering sein, so dass der Mosfet durchsteuert bei nur 3.3 V auch durchsteuert. Die meisten Mosfets, die man so findet, sind halt für SMD. Das wären z.B. AO3400, IRLML2444 oder IRLML6401.

Diese Platine war eine der ersten, die ich entworfen habe. Damals habe ich noch zwei Mosfets (P und N-Channel) eingesetzt, damit die Schaltung nicht-invertierend ist - das fand ich gedanklich irgendwie passender damals :slight_smile:. Man kann den ESP32 jedoch auch invertierend arbeiten lassen (LOW zum Einschalten) und sich den IRL3103 dann komplett sparen. Man muss die Schaltung dann nur etwas modifizieren.

Inzwischen lohnt sich, außer man hat dieses Develboard eh, der Aufbau dieser Platine eigentlich nur noch bedingt. Der Lolin32 war damals erheblich günstiger als der Lolin D32 und vor allem auch D32 pro. Das ist inzwischen nicht mehr so bzw. man kriegt ihn auch schlecht. Es wird Vieles Lolin genannt und man muss aber schauen, ob das auch wirklich auf die Platine passt. Ist schwierig irgendwie. Ich habe auch damals auch weniger drauf geschaut, dass die Platinen möglichst klein sind - das ist bei der mini halt anders. Wenn du aber genug Platz hast, dann mag das ggf. egal sein. Im ESPuino meiner Tochter ist diese Platine jedoch weiterhin im Einsatz.

Wie auch immer: Wenn es jetzt nur am IRL3103 hängt, dann kannst dich auch bei mir melden - ich habe davon noch ein paar hier liegen. Über AliExpress kriegt man sie auf jeden Fall weiterhin problemlos - z.B. 10PCS IRL2203N TO220 IRL2203 ZU 220 IRL2203NPBF IRL1004 IRL2505 IRL3103 IRL3713 IRL3803 IRL3705N IRL3705 IRL2505PBF IRL3705NPBF|Integrierte Schaltkreise| - AliExpress.

Danke für deine Antwort. Einen IRL3103 brauche ich nicht, danke für dein Angebot. Im Endeffekt wollte ich nur wissen, ob ich den mit einem meiner hier verfügbaren N-Kanal-Transistoren substituieren kann. Da ich dieses PCB sowieso nur provisorisch nutzen will, bis mein eigenes fertig ist, wollte ich eigentlich nur vorhandene Komponenten nutzen. Vermutlich werde ich ihn jedoch einfach via Drahtbrücke überbrücken und die Logik softwareseitig umkehren.

Hi @tueddy,

woher hast du den Schaltplan, also das Bild?
Und da gibts nicht zufällig eine Implementierung in easyEDA? :smiley:

Der PN5180 Schaltplan stammt noch aus dem Ursprungsreposity von A.Trappmann hier:

grafik