ich habe das nachfolgende Problem beim Lesen von RFID Karten und finde leider dafür keine Lösung
Zur Erkennung von RFID Karten/Chips, nutze ich den D1 Mini und MFRC522. Als Software verwende ich micropython (was anderes kann ich nicht )
Im Prinzip war die Schaltung einfach vollzogen, und als Python Funktionen benutze ich diese hier (mfrc522.py):
https://github.com/wendlers/micropython-mfrc522
Zum Lesen der Karte wird dann diese Datei aufgerufen:
Code: Alles auswählen
import mfrc522
from os import uname
import time
global rdr
if uname()[0] == 'WiPy':
rdr = mfrc522.MFRC522("GP14", "GP16", "GP15", "GP22", "GP17")
elif uname()[0] == 'esp8266':
rdr = mfrc522.MFRC522(0, 2, 4, 5, 14)
else:
raise RuntimeError("Unsupported platform")
print("")
print("Place card before reader to read from address 0x08")
print("")
def uid(raw_uid):
return "0x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3])
def readCard():
(stat, tag_type) = rdr.request(rdr.REQIDL)
if stat == rdr.OK:
(stat, raw_uid) = rdr.anticoll()
# print(stat, raw_uid)
if stat == rdr.OK:
# print("New card detected")
print('----------------')
print(raw_uid)
print(uid(raw_uid))
print("")
else:
print('rdr.anticoll XXXX')
else:
print('rdr.OK XXXX')
def do_read():
try:
i=0
while True:
i=i+1
print(i)
readCard()
except KeyboardInterrupt:
print("Bye")
Der Code funktioniert, zumindest fast...
Der Ergebnis soll sein, dass bei einer erkannten Karte die UID ausgegeben wird und bei einer nicht erkannten Karte XXXX... davor kommt jeweils eine laufende Zahl ...
Mein Problem besteht nun darin, dass, wenn ich eine Karte auf den Reader drauf lege, so würde ich vermuten, müsste dieser mir ständig die UID dieser Karte zurückgeben.
Leider macht er das nicht. Nur bei exakt jedem zweitem Rückgabewert erhalte ich die UID ansonsten XXXX (also ob kein Chip erkannt worden wäre).
Das selbe passiert mit unterschiedlichen Karten oder Chips.
Der Output in picocom sieht dann wie folgt aus:
>>>
>>> import read1
Place card before reader to read from address 0x08
>>> read1.do_read()
1
----------------
[101, 82, 139, 171, 23]
0x65528bab
2
rdr.OK XXXX
3
----------------
[101, 82, 139, 171, 23]
0x65528bab
4
rdr.OK XXXX
5
----------------
[101, 82, 139, 171, 23]
0x65528bab
6
rdr.OK XXXX
7
----------------
[101, 82, 139, 171, 23]
0x65528bab
8
rdr.OK XXXX
9
----------------
[101, 82, 139, 171, 23]
0x65528bab
10
rdr.OK XXXX
11
----------------
[101, 82, 139, 171, 23]
0x65528bab
12
rdr.OK XXXX
Für mich ist das eher nicht ganz zufriedenstellend ...o der ist das Verhalten des Readers normal? Habt Ihr ähnliche Erfahrungen gesammelt mit einem esp oder auch mit Raspi?
Vielen Dank für Eure Unterstützung!!!