由于RFID技术的发展,人们在超市结账时排长队的日子已经一去不复返了。 借助基于RFID的穿行式自动结账解决方案,您可以装满购物车并直接走出门外。 您不再需要等待有人将您购物车中的每件商品一一结账; 现在,借助附在物品上的RFID标签,购物车中的每件物品几乎都能立即被检测到。
对于大多数基于RFID的Arduino项目,RC522 RFID读写器模块是一个不错的选择。 它功耗低、成本低、非常坚固、易于连接并且在爱好者中非常受欢迎。
什么是RFID技术及其工作原理? RFID或射频识别系统(Radio Frequency Identification)由两个主要组件组成,一个是贴在待识别物体上的标签,另一个是读取标签的读卡器。
读卡器由射频模块和产生高频电磁场的天线组成。 而标签通常是无源设备(它没有电池)。 它由一个存储和处理信息的微芯片,以及一个用于接收和发射信号的天线组成。
当标签靠近读卡器时,读卡器会产生电磁场。 这会导致电子穿过标签的天线并随后为芯片供电。
然后芯片通过将其存储的信息以另一种无线电信号的形式发送回读卡器来做出响应。 这称为反向散射。读卡器检测并解析这种反向散射并将数据发送到计算机或微控制器。
硬件概述 基于NXP的MFRC522芯片的RC522 RFID模块是您可以在网上买到的最便宜的RFID之一。 它通常带有一个RFID卡标签和一个具有1KB内存的密钥卡标签。 它的优势在于可以编写一个标签,这意味着您可以在其中存储任何消息。
RC522 RFID读取器模块旨在创建13.56MHz电磁场并与RFID标签(ISO 14443A 标准标签)通信。读卡器可以通过4针SPI与微控制器通信,最大数据速率为10 Mbps。 它还支持通过I2C和UART协议进行通信。
RC522 RFID模块可以被编程为产生中断,允许模块在标签接近它时提醒我们,而不是不断地询问模块“附近有卡吗?”。
该模块的工作电压范围为2.5至3.3V,好消息是逻辑引脚可承受5V电压,因此我们可以轻松地将它连接到Arduino或任何5V逻辑微控制器,而无需使用逻辑电平转换器。
RC522 RFID射频模块的引脚分布 RC522模块共有8个引脚连接到外部。 连接如下:
VCC 为模块供电。 这可以是2.5到3.3V之间的任何值。 您可以将它连接到Arduino的3.3V输出。 RST 是用于复位和断电的输入。 当此引脚变低时,模块进入掉电模式。 其中振荡器关闭,输入引脚与外界断开。 而模块在信号的上升沿复位。 GND 是接地引脚,需要连接到Arduino上的GND引脚。 IRQ 是一个中断引脚,当附近有RFID标签时,它会向微控制器发出中断信号。 MISO / SCL / Tx 引脚在启用SPI接口时充当主输入从输出,在启用I2C接口时充当串行时钟,在启用UART接口时充当串行数据输出。 MOSI(Master Out Slave In)是RC522模块的SPI输入。 SCK(串行时钟)接受SPI总线主机(即 Arduino)提供的时钟脉冲。 SS / SDA / Rx 引脚在启用SPI接口时用作信号输入,在启用I2C接口时用作串行数据,在启用UART接口时用作串行数据输入。
将RC522 RFID模块连接到Arduino开发板 现在我们了解了关于模块的一切,让开始将它连接到我们的Arduino吧!
首先将模块上的VCC引脚连接到3.3V,并将GND引脚连接到Arduino上的GND。RST可以连接到Arduino上的任何数字引脚。在例子中,它连接到数字引脚#5。 IRQ引脚未连接,因为我们将要使用的Arduino库不支持它。
现在我们只剩下用于SPI通信的引脚。 由于RC522模块需要大量数据传输,因此当连接到微控制器上的硬件SPI引脚时,它们将提供最佳性能。
连接好一切后,您就可以开始了!
安装库 与 RC522 RFID模块通信需要大量工作,但对我们来说幸运的是,有一个MFRC522库的库可以让读写RFID标签变得简单。
该库未包含在Arduino IDE中,因此您需要先安装它。
要安装库,请导航至 Sketch > Include Libraries > Manage Libraries…等待库管理器下载库索引并更新已安装库的列表。
通过输入“mfrc522”筛选搜索。 查找GithubCommunity提供的库文件。 单击该条目,然后选择安装。
Arduino 代码 —— 读取RFID标签 安装库后,打开示例子菜单并选择 MFRC522 > DumpInfo 示例草图。
这个草图只是读取标签并显示存储在其中的信息。 在尝试任何新标签之前,此草图非常方便!
转到草图的开头并确保RST_PIN已正确初始化,在例子中,我们使用的是数字引脚#5,因此将其更改为 5。
现在上传草图并打开串口监视器。 当你把标签靠近模块时,你会得到类似下面的东西。 在显示所有信息之前,请勿移动标签。
它显示了有关标签的所有有用信息,包括标签的唯一 ID (UID)、内存大小和整个1K内存。
MIFARE Classic 1K 内存布局 标签的1K内存被分成16个扇区(从0到15)。 每个扇区进一步分为4个块(块0到3)。 每个块可以存储16个字节的数据(从0到15)。
所以我们有: 16 个扇区 x 4 个块 x 16 字节数据 = 1024 字节 = 1K 内存
整个1K内存以及扇区、块和数据在下面突出显示。
这是 MIFARE Classic 1K 内存映射布局的 3D 表示。
每个扇区的最后一个块称为扇区尾部。 它包含称为访问位的信息,这些信息提供对该扇区中剩余块的读写访问。 这意味着每个扇区只有3个块(块 #0、#1 和 #2)实际上是可写的,换句话说,每个扇区只有48个字节可供使用。
扇区#0的块#0也称为制造商块,其中包含IC 制造商数据和唯一标识符 (UID)。 制造商块以红色突出显示。
|