LPCD funktioniert nicht

Ich versuche gerade LPCD in Gang zu kriegen. Die Firmware vom PN5180 habe ich auf 4.1 aktualisiert, in espuino PN5180_ENABLE_LPCD aktiviert und IRQ ist an IRQ vom Portexpanderboard angeschlossen. Bisher habe ich nur einen Kopfhörer angeschlossen (per Kopfhörerplatine) und noch keinen Lautsprecher.
Wenn ich nun per Webgui den Esp ausschalte, dann wird er nicht aktiv, wenn ich einen Tag ran halte. Der Tag ist eingerichtet und funktioniert, wenn ich den Esp per Knopf aktiviere. Ich habe schon alle Arten von Tags getestet, die ich da habe: Karte, Aufkleber und Plastikanhänger.

Jemand ne Idee?

Wie sind denn die Lötjumper gesetzt?

LPCD funktioniert nur für die „normalen“ ISO-14443 Tags, nicht für ISO-15693.
Bevor sich der ESP schlafen legt solltest Du diese Meldungen in der Konsole sehen:

Firmware version=4.1
prepare low power card detection...
PN5180 IRQ PIN: xx
switch to low power card detection: success

Klappt das?

So wie du es mir geschickt hast:
jp1: 1-2
jp2: 1-2
jp3: 1-2
jp4: -
jp5: 2-3
jp6: 1-2
Das espuino-Firmwaresetup habe ich entsprechend nach deinem Guide gemacht.

Ah, das ist hilfreich. Bei mir kommt leider:

Gehe jetzt in Deep Sleep!
Lautsprecher ausgeschaltet
ws[/ws][1] disconnect
Firmware version=63.252
prepare low power card detection...
PN5180 IRQ PIN: 1
switchToLPCD failed
deep-sleep, good night.......

Als ich das PN5180 Firmwareupdate mit einem anderen ESP32 gemacht hatte stand nach dem Update-Sketch Success und nach dem Info-Sketch als Version 4.1. Hm. Version 63.252 ist fishy :sweat_smile:

JP4 muss gebrückt sein. Sonst kommen die IRQs nicht am Port-Expander an, was dazu führt, dass der ESP32 durch den RFID-Reader nicht aufgeweckt werden kann.

1 „Gefällt mir“

Das sieht nicht gut aus, Du bist einige Versionen weiter als der Hersteller selbst (NXP) :wink:
Hilft es wenn Du hinter dieser Zeile

nfc.reset();

einfügst? Dann sollte zumindest die richtige Firmware Version 4.1 angezeigt werden. Müsste jetzt erstmal das Board rauskramen um das selbst zu testen. Ist Dein Board „lolin_d32_pro_sdmmc_pe“?

1 „Gefällt mir“

Ah ok, danke schon mal.
Hat nichts an der Ausgabe geändert und jetzt wacht er sofort wieder auf nach dem Ausschalten. Auch wenn ich PN5180_ENABLE_LPCD wieder auskommentiere. Ich vermute damit er aus bleibt müsste ich JP4 wieder entbrücken?

Wenn ich PN5180_ENABLE_LPCD auskommentiert habe kommt beim Start

[...]
PSRAM: 4194156 bytes
Flash-size: 16777216 bytes
Firmware version=4.1
RFID-Tags koennen jetzt gescannt werden...
Neue Lautstärke empfangen via Queue: 5
[...]

Wenn ich das drin habe, dann taucht die Zeile mit Firmware version gar nicht auf.

Ahaa, das sieht schon besser aus:

Gehe jetzt in Deep Sleep!
Lautsprecher ausgeschaltet
ws[/ws][1] disconnect
Firmware version=4.1
prepare low power card detection...
PN5180 IRQ PIN: 1
switch to low power card detection: success
deep-sleep, good night.......
ets Jul 29 2019 12:21:46

Allerdings wacht er immer noch nicht auf (JP4 ist gebrückt). Ich höre über den Kopfhörer jetzt (also im deep sleep) allerdings ein leichtes Pochen, mit ca 1 Sekunde Abstand. Wenn ich einen Tag dagegen halte wird das Pochen minimal stärker, aber sonst passiert nix.

