Probleme mit RFID-Leser PN5180

Nachdem ich meinen ersten ESPuino zusammengebaut habe ist mir aufgefallen, dass ich ein Problem mit dem RFID-Leser habe. Da ich keine grossen Kenntnisse der heutigen Elektronik habe, bemühte ich Claude in der Fehlersuche. Ich erlaube mir hier das Ergebnis zu Posten:

PN5180: Wiederholtes Neustarten der Wiedergabe bei aufliegender Karte

Hardware / Software

  • Platine: ESPuino „Complete“, Hardware-Revision 5.1
  • Firmware: 20260816-dev
  • RFID-Leser: PN5180 (13-Pin-Modul)

Problembeschreibung

Beim Auflegen einer RFID-Karte startet die Wiedergabe korrekt. Nach kurzer, unregelmäßiger Zeit (mal nach wenigen Sekunden, mal erst nach mehreren Minuten) startet dieselbe Wiedergabe erneut von vorn – obwohl die Karte durchgehend unbewegt auf dem Leser liegen bleibt. Wird die Karte entfernt, tritt keine weitere Wiederholung mehr auf.

Bereits ausgeschlossene Ursachen

Folgende Punkte wurden geprüft und als Ursache ausgeschlossen:

Kabelführung/Einstreuung: Leitung zum RFID-Leser möglichst kurz verlegt, mit größtmöglichem Abstand zur Lautsprecherleitung; Lautsprecherleitung zusätzlich verdrillt.

Lötstellen: Sämtliche Pin-Kontakte auf der RFID-Platine wurden kontrolliert und nachgelötet, optisch sauber.

Mechanische Verbindung: Die ursprünglich gecrimpte Verbindung auf der Leser-Seite wurde durch eine fest verlötete Steckleiste ersetzt (Complete-Seite: konfektionierte Buchse). Wackelkontakte sollten damit ausgeschlossen sein.

Pin-Zuordnung (10-Pin-Stecker Complete ↔ 13-Pin-Leiste PN5180): Die Verdrahtung wurde Pin für Pin nachvollzogen und ist korrekt: RST↔RST, CS↔NSS, MOSI↔MOSI, MISO↔MISO, SCK↔SCK, BUSY↔BUSY, IRQ↔IRQ, GND↔GND. Physische Pin-Positionen weichen zwar zwischen Stecker und Leser-Modul voneinander ab, die Funktionsnamen stimmen aber überein, was so korrekt ist.

Spannungsversorgung: Der Leser erhält ausschließlich 3.3V (Complete Pin 2 → Leser Pin 2). Complete-Pin 1 (5V) ist nicht mit dem Leser verbunden. Da Pin 1 und Pin 2 auf dem Lesermodul werkseitig intern gebrückt sind, ist diese Konfiguration korrekt (kein Überspannungsrisiko auf der digitalen Versorgungsdomäne VDD(IO)).

Diagnose über seriellen Log

Ein Blick in den Debug-Log (Loglevel Debug) beim Auftreten des Fehlers zeigte folgendes wiederkehrendes Muster:

PN5180 wedge/removal suspected (.....  ms since last good ISO-14443 read): silent re-init
PN5180 silent heal recovered ISO-14443 card after ... ms

sowie gelegentlich:

PN5180 silent heal gave up after .... ms (ISO-14443 card not re-found)
RFID-Karte erkannt: ...

Wichtige Beobachtung: Die erkannte Karten-UID war bei jedem Ereignis identisch – es handelt sich also nicht um Fehllesungen/Bitfehler, sondern um kurze Leseaussetzer, die die Firmware selbst über die (relativ neue) „Wedge vs. Removal“-Erkennung in RfidPn5180.cpp abzufangen versucht: Bleibt ein gültiges Lesen für die Dauer des konfigurierten Debounce-Werts aus, wird einmalig ein „Silent Heal“-Sweep durchgeführt. Findet dieser die Karte wieder, geht die Wiedergabe unbemerkt weiter; findet er sie nicht, wird die Karte fälschlich als entfernt/neu aufgelegt gewertet – das ist der sichtbare Wiedergabe-Neustart.

