20.Rfid 射频模块
一、功能以及原理
无线射频识别即射频识别技术(Radio Frequency Identification,RFID),是自动识别技术的一种,通过无线射频方式进行非接触双向数据通信,利用无线射频方式对记录媒体(电子标签或射频卡)进行读写,从而达到识别目标和数据交换的目的。
RFID 射频模块是一款广泛应用于非接触式 RFID 系统中的核心组件,由 NXP(前身为 Philips 半导体)公司设计生产。这个模块基于 MFRC522 芯片,该芯片是一个高度集成的 UHF RFID 读卡器/写卡器解决方案,能够支持 ISO 14443A 标准的卡片和标签。
此模块支持 I2C 总线通信,通过简单的两条线(SDA 和 SCL)实现与主机的低成本、少管脚数的串行通信。

二、引脚介绍以及对应开发板可用引脚
针脚 | 可连接引脚 | 功能 |
VCC | 5V | 连接电源正极提供工作电压 |
SCL | SCL(A5) | 输出同步时钟信号 |
SDA | SDA(A4) | 双向数据线,用于主机和从机传输信号 |
GND | GND | 以确保电路的稳定性和防止干扰 |
三、代码控制
RFID 射频模块内部芯片为 MFRC522,MFRC522 是一款高度集成的 13.56MHz 非接触式读写卡芯片,具有多种工作模式和丰富特性,发送模块利用调制和解调的原理,并将它们完全集成到各种非接触式通信方法和协议(13.56MHz)。平台模块使用 I2C 总线控制,在这里提供一个示例代码,结核 Rifd 标签演示案例。
3.1 文本代码
#include <Wire.h>
#include "MFRC522_I2C.h"
MFRC522 mfrc522(0x28);
String readerCardUID(){
if (!mfrc522.PICC_IsNewCardPresent()||!mfrc522.PICC_ReadCardSerial() ) {
delay(50);
return "未检测到卡片";
}
String cardUID = "";
for (byte i = 0; i < mfrc522.uid.size; i++) {
// 如果字节小于0x10,添加一个前导零
if (mfrc522.uid.uidByte[i] < 0x10) {
cardUID += "0";
} else {
cardUID += "";
}
// 将UID的字节以十六进制格式添加到字符串
cardUID += String(mfrc522.uid.uidByte[i], HEX);
}
return cardUID;
}
void setup() {
Wire.begin();
mfrc522.PCD_Init();
pinMode(8, OUTPUT);
}
void loop() {
if (readerCardUID() == "00a312cf") {
digitalWrite(8, HIGH);
delay(2 * 1000);
}
else {
digitalWrite(8, LOW);
}
}
3.2 图形化代码
可在“传感器”中的“Rfid 射频模块”,找到对应的图形化代码块。
图形化代码已经封装好 Rfid 模块的初始化代码,直接调用即可。


四、相关案例演示
在 AI Lab 平台的精选项目中,能够查看操纵案例,链接如下
https://www.funcode.cc/simulate?project_id=42&type=3&share_source=0
五、相关课程链接
正在开发中