物联网

  • 主页
  • 物联网
  • 基于Arduino Uno开发板与RFID-RC522模块的RFID读卡器设计

基于Arduino Uno开发板与RFID-RC522模块的RFID读卡器设计

发布时间:2021-01-14 18:53:40 所属栏目:物联网 阅读:

RFID,全称Radio-Frequency Identification,中文名射频识别,它可用于需要识别机制的许多应用中。在本篇文章中,我们将主要介绍如何将Arduino Uno开发板与RFID-RC522模块一起使用。 RFID-RC522模块是RFID读卡器,可以读取近距离的RFID标签。为了读取RFID标签,读取器和标签必须具有相同的频率。 RFID-RC522模块仅能读取13.56 MHz的高频标签。

为了演示RFID-RC522模块,本篇文章编写了一个简单的应用程序,该应用程序可以基于RFID标签识别用户。

所需的材料清单:

–  Arduino Uno开发板

–  跳线

–  RFID-RC522模块

–  RFID标签

 

如何将RFID-RC522连接到Arduino?

RFID-RC522模块有八个引脚(本文中使用了七个引脚)。RFID-RC522模块工作在3.3V电源。因此,需要将模块的3.3V引脚连接到Arduino的3.3V。如果该模块意外连接到Arduino的5V引脚,则可能损坏。按照MFRC522库的文档中的建议显示了引脚分布。下表显示了完整的引脚分布(仅适用于Arduino Uno!建议Mega、Nano等使用不同的引脚布局!):

RFID-RC522射频模块   ARDUINO UNO  
SDA   10  
SCK   13  
MOSI   11  
MISO   12  
IRQ   未使用  
GND   GND  
RST   9  
3.3V   3.3V  


如何将RFID-RC522连接到Arduino的示意图。

如何编程RFID阅卡器?

以下代码使用了一个现有的RFID库,可以在这里找到:https://github.com/miguelbalboa/rfid。如果您使用的是Arduino IDE,则可以通过单击“ Sketch-> Include Library-> Manage Libraries”轻松安装该库。然后,搜索“ RFID”,您将找到标题为“MFRC522 by GithubCommunity”的条目。如果找不到这样的条目,建议您访问库的官方网站以获得更多帮助。为了使RFID读卡器运行,您必须设置库文件、SPI连接以及读卡器。幸运的是,该库提供了两个非常方便的读取标签的便捷函数:第一个函数允许检测是否存在RFID标签/卡。第二个函数读取RFID标签ID。在以下代码中,使用for循环用于标签。在每次迭代中,将读取一个字节并将其打印为十六进制值(00..FF)。当每个用户拥有不同的RFID标签时,可以使用这种机制来识别用户。

#include "SPI.h" // SPI library

#include "MFRC522.h" // RFID library (https://github.com/miguelbalboa/rfid)

const int pinRST = 9;

const int pinSDA = 10;

MFRC522 mfrc522(pinSDA, pinRST); // Set up mfrc522 on the Arduino

void setup() {

SPI.begin(); // open SPI connection

mfrc522.PCD_Init(); // Initialize Proximity Coupling Device (PCD)

Serial.begin(9600); // open serial connection

}

void loop() {

if (mfrc522.PICC_IsNewCardPresent()) { // (true, if RFID tag/card is present ) PICC = Proximity Integrated Circuit Card

if(mfrc522.PICC_ReadCardSerial()) { // true, if RFID tag/card was read

Serial.print("RFID TAG ID:");

for (byte i = 0; i < mfrc522.uid.size; ++i) { // read id (in parts)

Serial.print(mfrc522.uid.uidByte[i], HEX); // print id as hex values

Serial.print(" "); // add space between hex blocks to increase readability

}

Serial.println(); // Print out of id is complete.

}

}

}

将代码成功上传到Arduino后,如果RFID卡或标签在RFID读卡器附近,则串口监视器(Tools-> Serial Monitor或快捷键Ctrl + Shift + M)上的输出应如下所示( 图片显示了RFID卡的位置以及相应的串口监视器输出):