小区门禁一刷就开、饭卡过一下机器就扣钱的场景大家都很熟,背后就是RFID射频识别。想在自己项目里也加一个“刷卡感应”功能,RC522是入门最合适的模块:便宜、常见、教程齐全。这篇文章把接线和读卡讲清楚。
RC522是什么,认准它的核心引脚
RC522基于MFRC522芯片,工作在13.56MHz高频段,能读Mifare 1K(S50)、S70这类常见的IC卡和钥匙扣。读写距离一般0到5厘米,靠得近才感应。它用SPI跟Arduino通信,速度快、抗干扰好,是做门禁、考勤、商品识别的常见选择。
模块引出的引脚认准这几个:VCC(电源)、GND(地)、RST(复位)、SDA(也叫SS,片选)、SCK(时钟)、MOSI(数据进)、MISO(数据出)、IRQ(中断,可选)。其中SDA/SCK/MOSI/MISO这组就是SPI四根线。

接线表:SPI四线加电源复位,一表对照
RC522接到Arduino Uno,最标准的接法如下:VCC接3.3V、GND接地、SDA(SS)接D10、SCK接D13、MOSI接D11、MISO接D12、RST接D9、IRQ悬空不接。Uno的硬件SPI口恰好就是D10到D13,所以这组接线很顺。
代码如下片所示,程序里最要紧的是定义好两个脚:SS_PIN(片选,10)和RST_PIN(复位,9),用MFRC522库建对象,setup里SPI.begin()再PCD_Init()初始化,loop里PICC_IsNewCardPresent()和PICC_ReadCardSerial()就能读到卡的序列号(UID)。

唯一要留心的大坑:供电和IO电平
RC522的芯片逻辑是3.3V的,千万不能把VCC接到5V,一接5V很可能直接烧毁。这个模块对新手最大的坑,还不光是供电——Uno这种5V主控,它的MOSI、SCK、RST这些信号线输出是5V电平,直接怼到3.3V的RC522上,时间长了有损坏风险。稳妥的做法是把这几根信号线做电平转换(用分压电阻或者电平转换模块),或者干脆换ESP32/ESP8266这种3.3V主控来带——它们电压天然匹配,接起来省心得多。
很多网上的接法直接5V逻辑怼过去也能跑(芯片扛得住一时),但如果要做长期稳定的门禁产品,电平这块别省。
读不出卡怎么办,几个高频排查点
最常见是“放卡上去没反应”。先查接线——SPI四根线尤其容易插错,MISO和MOSI是两根数据线,接反了通而不进;再查供电,VCC是不是接了3.3V而不是5V;第三看库有没有正确安装(Arduino库管理器搜MFRC522)。还有一种情况是卡靠得太偏或太远,RC522感应范围只有5厘米内,卡片对准线圈中心才稳。
单靠读卡号就能写很多玩法:白名单门禁(刷到登记的UID就开锁)、考勤机、甚至是“集齐几张卡触发机关”的游戏化互动。RC522是理解无线识别很好的一课,接线记住SPI四线加3.3V,就能稳稳读卡。







用它做了个白名单门禁,读UID比对就能开锁,挺实用
SPI那四根线MISO和MOSI最容易反,接不通先查它
Uno直连3.3V模块IO电平这块确实得留个心,长期用建议上转换
VCC别接5V,我真见过有人的模块这么接给烧了