Ich arbeite an einem Projekt für meinen lokalen Makerspace. Wir haben ein begrenztes Budget. Ich hatte gehofft, die RFID-RC522 el'cheap'o RFID / NFC-Lesegeräte bei eBay verwenden zu können. Ich habe ein paar SPI-basierte Boards erhalten, sie funktionieren jedoch Die Codebeispiele für sie sind begrenzt.
Ich habe mehrere verschiedene Bibliotheken gefunden und mich für diese entschieden: https://github.com/ljos/MFRC522
Das Problem ist, dass der gesamte online verfügbare Code aus dem Python-Code einiger Chinesen zu stammen scheint, den die Leute übersetzt und in eine Arduino-Bibliothek gehackt haben.
Der Code funktioniert, aber Mifare-Karten sollen 4-, 7- oder 10-Byte-UIDs haben, und das Beispiel / die Bibliothek gibt eine 5-Byte-Seriennummer zurück.
Es gibt keine Dokumentation und das NXP-Datenblatt ist unverständlich ... Außerdem scheint es mit den meisten Karten zu funktionieren, aber es funktioniert nicht mit Mastercard PayWave-Karten, die dem ISO 14443-Standard entsprechen. Der teurere RDM880-Leser, der auf dem MFRC500 basiert, funktioniert einwandfrei und verfügt über eine schöne Bibliothek, aber die Kosten machen die Implementierung unmöglich.
Kann mir jemand helfen, dass dieses auf NXP MFRC522 basierende Gerät die UID von allen ISO 14443-Karten liest?
#include <SPI.h>
#include <MFRC522.h>
#define RFID_SS 10
#define RFID_RST 5
MFRC522 rfid( RFID_SS, RFID_RST );
void setup() {
SPI.begin();
Serial.begin(115200);
rfid.begin();
}
void loop() {
byte data[MAX_LEN];
byte uid[5];
if ( rfid.requestTag( MF1_REQIDL, data ) == MI_OK ) {
if ( rfid.antiCollision( data ) == MI_OK ) {
memcpy( uid, data, 5 );
for ( int i = 0; i < 5; i++ ) {
Serial.print( uid[i], HEX );
Serial.print( ' ' );
}
Serial.println();
}
}
}
uid
Array hat die Länge 5. Haben Sie versucht, ein größeres Array zu verwenden, da Sie ein 10-Byte-Ergebnis wünschen?