风筝
发表于: 2020-2-3 15:45:13 | 显示全部楼层

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标签

picture_setup_website.jpg


如何将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_bb.png

如何将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标签时,可以使用这种机制来识别用户。

  1. #include "SPI.h" // SPI library
  2. #include "MFRC522.h" // RFID library (https://github.com/miguelbalboa/rfid)
  3. const int pinRST = 9;
  4. const int pinSDA = 10;
  5. MFRC522 mfrc522(pinSDA, pinRST); // Set up mfrc522 on the Arduino
  6. void setup() {
  7.   SPI.begin(); // open SPI connection
  8.   mfrc522.PCD_Init(); // Initialize Proximity Coupling Device (PCD)
  9.   Serial.begin(9600); // open serial connection
  10. }
  11. void loop() {
  12.   if (mfrc522.PICC_IsNewCardPresent()) { // (true, if RFID tag/card is present ) PICC = Proximity Integrated Circuit Card
  13.     if(mfrc522.PICC_ReadCardSerial()) { // true, if RFID tag/card was read
  14.       Serial.print("RFID TAG ID:");
  15.       for (byte i = 0; i < mfrc522.uid.size; ++i) { // read id (in parts)
  16.         Serial.print(mfrc522.uid.uidByte[i], HEX); // print id as hex values
  17.         Serial.print(" "); // add space between hex blocks to increase readability
  18.       }
  19.       Serial.println(); // Print out of id is complete.
  20.     }
  21.   }
  22. }
复制代码

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

card_with_monitor.jpg


跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1479



手机版|

GMT+8, 2024-3-29 17:49 , Processed in 0.093292 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表