零基础学ESP32:RFID无线射频卡——让ESP32拥有“刷卡“能力!

门禁卡、公交卡、校园一卡通、停车场出入卡......这些"滴一下"就能识别的卡片,背后都是RFID技术 在工作。

今天要学的就是RFID技术中最经典的应用------用ESP32读取RFID卡的ID。学会了这节课,你就能做出自己的门禁系统、考勤机、智能储物柜!

今天这节课,我们就用ESP32 + MFRC522模块,读取RFID卡片的ID号!

第一步:找到课程,看看成品效果

打开逗脑IDE,点击顶部 "文档" ,在 "课程" → "ESP32 + MicroPython" 分类下,找到RFID无线射频卡 1-读取卡的id这节课。

打开课件,你会看到本节课的最终效果 :把RFID卡片靠近读卡模块,终端立刻打印出卡片的ID号(如rfid卡片的id: 0x1a2b3c4d),移开卡片后停止。

第二步:什么是RFID?

RFID(Radio Frequency Identification) ,中文叫无线射频识别,是一种非接触式的自动识别技术。

简单理解:

卡片里有一个小芯片和天线,读卡器发出无线电波,卡片通过电波获得能量,然后把存储的ID信息发回给读卡器。

核心特点:

参数 说明
工作频率 13.56MHz(高频)
读卡距离 0~5cm
接口 SPI(4根线)
支持卡片 Mifare One(M1卡)、S50、S70等
典型应用 门禁、公交卡、校园卡

第三步:动手接线

MFRC522模块使用SPI接口,接线如下:

MFRC522引脚 连接ESP32 说明
VCC 3.3V 电源正极(必须3.3V!)
GND GND 电源地
SCK GPIO18 SPI时钟
MOSI GPIO23 主机输出
MISO GPIO19 主机输入
SDA/CS GPIO5 片选信号

📌 重要提示: VCC一定要接3.3V!接5V会烧坏模块。

第四步:上传驱动文件

在运行代码之前,需要先将MFRC522驱动文件mfrc522.py上传到ESP32。

操作步骤:

在MicroPython端新建mfrc522.py文件,将课件中提供的完整驱动代码复制进去,然后上传到ESP32。

这个驱动文件的作用:

  • 封装了MFRC522模块的底层通信细节
  • 提供了读卡、写卡、防冲突检测等功能的接口

第五步:代码------读取卡片ID

python 复制代码
from time import sleep_ms
from machine import Pin, SPI
from mfrc522 import MFRC522

# 创建SPI引脚对象
sck = Pin(18, Pin.OUT)
mosi = Pin(23, Pin.OUT)
miso = Pin(19, Pin.OUT)

# 创建SPI对象
spi = SPI(baudrate=100000, polarity=0, phase=0, sck=sck, mosi=mosi, miso=miso)

# 创建片选引脚
sda = Pin(5, Pin.OUT)

def read_id():
    # 1. 创建RFID操作对象
    rfid = MFRC522(spi, sda)
    
    # 2. 循环读取数据
    while True:
        # 3. 复位应答,检测是否有卡片靠近
        stat, tag_type = rfid.request(rfid.REQIDL)
        if stat == rfid.OK:
            # 4. 防冲突检测,提取卡片ID
            stat, raw_uid = rfid.anticoll()
            if stat == rfid.OK:
                _id = "0x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3])
                print("rfid卡片的id:", _id)
        
        sleep_ms(500)

if __name__ == "__main__":
    read_id()

代码逻辑:

步骤 操作 说明
1 创建SPI对象 配置SPI通信参数
2 创建MFRC522对象 初始化读卡模块
3 request() 检测是否有卡片靠近
4 anticoll() 防冲突检测,读取卡片ID
5 格式化打印 将ID格式化为十六进制字符串

第六步:保存运行,刷卡测试!

保存代码到开发板,命名 test_rfid.py

点击运行按钮,终端开始等待卡片靠近。

试试看:

  1. 把RFID卡片靠近模块的天线区域(距离0~5cm)
  2. 终端立刻打印:rfid卡片的id: 0x1a2b3c4d
  3. 移开卡片,再放回去,再次打印相同的ID

RFID能做什么?

应用场景 用途
门禁系统 刷卡开门,只有授权卡能进
考勤系统 刷卡签到,记录员工/学生出勤
智能储物柜 刷卡开柜,安全存放物品
停车场管理 刷卡出入,自动计费
会员卡系统 刷卡识别会员身份
智能家居 刷卡开灯/开空调

结合之前学过的课程

组合 效果
RFID + 继电器 刷卡控制门锁开关
RFID + OLED 刷卡后屏幕显示ID和欢迎信息
RFID + 蜂鸣器 刷卡成功/失败发出提示音
RFID + WiFi 刷卡记录上传到服务器
RFID + MQTT 刷卡触发远程通知

常见问题

Q:为什么读不到卡?

A:检查以下几点:

  1. VCC是否接3.3V(接5V会烧坏)
  2. 卡片是否靠近天线区域(0~5cm内)
  3. 接线是否正确(尤其是MISO和MOSI不要接反)

Q:能读手机NFC吗?

A:部分手机的NFC可以模拟M1卡,但不是所有手机都支持。用标准M1卡测试最稳定。

Q:能修改卡片里的数据吗?

A:可以,MFRC522支持读写M1卡的扇区数据。这个内容会在下一节课讲解。

全程回顾

步骤 操作 效果
找到课程 文档→课程→ESP32+MicroPython→RFID读取卡ID 了解RFID原理
上传驱动 上传mfrc522.py到ESP32 驱动就绪
动手接线 VCC→3.3V, GND→GND, SCK→GPIO18, MOSI→GPIO23, MISO→GPIO19, SDA→GPIO5 硬件就位
打开代码 点击"打开"按钮 代码进入编辑器
保存运行 Ctrl+S → 选择ESP32 → 运行 开始等待卡片
刷卡测试 卡片靠近模块 终端打印卡片ID!
相关推荐
Dovis(誓平步青云)1 小时前
家里设备越来越多,如何用一张空间地图控制灯光和温度![
android·java·前端·javascript·人工智能·电脑
小师兄吃牛肉1 小时前
C语言篇:内联函数
c语言·开发语言
jinyishu_1 小时前
大模型上下文窗口:Token 预算、性能瓶颈与 RAG 的关系
人工智能
ZhenYuChen20001 小时前
行业观察:AI 高速发展下的数据合规现状、风险与落地路径
人工智能·投资·创业
cws2004011 小时前
监控摄像头选型指南
运维·网络·监控
协皓家具1 小时前
2026年广州岛台吧台椅厂家有啥新变化
大数据·运维·python·devops
yuniko-n1 小时前
【Java】字符串相关坑点
java·开发语言·python
m4Rk_1 小时前
【论文阅读】Agent 记忆机制(91):THEANINE——不删除过时记忆,让 Agent 记住事情是如何变化的
论文阅读·人工智能·学习·开源·github
Terra.K1 小时前
Spring AI day1(SSE+AI)
java·人工智能·spring·springai