RC522: Erkennung wann Karte aufliegt und wann nicht

Einige Leute wünschen sich ja schon seit langem das Feature, dass die Musik aufhören soll zu spielen, wenn die Karte runtergenommen wird. Dass ich das schon so lange vor mir herschiebe hat u.a. auch damit zu tun, dass die Lib des RC522 an dieser Stelle irgendwie reichlich seltsam ist. Probiert hatte ich es vor Ewigkeiten mal, es dann aber wieder sein gelassen.

Auszug aus meinem Code:

Es gibt diese zwei Methoden PICC_IsNewCardPresent und PICC_ReadCardSerial() - das passt soweit. Nur lässt sich damit alleine leider nicht verlässlich sagen, ob eine Karte aufliegt oder nicht. Ich habe mir dann mal im Nachbarforum angeschaut, wie das dort gemacht wird. Da wird im Anschluss noch ein Dummy-Read gemacht und ein Block ausgelesen. Ist das nicht mehr möglich, ist die Karte weg. Ich hatte hier nur das Problem, dass das z.B. nicht funktioniert hat, wenn man die Karte direkt auf den Kartenleser gelegt hat. D.h. es waren mehrere cm Abstand notwendig. Weiß nicht, ob man hier mit Gain experimentieren muss, aber das kann es ja eigentlich nicht sein.

Wie auch immer: Vielleicht ist ja jmd. hier, der sich mit dem Teil besser auskennt als ich es tue. Für den PN5180 habe ich das Feature schon implementiert - das hat wie erwartet funktioniert.

Vielleicht komme ich diesen Monat dazu meine Box für die ESPuino Firmware umzubauen. Dann schaue ich mir auch gerne dieses Feature an.

Ansonsten hab ich das bei meiner alten Version schon realisiert.

Praktisch muss die Karte schlafen schicken und dann regelmäßig nachsehen,
ob sie sich noch aufwecken lässt.

Die entscheidende Funktion in meinem Quelltext ist
bool RFID::isCardPresent( RFCard *pRfCard )

Ok, danke für den Hinweis :+1:
In deinem Code steht
Since wireless communication is voodoo we'll give it a few retries before the card is gone

Das trifft es ganz gut beim RC522 :joy:
Ja, also ich wäre nicht ganz bös’ drum, wenn das jmd. implementieren möchte. Aber ich schaue mir das nochmal genauer an in deinem Code.

@elmar-ops hat da schon mal Vorarbeit geleistet. Hat allerdings bei mir nicht 100% funktioniert leider.