Hmm, Du bist auf einen Fehler in der aktuellen Firmware gestoßen:

Wenn eine ISO-14443 Karte im Sleep-Modus aufgelegt wird signalisiert der PN5180 dies durch einen Signalwechsel auf dem RFID_IRQ Pin. Nun weiß ich nicht genau wie das bei dem Port-Expander behandelt wird - Vielleicht kann @biologist dazu etwas sagen? Ich verwende hier einen echten GPIO…

Ein Teil-Bugfix ist auf jeden Fall das Einfügen von nfc.reset(); nach dieser Zeile.

2 „Gefällt mir“

Das liegt auf dem Port-Expander und wird damit quasi wie ein Button behandelt. D.h. ein IRQ vom RFID kann den ESP32 über den Port-Expander aufwecken.

Muss @HansKlaus nicht noch JP1 auf 2-3 ändern?

1 „Gefällt mir“

Stimmt, da hast du Recht. Weil ansonsten wird der PN5180 im Deepsleep nicht mit Spannung versorgt.

1 „Gefällt mir“

Perfekt, das wars. Jetzt läuft es. Vielen Dank!
Da hab ich wohl irgendeinen Guide zu oberflächlich gelesen. :innocent:

Vielen Dank euch allen!

Edit: aus Neugier habe ich das nfc.reset noch mal rausgenommen. Er zeigt nun beim Ausschalten die richtige Firmwareversion an, allerdings geht er sofort wieder an mit folgender Ausgabe:

Gehe jetzt in Deep Sleep!
Lautsprecher ausgeschaltet
Firmware version=4.1
prepare low power card detection...
PN5180 IRQ PIN: 1
switch to low power card detection: success
deep-sleep, good night.......
ets Jul 29 2019 12:21:46

