跳转到内容

RFID读取器硬件设置

RFID读取器硬件设置

本节介绍 RC522 RFID 读取器模块与 ESP32 微控制器之间的硬件接线。学习完本节后,您将能够:

  • 了解 RC522 模块的引脚布局和规格
  • 使用 SPI 接口将 RC522 连接到 ESP32
  • 确定正确的电压要求(仅 3.3V)
  • 识别接线错误导致的问题

开始本节前,请确保您已准备好:

  • ESP32 开发板(DevKit、D1 或类似型号)
  • RC522 RFID 读取器模块
  • RFID 标签/卡(13.56 MHz)
  • 面包板和跳线
  • 两个 LED(绿色和红色)及 100-200Ω 电阻
  • 基本了解 SPI 通信

RC522 是一款基于 NXP MFRC522 集成电路的低成本 RFID 读取器模块。它工作在 13.56 MHz,支持 ISO/IEC 14443 A/MIFARE 协议。

主要规格

参数
工作频率13.56 MHz
支持的协议MIFARE、ISO/IEC 14443 A
读取距离3-5 cm(典型)
接口SPI(默认)、I2C、UART
工作电压仅 3.3V
电流消耗13-26 mA
数据传输速率最高 10 Mbps(SPI)

⚠️ 关键警告:RC522 模块没有板载稳压器。使用 5V 供电将永久损坏模块。请始终使用 3.3V。

RC522 模块引脚布局:
┌──────────────────────────────┐
│ RC522 RFID 读取器模块 │
├──────────────────────────────┤
│ SDA(SS) SCK MOSI MISO ││
│ IRQ GND RST 3.3V ││
└──────────────────────────────┘
引脚功能连接
SDA (SS)SPI 片选ESP32 GPIO 5
SCKSPI 时钟ESP32 GPIO 18
MOSISPI 主出从入ESP32 GPIO 23
MISOSPI 主入从出ESP32 GPIO 19
IRQ中断请求不使用(可选)
GNDESP32 GND
RST复位ESP32 GPIO 4
3.3V电源(3.3V)ESP32 3.3V

接线前,确认您的 RC522 模块是 3.3V 版本:

Terminal window
# 检查模块标记
# 在 PCB 上寻找 "RC522" 或 "MFRC522" 标识
# 如果没有明显的稳压器 IC,则为仅 3.3V 版本

⚠️ 重要提示:某些标有”3.3V/5V”的 RC522 模块可能仍然缺乏适当的稳压。如有疑问,请始终使用 3.3V。

按以下接线方式连接组件:

ESP32 DevKit RC522 模块
┌─────────┐ ┌──────────┐
│ GPIO 5 ├──────────────┤ SDA (SS) │
│ GPIO 18 ├──────────────┤ SCK │
│ GPIO 23 ├──────────────┤ MOSI │
│ GPIO 19 ├──────────────┤ MISO │
│ GPIO 4 ├──────────────┤ RST │
│ 3.3V ├──────────────┤ 3.3V │
│ GND ├──────────────┤ GND │
└─────────┘ └──────────┘
ESP32 DevKit LED 电路
┌─────────┐
│ GPIO 22 ├───┐
│ GPIO 21 ├───┐
│ GND ├───┘
└─────────┘
┌─────┐
┌───────────────┤ 绿色│─── 200Ω ──┐
│ └─────┘ │
│ │
│ ┌─────┐ │
│───────────────┤ 红色│─── 200Ω ──┤
└─────┘ GND

引脚分配总结

ESP32 引脚连接到
GPIO 5RC522 SDA (SS)
GPIO 18RC522 SCK
GPIO 23RC522 MOSI
GPIO 19RC522 MISO
GPIO 4RC522 RST
GPIO 22绿色 LED(阳极)
GPIO 21红色 LED(阳极)
3.3VRC522 VCC
GNDRC522 GND、LED 阴极

LED 需要限流电阻:

