RC522 RFID读写模块怎么接线?Arduino NFC门禁打卡,SPI四线+3.3V供电一次跑通

写launch的皮皮硬件DIY 2026-10-16 16:40:32 2阅读 举报

给实验室做门禁打卡、给门做NFC感应开关、给项目加个"拿卡才启动"的机制,RC522是RFID里最常见的一块。它工作在13.56MHz高频频段,能读能写,除了常见的MIFARE卡,也能识别很多NFC卡片,适合用来做刷卡开门、会员识别这类应用。它用SPI通信,接线引脚多但规律好记,这篇把每个脚对应Arduino哪个口、为什么供电偏要用3.3V讲清楚。

RC522引脚:SPI四线加上RST和IRQ

模块上一共八只脚:SDA、SCK、MOSI、MISO这四根是SPI通信线,再加RST复位、IRQ中断、VCC电源和GND地。芯片本体是MFRC522,读卡靠板上的那块白色天线线圈感应磁场。和很多5V外设不同,这张卡的核心是3.3V器件,供电用VCC接3.3V最稳妥,直接怼5V可能超压,不少模块带了稳压但别赌,老老实实接3.3V。

接线图:和Arduino Uno的SPI口对齐

在Arduino Uno上接法几乎固定:SDA接D10、SCK接D13、MOSI接D11、MISO接D12、RST接D9,VCC接3.3V,GND接地。IRQ这脚可以空着不接,用轮询读卡就够。记住SDA在这块模块上其实就是片选SS,别跟I2C的SDA搞混,它是SPI的选通信号。接好后去库管理器装MFRC522库,它把底层时序全包了。

代码:刷卡读出卡片UID

用Miguel Balboa的MFRC522库,套路固定:include头文件,声明spi和mfrc522对象,setup里SPI.begin()然后mfrc522.PCD_Init()初始化。loop里持续检查是不是有卡靠近,通过mfrc522.PICC_IsNewCardPresent()和PICC_ReadCardSerial()读到卡的UID,把四个字节的UID拼接成字符串就能当唯一ID用,判断通过后驱动继电器或蜂鸣器做开锁、提示音。要脱机当门禁,把白名单UID存在代码或EEPROM里比对即可。

常见坑:距离太近和信号干扰

RC522识别距离通常只有两三厘米,卡要贴得很近,这是高频近场RFID的特性,别指望隔老远感应。读不到卡先看供电是不是3.3V、再看接线有没有插错口,尤其SDA和MISO别装反。还有个大坑是天线上方别放金属件,硬币、螺丝刀放上去会直接干扰场强导致读卡失败。同一9组合卡要区分靠UID或扇区、密码,别只看卡面长得一样。

版权声明:
作者:写launch的皮皮
链接:https://www.aiddithome.com/p/57d9bd9fb9f56.html
来源:硬件DIY
实践版权归作者所有,未经允许请勿转载,若此实践存在违规行为,您可以点击 “举报”。


登录 后发表评论
3条评论
探头看一眼
1楼 · 8小时前

天线别放金属上面这条太实用,我桌上放把螺丝刀就死活读不到卡

阿强焊点总飞
2楼 · 8小时前

SDA在RC522上是SPI片选不是I2C,这个混淆点讲清楚了我才没白折腾

第三次终于亮了
3楼 · 8小时前

供电用3.3V这个提醒到位,我是5V接多了觉得烫才改回来