rst:0x5 (DEEPSLEEP_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:10944
load:0x40080400,len:6360
entry 0x400806b4
Maximale Inaktivitätszeit wurde aus NVS geladen: 10
Firmware version=4.1
RFID-Tags koennen jetzt gescannt werden...
Disconnected (device reports readiness to read but returned no data (device disconnected or multiple access on port?))
Reconnecting to /dev/ttyUSB0     Connected!
Aktuelle IP: 192.168.66.70
Synchronisiere Uhrzeit via NTP...
Aktuelle Batteriespannung: 3.45 V
Aktuelle Batterieladung: 100.00 %

Vielleicht ist das ja noch interessant. Wenn ich nfc.reset() wieder rein nehme ist wieder alles i.O.

Edit2: Man kann hier nur einen Beitrag als Lösung markieren. Wie beschrieben waren aber beide Sachen, Jumper und nfc.reset(), notwendig.

1 „Gefällt mir“

Also ich bastel ja scheinbar gerade mit ziemlich genau der gleichen Hardware wie du. Mir scheint es aber so, als wäre da evtl noch mehr nicht ganz korrekt?

  1. Scheint das Aufwachen nicht immer zu funktionieren. Hast du das auch schon beobachtet?
  2. Wird bei mir nach dem Neustart 2x RFID-Tags koennen jetzt gescannt werden... angezeigt. Hast du das auch?
Gehe in Deep Sleep wegen Inaktivität...
Gehe jetzt in Deep Sleep!
Lautsprecher ausgeschaltet
Firmware version=4.1
prepare low power card detection...
PN5180 IRQ PIN: 0
switch to low power card detection: success
deep-sleep, good night.......
ets Jul 29 2019 12:21:46

rst:0x5 (DEEPSLEEP_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:10944
load:0x40080400,len:6360
entry 0x400806b4
Maximale Inaktivitätszeit wurde aus NVS geladen: 1
Firmware version=4.1
RFID-Tags koennen jetzt gescannt werden...
RFID-Tags koennen jetzt gescannt werden...

Also ich habe bis jetzt nur ein paar Minuten mit LPCD rumgespielt. ^^

Bis jetzt noch nicht. Mir ist nur aufgefallen, dass das Tag am Reader sein muss, bis er fertig gestartet ist. Ist aber auch irgendwie logisch. Ich habe Karte, Aufkleber und Plastiktag getestet, funktionieren alle.

Nein, kam mir noch nicht unter.

Edit: Mir ist gerade eingefallen, dass ich mit dem NFC-Reader neulich Probleme hatte. Das lag wohl daran, dass ich den Anschluss am Reader nur mit Standardpinheadern m/w gemacht hatte. Habe die Kabel dann angelötet, seitdem kein vergleichbares Problem mehr gehabt.

Ja das habe ich auch gemerkt. Und er geht auch nicht wieder aus, wenn das ein ungültiger Tag ist, da der Grund des Wakeups wohl nicht unterschieden werden kann. Und Webradios gehen nicht, da die schneller gestartet werden als das WLAN an ist. Das schaue ich mir die Tage noch mal an.

Okay das finde ich wirklich komisch. Hätte gedacht das sollte sich bei gleicher Hardware und vermutlich sehr ähnlicher Software ähnlich verhalten :grinning:

Ich hab auch alles gelötet und keine Header…

Ich habe meine settings.h und settings-lolin_d32_pro_sdmmc_pe.h mal hier ran gepackt. Dann kannst du mal vergleichen.
settings.zip (9,4 KB)

Für alle Mitleser: LPCD = low power card detection = Aufwachenden des ESPuino bei Auflegen einer Karte = ein bisschen Over-Engineering ;-). Bugfix:

https://github.com/biologist79/ESPuino/pull/173

1 „Gefällt mir“

Ja das ist ein methodisches Problem mit dem Port-Expander. Aber ich denke du könntest das umschiffen. Und zwar kann man zur Ansteuerung des Mosfets entweder den Port-Expander (PE) nehmen oder einen GPIO. Ich liefere alle Sachen, die ich löte, mit der PE-Einstellung aus, so dass man GPIO 32 für andere Zwecke frei hat. Eben diesen GPIO könntest du verwenden, da es praktischerweise auch ein RTC-Pin ist. Mit GPIO 5, den es dort auch gibt, geht das nicht.

Prozedere:
a) Lötbrücke JP4 öffnen.
b) Extern einen kleinen Draht von RFID.IRQ nach EXT.13 löten.
c) RFID.IRQ auf 32 ändern: ESPuino/src/settings-lolin_d32_pro_sdmmc_pe.h at cfddbf8ab2e5f1dffc5b0db4615f752a161ea888 · biologist79/ESPuino · GitHub.

Interessanter Punkt. Aber ja: Nachdem ich den Start neulich asynchron gemacht habe, kann das natürlich passieren.

Den Bugfix nehme ich auf in den Master.

1 „Gefällt mir“

Und er geht auch nicht wieder aus, wenn das ein ungültiger Tag ist, da der Grund des Wakeups wohl nicht unterschieden werden kann.

Das Thema ist zwar schon älter, es gibt aber jetzt einen Fix:

Mit Softwarestand 20231104-1 (aktuell im DEV Branch verfügbar) werden LPCD-Fehlalarme auch am Port-Expander erkannt und der ESPuino kann sich bei fehlender/ungültiger Karte wieder schlafen legen. Das war bislang nur möglich wenn der RFID.IRQ an einem echten RTC-GPIO angeschlossen war.

Neuer Ablauf: Nach dem Aufwachen wird der Port-Expander kurz aktiviert und der Status des RFID.IRQ gelesen. Nur wenn das Signal auch wirklich vom PN5180 kam wird die Kartenerkennung gestartet. Wird keine Karte erkannt geht’s sofort zurück in den Deep-Sleep Modus.

Wer ein älteres Board verwendet kann es ja mal ausprobieren. Bei neueren Boards besteht das Problem nicht mehr da der IRQ jetzt an einem echten RTC-GPIO hängt.