Der zugehörige Parameter „PN5180 Debounce“ (Web-UI: Allgemein → RFID-Reader) stand im Auslieferungszustand auf 500 ms. Im Log war zu sehen, dass die tatsächlich verstrichene Zeit bis zur Auslösung aufgrund des Polling-Zyklus (abwechselnd ISO-14443/ISO-15693) real bereits bei ca. 1200 ms lag.

Bisher ergriffene Maßnahme

„PN5180 Debounce“ versuchsweise von 500 auf 2000 erhöht.

Ergebnis (Kurzzeittest, ca. 6 Minuten)

Nach der Erhöhung wurde die „Wedge suspected“-Meldung weiterhin gelegentlich alle 1–5 Minuten ausgelöst (jetzt bei ca. 2130–2540 ms tatsächlich verstrichener Zeit), jedoch in allen Fällen mit „silent heal recovered“ innerhalb von ~280–306 ms. Im Vergleichszeitraum vor der Anpassung waren im gleichen Zeitfenster mehrfach „gave up“-Ereignisse mit anschließendem Wiedergabe-Neustart aufgetreten. Ein Langzeittest über den normalen Alltagsgebrauch steht noch aus.

Offene Fragen an die Community

Sind die periodischen kurzen ISO-14443-Leseaussetzer (alle 1–5 Minuten, bei ansonsten korrekt verdrahteter Hardware) bei ruhig aufliegender Karte am PN5180 bekannt/erwartbar, oder deutet das auf eine noch offene Ursache hin (z. B. HF-Kopplung, Antennenposition)?

Ist das Erhöhen von „PN5180 Debounce“ der empfohlene Weg, um das gelegentliche Scheitern des einmaligen „Silent Heal“-Sweeps zu kompensieren, oder ist ggf. geplant, den Sweep selbst robuster (z. B. mit mehreren Versuchen statt nur einem) zu gestalten?

Gibt es bereits ähnliche Rückmeldungen zu #428 / #444 im Zusammenhang mit dieser „Wedge vs. Removal“-Logik?

Das Thema ist der Hans Meiser unter den Evergreens hier im Forum. Es gab schon zig Versuche, es in den Griff zu kriegen und auch schon andere Ansätze. Ich habe mit #428 nochmal mit KI-Hilfe versucht, das Thema zu adressieren. Das hat es ein Stück weit verbessert. @sadilek hat sich des Themas dann nochmal angenommen und in meinem Test sah das dann ok aus.

Keine Ahnung.

Es ist auf jeden Fall eine Möglichkeit, das Problem etwas einzudämmen. Aber eine Erhöhung führt auch zu trägerer Bedienung.

Da will ich offen mit umgehen: Von meiner Seite wird es bei diesem Feature keinerlei Vorstöße und Tests mehr geben - meine Motivation ist KOMPLETT aufgebraucht. Ich hatte mit KI nochmal so ein bisschen davon und es schien mir mit dem Fix von @sadilek auch behoben. Tja, offenbar nicht.
Ich sage schon seit Anbeginn immer wieder, dass ich von diesem Feature genau nichts halte - aus verschiedenen Gründen. Insbesondere aber baut jeder ein anderes Gehäuse und die Qualität der PN5180 haben wir auch nicht im Griff. Und die der Tags ist auch uneinheitlich. Insofern: Müsst ihr euch was überlegen, wie ihr das generisch gelöst kriegt - ich bin da raus.

Da keiner mehr testen will gab es in dieser Sache noch gar keine Rückmeldungen. Mehr oder weniger parallel dazu gab es eine ähnliche Änderung auch für den RC522. Da gab’s auch keine.

Sorry für die (in Teilen) launische Antwort, aber ich kann das einfach nicht verbergen, wie sehr mich dieses Thema nervt.

Das wird dir wahrscheinlich nicht viel weiter helfen, aber ich kann zumindest berichten, dass sich seit #444 das Problem bei mir erledigt hat. Mein Sohn lässt die Karte immer auf dem Gerät liegen und es gab jetzt keinen Titel-Neustart mehr. Die RFID-Reader Einstellungen sind bei mir die Standard-Einstellungen (gain 7, interval 100, debounce 500).

