Sto lavorando a un progetto per il mio Makerspace locale, abbiamo un budget limitato, quindi speravo di utilizzare i lettori RFID-RC522 e l''Reap'o RFID / NFC su eBay, ho ricevuto un paio di schede basate su SPI, funzionano, tuttavia funzionano gli esempi di codice per loro sono limitati.
Ho trovato diverse librerie diverse e ho optato per questa: https://github.com/ljos/MFRC522
Il problema è che tutto il codice disponibile online sembra provenire da alcuni ragazzi cinesi codice Python che le persone hanno tradotto e violato in una libreria Arduino.
Il codice funziona, ma le schede Mifare devono avere UID da 4, 7 o 10 byte e l'esempio / libreria restituisce un numero seriale di 5 byte.
Non c'è documentazione e la scheda tecnica NXP è incomprensibile ... Inoltre sembra funzionare con la maggior parte delle carte, ma non funziona con le carte Mastercard PayWave conformi allo standard ISO 14443. Il lettore RDM880 più costoso, basato sull'MFRC500, funziona bene e ha una bella libreria ma il costo rende impossibile l'implementazione.
Quindi, qualcuno può aiutarmi a ottenere questa unità basata su NXP MFRC522 che legge l'UID da tutte le carte ISO 14443.
#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 è di lunghezza 5. Hai provato a utilizzare un array più grande poiché desideri un risultato di 10 byte?