首页

MFRC522 RC522 RFID阅读器模块与Arduino接口

在本教程中,我们将学习如何将RC522 RFID阅读器与Arduino连接,并使用MIFARE经典1K RFID卡和Key Fob。RC522模块基于NXP的MFRC522 RFID读写IC,工作频率为13.56 MHz。我们将学习Arduino RC522 RFID读卡器接口如何使用几个测试代码工作。

Arduino-RC522-RFID-Reader-Image-1

简介

如果你遵循一些国家的汽车法律,电子收费(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协议的卡片和标签。

MFRC522-RFID-Module

它的工作频率为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-Module-Kit

RC522 RFID读取器模块由MFRC522 IC、27.12 MHz晶体振荡器、嵌入在PCB上的天线和支持13.56 MHz电磁场的无源组件组成。

RC522-RFID-Module-Layout

需要记住的一件重要的事情是,MFRC522 IC工作在2.5V到3.3V的供电电压下,但通信引脚容忍5V。所以,电源电压应该是3.3V,但你可以直接将数据引脚连接到Arduino。

RC522-RFID-Module-Pins

引出线的RC522

下图显示了RC522 RFID阅读器模块的针尖。尽管我们将使用SPI接口连接Arduino,我展示了UART和我2还有C引脚。

RC522-RFID-Reader-Pinout

密码

销的名字

描述

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模块之间所有必要的连接。

Arduino-RC522-RFID-Module-Circuit-Diagram

测试RC522 RFID读卡器

在完成所有必要的连接之后,现在让我们继续测试Arduino RC522 RFID模块接口。首先,打开Arduino IDE,确保选择Arduino UNO作为板。现在,进入工具->管理库…

Arduino-IDE-MFRC522-Library-1

在搜索栏中输入“rc522”,安装GithubCommunity的“MFRC522”库。

Arduino-IDE-MFRC522-Library-2

现在让我们尝试一个名为“DumpInfo”的示例草图,它从PICC(像卡片或钥匙链)读取数据并将其打印到串行显示器上。进入“File -> Examples -> MFRC522 -> DumpInfo”路径,打开示例草图。

注意:我在Arduino UNO中将RST Pin改为D7。

Arduino-IDE-MFRC522-Library-3

将草图编译上传到Arduino,打开串口监视器。RC522 RFID阅读器正在等待RFID标签被检测到。所以,拿着卡片,你在工具包中得到的,并把它放在RFID阅读器附近(靠近天线)。

你必须保持卡片在那个位置几秒钟,直到所有的数据打印出来。不要过早地取出卡片。如果您提前移除卡片,您将得到一个错误消息“通信超时”。一旦所有的信息打印出来,您就可以取出卡片了。

下面是DumpInfo草图的串行监视器的屏幕截图。

RC522-DumpInfo-Serial-1

前几行是PCD (RFID阅读器)的固件版本和PICC (RFID标签)的详细信息,如UID、SAK和卡的类型。

RC522-DumpInfo-Serial-2

之后是RFID标签的主内存转储。现在让我们分析一下。

MIFARE经典1K卡的内存映射分析

RFID卡和key fob为MIFARE 1K类型,这意味着PICC中的EEPROM,即RFID卡或key fob为1 KB。这1KB的内存被组织成16个扇区。

MIFARE-1K-Memory-Map

每个扇区又被划分为4个块,每个块包含16个字节的内存。所以,总内存是:

16扇区* 4块* 16字节= 1024字节或1 KB

在这种情况下,区块0(即扇区0中的第一个区块)是为制造商数据预留的。它通常包含7字节UID(惟一ID)或4字节NUID(非惟一ID)。

RC522-DumpInfo-Serial-3

如前所述,每个扇区由4个Blocks组成。在这里,前三个块是数据块,第四个块是扇区拖车。每个扇区的三个数据块,每个数据块可存储16字节的数据。

最后一块是每个部门都是它的拖车。它包含两个密钥(密钥A和可选密钥B)和访问位。扇区尾部的访问位决定扇区中三个块的访问条件(读、写等)。

RC522-DumpInfo-Serial-4

注意:扇区0只包含2个数据块,因为第0块保留给制造商数据,而第3块是扇区拖车。

在下一篇教程中,我将向您展示如何使用RC522读写模块和Arduino将数据写入PICC,即RFID标签。此外,我们将做一个访问控制项目。

结论

基于RC522 RFID阅读器模块的MFRC522 IC的完整初学者指南。您学习了RC522模块,如何连接Arduino和RC522,以及如何从RFID标签读取数据。

一个回应

留下一个回复

您的电邮地址将不会公布。

Electronicshub图标
Baidu
map