Das ist nur für RC522 relevant.

Nach meiner Wahrnehmung stößt man mit der Funktionalität hier einfach an die Grenzen der Technik, was genutzte Spannung und Reader Reichweite angeht.
Grundsätzlich gilt, dass der Reader empfindlich für Störungen ist, wenn die Kabel nicht sauber verlegt sind.
Wenn die Kabel sauber liegen gibt es aus meiner bisherigen Erfahrung 2 Ansätze um die Funtionalität Pause wenn RFID-Tag entfernt störungsfrei zu nutzen.

  1. Verzicht auf ISO 14443 Karten und konsequente Nutzung von ISO/IEC 15693 Tags. Ich habe in der Vergangenheit diese Aufkleber hier sehr zufriedenstellen genutzt. Bei ca 5mm Abstand zum Reader nicht 1 Heal
  2. Verwendung eines Buck Boost Converter auf 5V für den 5V Input des PN5180. Damit hat sich bei mir die generelle Reichweite und auch die Lesezuverlässigkeit der 14443 Karten verbessert. Für die Karten gibt es weiterhin Heals, aber ich komme aktuell mit 300 ms aus.

Dass 15693 die Reichweite deutlich verbessert, kann ich bestätigen. Das habe ich schon oft getestet. Sie sind halt nicht ganz so „gängig“ wie 14443 und auch teurer.

Habe ich ehrlich gesagt noch nie getestet, könnte man aber einfach testen:
a) Vom PN5180 ist JST-Anschlussleitung ablöten, die ganz links ist (5 V). Die abgelötete Leitung mit Isolierband gegen Kurzschluss sichern.
b) Eine neue eindrähtige Verbindungsleitung zwischen VUSB (das ist an der Complete direkt unterhalb der USB-Buchse - die Beschriftung ist unten) und dem PN5180 legen. Also im Endeffekt hat man vom breiten Stecker (10polig) dann nur 9 Leitungen angeschlossen und dazu nochmal die eine von VUSB.
c) Complete mit USB versorgen. Das ist wichtig, weil nur dann an VUSB 5 V vorhanden sind. Im Akkubetrieb klappt das nicht.

Wenn das funktioniert, kann man drüber nachdenken, da mit einem externen (Buck-)Boost-Converter ranzugehen, so dass man die 5 V immer hat.

geht denn bei beiden die LPCD? oder waren das nur die 14443 Karten?

btw wieder mal der Beweis HF ist Voodoo und meist weiß man nicht warum es jetzt geht oder nicht… :wink:

Hallo zusammen, hallo @biologist,

nur kurz zur Klarstellung: Meine Fragen waren nicht als Kritik oder Forderung gemeint – ESPuino gefällt mir sehr gut, und ich weiß den Aufwand zu schätzen, den ihr hier investiert. Falls das anders angekommen ist, tut mir das leid.

Für meinen Aufbau (Holzbox mit PN5180, Karte steckt dauerhaft im Schacht) vermute ich, dass die Wiederholungen mit wiederholten Reads zusammenhängen, solange die Karte im Feld liegt. Da das laut euch stark von Gehäuse, Leser- und Tag-Qualität abhängt, möchte ich das für mich lösen, statt eine generische Lösung im Projekt zu erwarten.

Dazu würde ich gerne noch etwas ausprobieren: Habt ihr Erfahrungen, ob bestimmte Kartentypen (Aufkleber oder ähnlich) beim Verbleib im Feld stabilere bzw. weniger Wiederholungs-Reads liefern? Falls es dazu schon Beobachtungen gibt, wäre ich für Hinweise dankbar – ansonsten teste ich das einfach selbst durch.

Danke euch und viele Grüße!

Keine Angst, ich habe das nicht als Kritik aufgefasst. Das Thema poppt halt nur immer wieder auf.

Zum zweiten Teil: Ich meine, dass es hier irgendwo in den Tiefen des Forums schon einen Thread gibt, wo Tags aufgelistet wurden, die funktionieren. Wurde aber nicht großartig gepflegt wenn ich das richtig in Erinnerung habe.