// LED 电阻计算
// Vf(红色 LED)≈ 2.0V,Vf(绿色 LED)≈ 2.2V
// 电源 = 3.3V,目标电流 = 10mA
// 红色 LED:
// R = (3.3V - 2.0V) / 0.01A = 130Ω → 使用 200Ω(标准值)
// 绿色 LED:
// R = (3.3V - 2.2V) / 0.01A = 110Ω → 使用 200Ω(标准值)

:为两个 LED 使用 200Ω 电阻可提供足够的亮度,同时确保 GPIO 引脚不会过载(ESP32 每个引脚最大 12mA)。

通电前,请验证:

  • RC522 连接到 3.3V,而非 5V
  • 所有 SPI 引脚连接正确(SDA→GPIO5、SCK→GPIO18、MOSI→GPIO23、MISO→GPIO19)
  • RST 引脚连接到 GPIO 4
  • GND 连接是共用的(ESP32 + RC522 共享地)
  • LED 有限流电阻
  • LED 方向正确(阳极接 GPIO,阴极通过电阻接 GND)

对于更永久的设置(相对于面包板),可以直接焊接连接:

RC522 → ESP32(直接焊点):
┌─────────┬──────────┬──────────┐
│ RC522 │ ESP32 │ 线色 │
├─────────┼──────────┼──────────┤
│ SDA │ GPIO 5 │ 红色 │
│ SCK │ GPIO 18 │ 黄色 │
│ MOSI │ GPIO 23 │ 蓝色 │
│ MISO │ GPIO 19 │ 绿色 │
│ RST │ GPIO 4 │ 白色 │
│ 3.3V │ 3.3V │ 橙色 │
│ GND │ GND │ 黑色 │
└─────────┴──────────┴──────────┘

接线完成后:

// 上传简单的闪烁测试以验证 LED 接线
void setup() {
pinMode(22, OUTPUT); // 绿色 LED
pinMode(21, OUTPUT); // 红色 LED
}
void loop() {
digitalWrite(22, HIGH); // 绿灯亮
delay(500);
digitalWrite(22, LOW);
digitalWrite(21, HIGH); // 红灯亮
delay(500);
digitalWrite(21, LOW);
}

预期结果:绿色和红色 LED 应每 500ms 交替闪烁。

症状:RC522 模块在通电后变得烫手

原因:模块收到 5V 而非 3.3V

解决方案

  1. 立即断开电源
  2. 确认 VCC 引脚连接到 ESP32 3.3V 引脚,而非 5V
  3. 如果模块已损坏,请更换

症状:LED 在闪烁测试中保持熄灭

可能原因

  • LED 方向反了(阳极/阴极互换)
  • 电阻值过高(200Ω 不太可能)
  • GPIO 引脚未正确设置

解决方案

// 先用万用表测试或使用内置 LED
// ESP32 内置 LED 在 GPIO 2
pinMode(2, OUTPUT);
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);

症状:RFID 标签有时能检测到有时不能

原因:接线松动或跳线过长导致信号噪声

解决方案

  1. 确保所有连接在面包板上插紧
  2. 保持 SPI 信号线尽可能短(< 20cm)
  3. 避免 SPI 线靠近大电流线路
  • 建议:所有组件使用共用地
  • 建议:在 RC522 附近的 3.3V 和 GND 之间添加 100nF 电容用于滤波
  • 建议:面包板原型开发使用母对母跳线
  • 避免:如果同时驱动多个外设,从 ESP32 3.3V 为 RC522 供电(电流限制约 150mA)
  • 避免:将 SPI 线与交流电源线平行布线
  1. RC522 仅需要 3.3V — 5V 会损坏模块
  2. SPI 接线:SDA→GPIO5、SCK→GPIO18、MOSI→GPIO23、MISO→GPIO19
  3. LED 电路:GPIO22(绿色)、GPIO21(红色),各配 200Ω 电阻
  4. 共用地对于可靠运行至关重要