Estou trabalhando em um projeto para o meu Makerspace local, temos um orçamento limitado, então eu esperava usar os leitores RFID / RC522 el'cheap'o RFID / NFC no eBay, recebi algumas placas baseadas em SPI, mas elas funcionam, no entanto os exemplos de código para eles são limitados.
Encontrei várias bibliotecas diferentes e resolvi esta: https://github.com/ljos/MFRC522
O problema é que todo o código disponível on-line parece originar-se de alguns códigos Python chineses que as pessoas traduziram e invadiram uma biblioteca do Arduino.
O código funciona, mas os cartões Mifare devem ter UIDs de 4, 7 ou 10 bytes e o exemplo / biblioteca está retornando um número de série de 5 bytes.
Não há documentação e a folha de dados do NXP é incompreensível ... Além disso, parece funcionar com a maioria dos cartões, mas não funciona com cartões Mastercard PayWave que estão em conformidade com o padrão ISO 14443. O leitor RDM880, mais caro, baseado no MFRC500, funciona bem e possui uma boa biblioteca, mas o custo torna a implementação impossível.
Então, alguém pode me ajudar a obter essa unidade baseada no NXP MFRC522 lendo o UID de todos os cartões 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
matriz é de comprimento 5. Você tentou usar uma matriz maior porque deseja um resultado de 10 bytes?