NFC/RFID mit Micropython ...

  • Mit der C/C++ Library werden auch längere IDs ausgelesen. Das habe ich schon ausprobiert.

    Das Reh springt hoch. Das Reh springt weit. Warum auch nicht? Es hat ja Zeit. 8o

  • Es sieht für mich so aus, als ob mit dieser Klasse (obwohl die Kennung für 7 Byte UIDs (0x88) erkannt wird) nur 4 Bytes ausgelesen werden können.

    Das Auslesen von 7 oder 10 Byte UIDs fehlt schlicht noch.

    Das Reh springt hoch. Das Reh springt weit. Warum auch nicht? Es hat ja Zeit. 8o

  • Hi. Ok -- ich bin leider (micro)Python-Anfänger und bin ja schon froh, dass ich soweit durchgestiegen bin ... daher kann ich nicht gut beurteilen, welche Änderungen hier nötig sind. Vermutlich len(recv) == 5 und das darunter??

  • Naja, wenn man sich die MFRC522 Klasse anschaut, sieht es auch ganz so aus als wenn in der aufgerufenen Methode nur vier Bytes ausgelesen werden:


    Das Reh springt hoch. Das Reh springt weit. Warum auch nicht? Es hat ja Zeit. 8o

  • Hallo. Genau das war auch meine erste Idee -- funktioniert aber leider nicht. Es gibt dann eine Fehlermeldung (irgendwas mit "List format..."). Die 4 funktioniert übrigens noch aber bis 7 geht es nicht. Die Ursache kenne ich aber nicht ...

  • Das ist jetzt nur eine Annahme, weil ich das nicht selber ausprobiert habe aber ich würde in read.py mal die Zeile


    uid = ("0x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3])) erweitern auf


    uid = ("0x%02x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3], raw_uid[4]))


    und schauen ob das funktioniert. Wenn ja, dann noch die restlichen drei Byte hinzufügen.

    Das Reh springt hoch. Das Reh springt weit. Warum auch nicht? Es hat ja Zeit. 8o

  • Hallo.

    Ich bin neu in der micropython-Welt und habe ein kleines Projekt begonnen, bei dem es darum geht, ein RFID-RC522-Modul mit dem ESP32 zu koppeln. Dazu habe ich diese Software verwendet:

    https://github.com/Tasm-Devil/micropython-mfrc522-esp32.

    Das funktioniert insofern, als dass die UID gelesen wird -- allerdings war's das dann auch. Vielleicht ist ja in diesem Forum bereits jemand weiter und kann weiterhelfen?


    Was ich nicht verstehe: Alle RFID-Tags, die ich besitze (Aufkleber, Schlüsselanhänger, "Scheckkarten"), besitzen eine UID, die 56 Bit lang ist. Der mfrc522-Scanner liefert z.B. "0x88 04 19 ee" wohingegen auf dem Smartphone (mit der App "NFC-Tools") als UID "04:19:EE:B2:75:71:81" ausgegeben wird (die ersten Hex-Ziffern sind also gleich -- aber das war's dann auch). Mir ist nicht klar, wie ich den micropython-Code (read.py) anpassen müsste, um die vollständige UID erfassen zu können?

    Und als wäre das nicht schon genug: Neben der UID soll natürlich auch der Datensatz, der schon auf dem RFID-Tag gespeichert wurde, wieder eingelesen und angezeigt werden. Da könnte also z.B. stehen "Hammer". Das wird von read.py leider im Moment überhaupt nicht berücksichtigt.


    Das zweite Problem besteht darin, dass die UID nur einmal eindeutig erfasst und dann mit dem Vorgänger verglichen werden soll. Es geht mir also gar nicht darum, dass die ganze Zeit gescannt wird, sondern dass die UID eindeutig und im Vergleich zum Vorgänger erfasst wurde.

    Vielleicht sind sind ein paar Fragen zuviel auf einmal ... aber vielleicht findet sich jemand, der genau das gleiche Problem hat(te):?::/