我正在为我的本地Makerspace进行一个项目,我们的预算有限,所以我希望在eBay上使用RFID-RC522 el'cheap'o RFID / NFC阅读器,我收到了几个基于SPI的板,它们可以工作,但是他们的代码示例是有限的。
我发现了几个不同的库,并选择了一个库:https : //github.com/ljos/MFRC522
麻烦的是,所有可用的在线代码似乎都源于人们翻译并侵入Arduino库的一些中国人的Python代码。
该代码有效,但是Mifare卡应具有4、7或10字节的UID,并且示例/库返回的是5字节的序列号。
没有文档,并且NXP数据表令人难以理解...此外,它似乎适用于大多数卡,但不适用于符合ISO 14443标准的Mastercard PayWave卡。基于MFRC500的较为昂贵的RDM880阅读器可以很好地工作,并且具有不错的库,但是成本使得无法实现。
因此,有人可以帮助我获得这个基于NXP MFRC522的单元,该单元从所有ISO 14443卡中读取UID。
#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
数组长度为5。是否要使用更大的数组,因为您想要10字节的结果?