这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 国产MCU » 【合宙ESP32C3开发板】Arduino下测试RFID-RC522

共1条 1/1 1 跳转至

【合宙ESP32C3开发板】Arduino下测试RFID-RC522

专家
2026-07-01 20:39:10     打赏

RC522是一款应用于 13.56MHz 频段的高集成度非接触式读写芯片,是学习RFID应用的首选。其通讯接口支持SPI、I2C 和 UART。按照我学习的理解,它相当于一个单片机系统,一方面它通过SPI、I2C 和 UART接口和外部上位机单片机系统通讯,通过接口接收指令及像外部设备收发数据。另一方面它通过射频方式与另外一套单片机系统(也就是射频卡,例如常见的门禁卡)无线通讯。因此大体上学习RC522需要学习两块儿知识:RC522的知识和射频卡知识。

门禁卡平时是处于无电状态,在需要工作时,靠近RC522系统,通过电磁转换原理,从RC522所在设备产生的无线电获取工作电源,启动工作,同时通过无线通讯完成卡与RC522上位系统之间的数据通讯。

图片1.png

在进一步学习RC522只是之前,我准备在Arduino下使用库函数,做一次简单的测试。开发板使用合宙ESP32C3,RC522使用网上常见的那种SPI接口的模块,电路连接如下:

图片2.png

 Arduino下需要安装MFRC522v2库。测试代码如下:

#include <MFRC522v2.h>
#include <MFRC522DriverSPI.h>
#include <MFRC522DriverPinSimple.h>
#include <MFRC522Debug.h>
// 定义引脚 (与硬件连接一致)
#define SCK_PIN   4
#define MISO_PIN  5
#define MOSI_PIN  6
#define SS_PIN    7      // SDA
#define RST_PIN   8
// 初始化 SPI 驱动
MFRC522DriverPinSimple rst_pin(RST_PIN);
MFRC522DriverPinSimple ss_pin(SS_PIN);
MFRC522DriverSPI driver{ss_pin};
MFRC522 mfrc522{driver};
void setup() {
  Serial.begin(115200);
  SPI.begin(SCK_PIN, MISO_PIN, MOSI_PIN, SS_PIN); // 明确指定 SPI 引脚
  mfrc522.PCD_Init();
  delay(1000);
  Serial.println("Ready to read card...");
}
void loop() {
  // 检测新卡并读取序列号
  if (!mfrc522.PICC_IsNewCardPresent() || !mfrc522.PICC_ReadCardSerial()) {
    return;
  }
  // 打印 UID
  Serial.print("Card UID: ");
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    if (mfrc522.uid.uidByte[i] < 0x10) Serial.print("0");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
  }
  Serial.println();
  // 停止与当前卡的通信
  mfrc522.PICC_HaltA();
  mfrc522.PCD_StopCrypto1();
}

这块处理程序是最简单的读取射频卡的ID。上电启动后,将射频卡靠近感应区,计算机串口会输出ID信息。

图片3.png

 

 





关键词: 懒猫的学习笔记     ESP32C3     RFID-RC52    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]