0、结果
说明:先来看看串口调试助手显示的结果,"卡号"对应的是IC卡的卡号,"1号已进入"表示识别到正确的卡,也就是之前录入的卡号,因此可以应用到门禁。如果是你想要的,可以接着往下看。
1、外观
说明:IC卡感应模块基本上是一样的,IC卡可能形态各异。
2、连线
说明:只需要连接七根线。
uno————MFRC-522
3.3V------------VCC
GND------------GND
9------------RST
10------------SDA
11------------MOSI
12------------MISO
13------------SCK
空------------IRQ
其他线可以忽略。
3、源程序
说明:此程序可以读取卡号,也可以识别卡号,并将对应功能进行函数化,方便移植。
/*
接线:
3.3V------VCC
GND------GND
9------RST
10------SDA
11------MOSI
12------MISO
13------SCK
空------IRQ
*/
/****************************************rfid part****************************************/
#include <SPI.h> //调用库文件
#include <RFID.h> //调用库文件
RFID rfid(10, 9); //定义软串口
/****************************************set up and loop part*********************************/
void setup()
{
Serial.begin(9600); //设置串口波特率为9600
SPI.begin(); //初始化SPI
rfid.init(); //rfid初始化
}
void loop()
{
getRfidData(); //找到卡号
}
/****************************************rfid part****************************************/
/*找到卡号*/
void getRfidData() {
if (rfid.isCard()) { //如果感应到有卡
if (rfid.readCardSerial()) { //读取对应的卡号
Serial.print("卡号:");
Serial.print(rfid.serNum[0], HEX); //hex是16进制的意思
Serial.print(" ");
Serial.print(rfid.serNum[1], HEX);
Serial.print(" ");
Serial.print(rfid.serNum[2], HEX); //串口打印对应的值
Serial.print(" ");
Serial.print(rfid.serNum[3], HEX);
Serial.print(" ");
Serial.print(rfid.serNum[4], HEX); //串口打印对应的值
Serial.println(" ");
rfidControl(); //刷对应的卡,有对应的操作
}
rfid.selectTag(rfid.serNum); //选卡,可返回卡容量(锁定卡片,防止多数读取),去掉本行将连续读卡
rfid.halt();
}
}
/*刷对应的卡,有对应的操作*/
void rfidControl() {
if (rfid.serNum[0] == 0x7c && rfid.serNum[1] == 0xe1 && rfid.serNum[2] == 0xe8 && rfid.serNum[3] == 0x38 && rfid.serNum[4] == 0x4d ) {
Serial.println("1号已进入!"); //如果当前卡号和之前存入的卡号一样,就打印对应的内容
}
else if (rfid.serNum[0] == 0x50 && rfid.serNum[1] == 0x03 && rfid.serNum[2] == 0x9B && rfid.serNum[3] == 0x14 && rfid.serNum[4] == 0xDC) {
Serial.println("2号已进入!"); //串口打印对应的值
}
}
4、注意事项
说明:需要下载对应的库文件才不会编译报错。注意不要连错线,接的是3.3V,另外有一根线是悬空的。IC卡一直放在识别模块上,只会触发一次。IC卡在识别模块上方3CM左右的高度就能识别到。识别的速度很快。
5、基本原理
MF RC522是应用于13.56MHz非接触式通信中高集成度的读写卡芯片,针对“三表”应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片,是智能仪表和便携式手持设备研发的较好选择。
MFRC522利用了先进的调制和解调概念,集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。支持14443A兼容应答器信号数字部分处理ISO14443A帧和错误检测。此外,还支持快速CRYPTO1加密算法,用语验证MIFARE系列产品。
MFRC522支持MIFARE系列更高速的非接触式通信,双向数据传输速率高达424kbit/s。作为13.56MHz高集成度读写卡系列芯片族的新成员MF RC522与MF RC500和MF RC530有不少相似之处,同时也具备许多特点和差异。它与主机间通信采用SPI模式,有利于减少连线缩小PCB板体积,降低成本。