想把门禁、抽屉锁或工位系统做成"刷一下卡就开门",RC522射频读卡器是最便宜实用的方案。它基于NXP的MFRC522芯片,工作在13.56MHz,通过SPI接口和Arduino通信,读出MIFARE卡或钥匙扣的UID(唯一识别码),刷到预设卡号就放行。这篇讲清楚它的引脚、怎么接、怎么读卡号。

RC522引脚和模块特性
RC522模块引出7个脚:VCC是电源(只能接3.3V,接5V会烧芯片)、RST是复位、GND接地、IRQ是中断输出、MISO、MOSI、SCK、SS/SDA是SPI通信脚,其中SS/SDA即片选。它和卡之间是无线感应,读卡距离通常在3到5厘米,把卡靠近模块天线就能读到,支持ISO/IEC 14443 Type A标准。

这是RC522模块的引脚分布图,把SPI四根脚和供电、复位都标清楚了,VCC按要求接3.3V。读卡时模块上的板载天线发射13.56MHz电磁场给卡片供电并取回卡内数据,Arduino拿到一串16进制的UID编号。
RC522接Arduino的SPI接线
在Arduino UNO上走硬件SPI最稳:SS/SDA接D10、SCK接D13、MOSI接D11、MISO接D12、RST接D9、VCC接3.3V、GND接地,IRQ本方案不用悬空即可。接好在Arduino IDE里装MFRC522库(Miguel Balboa),程序里指定SS和RST引脚,就能读卡了。

这是RC522和Arduino的完整接线图,SPI四线加复位、供电。注意一定用3.3V供电,别和图里的其他5V器件混接,否则模块容易烧。
读UID的代码思路和做门禁
核心代码很简洁:include SPI库和MFRC522库,声明MFRC522对象传SS_PIN和RST_PIN,setup里SPI.begin()和PCD_Init()初始化,loop里判断PICC_IsNewCardPresent()有新卡、PICC_ReadCardSerial()读卡串,然后把UID按字节用HEX打印出来。
做门禁就是先把一张管理员卡的UID存进变量,刷来的卡UID和它比对,一致就驱动一颗继电器或电磁锁开门,不一致提示"卡未授权"。可以再多存几张卡做成白名单,配合OLED显示卡号,一套真正能用的刷卡门禁就落地了。







装了MFRC522库按例程改两个引脚就行,小白也好上手
UID读出来是一串16进制,比对卡号再驱动继电器,一套刷卡门禁就齐了
卡要离天线3到5厘米才读得到,太远没反应
接的时候最要紧就是VCC只能接3.3V,接5V模块基本就烧了,先记住这条