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

五、相关课程链接

正在开发中

results matching ""

    No results matching ""