这篇文章给大家分享的是有关如何使用arduino RFID读取卡号的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
使用最新arduino IDE加载RC522库
接线
Arduino Uno <------> RFID-RC522
10 <------> SDA
13 <------> SCK
11 <------> MOSI
12 <------> MISO
--null-- <------> IRQ
GND <------> GND
9 <------> RST
3.3V <------> 3.3V
这里务必注意RFID模块的接线务必接好,使得板子的红灯常亮,否则会出现链接失败,读取没有动静
以下是实操代码
#include <deprecated.h>
#include <MFRC522.h>
#include <MFRC522Extended.h>
#include <require_cpp11.h>
#include <SPI.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN);
byte nuidPICC[4]; //存储读取的UID
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
Serial.println("RC522初始化完成...");
}
void loop() {
//搜索新卡
if (!rfid.PICC_IsNewCardPresent())
return;
// 验证NUID是否可读
if (!rfid.PICC_ReadCardSerial())
return;
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
// 检查是否MIFARE卡类型
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
Serial.println("不支持读取此卡类型");
return;
}
// 保存读取到的UID
for (byte i = 0; i < 4; i++) {
nuidPICC[i] = rfid.uid.uidByte[i];
}
Serial.print("十六进制UID:");
printHex(rfid.uid.uidByte, rfid.uid.size);
Serial.println();
Serial.print("十进制UID:");
printDec(rfid.uid.uidByte, rfid.uid.size);
Serial.println();
// 使放置在读卡区的IC卡进入休眠状态,不再重复读卡
rfid.PICC_HaltA();
// 停止读卡模块编码
rfid.PCD_StopCrypto1();
}
// 十六进制输出
void printHex(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : " ");
Serial.print(buffer[i], HEX);
}
}
//十进制输出
void printDec(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : "");
Serial.print(buffer[i], DEC);
}
}
打开串口监听器,控制台会打印读卡器的结果
感谢各位的阅读!关于“如何使用arduino RFID读取卡号”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/1156250/blog/4715148