在本教程中,我们将学习如何将RC522 RFID阅读器与Arduino连接,并使用MIFARE经典1K RFID卡和Key Fob。RC522模块基于NXP的MFRC522 RFID读写IC,工作频率为13.56 MHz。我们将学习Arduino RC522 RFID读卡器接口如何使用几个测试代码工作。
简介
如果你遵循一些国家的汽车法律,电子收费(ETC)系统正在成为强制性的。在ETC,车辆到达展位后自动扣除车辆过路费。不需要支付现金或排队等候。
这是RFID或射频识别系统的一个出色应用。你可能见过RFID的其他类似应用,如超市的非接触式支付和自动结账系统,银行和办公室的门禁,仓库的货物跟踪等。
所有这些以及许多其他应用都在使用RFID技术。
回顾RFID
RFID是射频识别的缩写。顾名思义,RFID利用射频中的电磁波来传输数据。一个简单的射频识别系统只包括两个部分:射频识别应答器和射频识别收发器。
射频识别应答器通常是卡片、标签、钥匙链或贴纸,而射频识别收发器则是读取/写入设备,可从射频识别应答器读取或写入数据。
此外,RFID阅读器有一个天线发射高频电磁波。RFID标签还包含天线和集成电路以存储数据。当RFID标签接近来自阅读器天线的高频电磁波时,其天线为标签中的IC供电。
然后,集成电路通过一个返回的无线电信号对存储在其中的信息进行识别。
RC522 RFID模块简介
介绍完这些之后,让我们深入研究这个项目的重要组成部分,RC522 RFID模块。它是一种廉价的RFID阅读器模块,基于NXP公司的MFRC522 RFID IC。
MFRC522 IC支持多种RFID标签,如MIFARE 1K, MIFARE 4K, MIFARE Mini和其他基于ISO / IEC 14443协议的卡片和标签。
它的工作频率为13.46 MHz,工作范围可达50毫米。MFRC522 IC支持与主机的三种串行通信(微控制器如Arduino)。它们是:
- SPI
- UART
- 我2C
套件内容
RC522 RFID阅读器组件包括RC522 RFID阅读器模块,RFID卡,RFID Key Fob和一对公头焊接。该套件中的RFID标签,即RFID卡和RDIF钥匙链都与MIFARE 1K标签兼容(它们都有1kb的内存)。
RC522 RFID读取器模块由MFRC522 IC、27.12 MHz晶体振荡器、嵌入在PCB上的天线和支持13.56 MHz电磁场的无源组件组成。
需要记住的一件重要的事情是,MFRC522 IC工作在2.5V到3.3V的供电电压下,但通信引脚容忍5V。所以,电源电压应该是3.3V,但你可以直接将数据引脚连接到Arduino。
引出线的RC522
下图显示了RC522 RFID阅读器模块的针尖。尽管我们将使用SPI接口连接Arduino,我展示了UART和我2还有C引脚。
密码 |
销的名字 | 描述 |
1 |
VCC | 3.3 v供应销 |
2 | RST | 重置密码。LOW时复位MFRC522 IC。 |
3. |
接地 | 地面 |
4 | 硬中断请求优先级别 | 中断销。中断主机设备(微控制器)。 |
5 |
Miso / SCL / tx | 这个引脚在SPI中充当MISO,在I中充当SCL2C和TX在UART |
6 | 莫西人 | SPI莫西人销。 |
7 |
SCK | SPI时钟针。 |
8 | Ss / sda / rx | 该引脚在SPI中充当SS,在I中充当SDA2UART中的C和RX |
术语
MFRC522 RFID模块文档中经常使用两个术语。它们是:
- 纤毛运动
- 中国人民保险公司
PCD是近距离耦合装置的缩写。它就是基于MFRC522集成电路的RFID读取模块。
PICC是近距离集成电路卡的缩写,是使用ISO / IEC 14443协议构建的RFID卡或标签,如MIFARE或NTAG。
Arduino RC522 RFID读卡器接口arduino兆ce
现在我们已经看到了一些关于MFRC522 RFID阅读器IC和RC522 RFID阅读器模块,现在让我们继续Arduino RC522 RFID卡阅读器接口。如前所述,MFRC522支持SPI,UART和我2C接口。
但是SPI是三种中最快的,其数据速率高达10mbit /s。因此,在这个项目中,我们将看到如何使用SPI将RC522 RFID模块与Arduino连接。
接下来是Arduino的SPI,我们将使用硬件SPI,而不是使用带有位敲击的软件SPI。这意味着Arduino中的SPI引脚是固定的(至少对于MOSI, MISO和SCK)。
下表显示了Arduino和RC522 RFID阅读器模块之间的所有连接。
RC522 RFID阅读器 |
Arduino UNO / Nano | Arduino兆 |
RST | 9 | 5 |
党卫军 |
10 | 53 |
莫西人 | 11 | 51 |
味噌 |
12 | 50 |
SCK | 13 | 52 |
注意:您可以将Arduino中的RST和SCK引脚配置为任何数字IO引脚。
组件的要求
- Arduino UNO
- RC522射频识别模块
- RFID标签(套件中的卡片和钥匙链)
- 连接电线
线路图
下图显示了Arduino UNO和RC522 RFID模块之间所有必要的连接。
测试RC522 RFID读卡器
在完成所有必要的连接之后,现在让我们继续测试Arduino RC522 RFID模块接口。首先,打开Arduino IDE,确保选择Arduino UNO作为板。现在,进入工具->管理库…
在搜索栏中输入“rc522”,安装GithubCommunity的“MFRC522”库。
现在让我们尝试一个名为“DumpInfo”的示例草图,它从PICC(像卡片或钥匙链)读取数据并将其打印到串行显示器上。进入“File -> Examples -> MFRC522 -> DumpInfo”路径,打开示例草图。
注意:我在Arduino UNO中将RST Pin改为D7。
将草图编译上传到Arduino,打开串口监视器。RC522 RFID阅读器正在等待RFID标签被检测到。所以,拿着卡片,你在工具包中得到的,并把它放在RFID阅读器附近(靠近天线)。
你必须保持卡片在那个位置几秒钟,直到所有的数据打印出来。不要过早地取出卡片。如果您提前移除卡片,您将得到一个错误消息“通信超时”。一旦所有的信息打印出来,您就可以取出卡片了。
下面是DumpInfo草图的串行监视器的屏幕截图。
前几行是PCD (RFID阅读器)的固件版本和PICC (RFID标签)的详细信息,如UID、SAK和卡的类型。
之后是RFID标签的主内存转储。现在让我们分析一下。
MIFARE经典1K卡的内存映射分析
RFID卡和key fob为MIFARE 1K类型,这意味着PICC中的EEPROM,即RFID卡或key fob为1 KB。这1KB的内存被组织成16个扇区。
每个扇区又被划分为4个块,每个块包含16个字节的内存。所以,总内存是:
在这种情况下,区块0(即扇区0中的第一个区块)是为制造商数据预留的。它通常包含7字节UID(惟一ID)或4字节NUID(非惟一ID)。
如前所述,每个扇区由4个Blocks组成。在这里,前三个块是数据块,第四个块是扇区拖车。每个扇区的三个数据块,每个数据块可存储16字节的数据。
最后一块是每个部门都是它的拖车。它包含两个密钥(密钥A和可选密钥B)和访问位。扇区尾部的访问位决定扇区中三个块的访问条件(读、写等)。
注意:扇区0只包含2个数据块,因为第0块保留给制造商数据,而第3块是扇区拖车。
在下一篇教程中,我将向您展示如何使用RC522读写模块和Arduino将数据写入PICC,即RFID标签。此外,我们将做一个访问控制项目。
结论
基于RC522 RFID阅读器模块的MFRC522 IC的完整初学者指南。您学习了RC522模块,如何连接Arduino和RC522,以及如何从RFID标签读取数据。
一个回应
内容非常丰富,解释得很好。谢谢