RFID-RC522 模块
概述
在本课中,您将学习如何使用 RFID 模块。RFID 代表射频识别。其工作原理涉及读写器与标签之间的非接触式数据通信,以识别目标。RFID 的应用非常广泛,包括动物芯片、汽车防盗器、门禁控制、停车场控制、生产链自动化、物料管理等。
所需元件
本项目中,我们需要以下元件。
购买整套套件会更加方便,以下是链接:
名称 |
套件所含项目 |
链接 |
|---|---|---|
Elite Explorer 套件 |
300+ |
您也可以从以下链接单独购买。
元件介绍 |
购买链接 |
|---|---|
- |
|
Fritzing 电路图
在本示例中,我们将 RFID 模块插入面包板。将 RFID 的 3.3V 连接到 3.3V,GND 连接到 GND,RST 连接到引脚 2,SDA 连接到引脚 6,SCK 连接到引脚 5,MOSI 连接到引脚 4,MISO 连接到引脚 3,IRQ 连接到引脚 7。
原理图
代码
备注
将代码上传到 Uno 板后,您可以将 RFID 卡(密钥)靠近 RFID 读写器。模块将读取卡片信息,然后将其打印在串口监视器上。
代码分析
模块的功能包含在库 rfid1.h 中。
#include <rfid1.h>
库函数:
RFID1 rfid;
创建一个新的 rfid1 类实例,代表连接到 Arduino 的特定 RFID 模块。
void begin(IRQ_PIN,SCK_PIN,MOSI_PIN,MISO_PIN,SDA_PIN,RST_PIN)
引脚配置。
IRQ_PIN,SCK_PIN,MOSI_PIN,MISO_PIN:用于 SPI 通信的引脚。SDA_PIN:同步数据适配器。RST_PIN:用于复位的引脚。
void init()
初始化 RFID。
uchar request(uchar reqMode, uchar *TagType);
搜索卡片并读取卡片类型,该函数将返回 RFID 的当前读取状态,如果成功则返回 MI_OK。
reqMode:搜索方式。PICC_REQIDL 定义为 0x26 命令位(搜索天线区域内不在睡眠模式下的卡片)。*TagType:用于存储卡片类型,其值为 4 字节(例如 0x0400)。
char * readCardType(uchar *TagType)
此函数将 *tagType 的四位十六进制数解码为具体的卡片类型并返回一个字符串。如果传入 0x0400,将返回 “MFOne-S50”。
uchar anticoll(uchar *serNum);
防冲突,读取卡片序列号。该函数将返回 RFID 的当前读取状态。如果成功则返回 MI_OK。
*serNum:用于存储卡片序列号,并返回 4 字节的卡片序列号。第 5 个字节为校验字节(例如,我的磁卡 ID 为 5AE4C955)。