7.5元包邮的RC522读卡器实战用Arduino Uno低成本复制门禁卡周末整理抽屉时翻出一张失效的小区门禁卡物业补办要收50元工本费。作为电子爱好者我决定用手头的Arduino开发板和网购的7.5元包邮RC522读卡器尝试自主复制。经过三小时折腾最终零成本解决了问题——这个过程中积累的经验和踩过的坑正是本文要分享的核心内容。1. 硬件准备与成本控制核心设备清单Arduino Uno开发板兼容版约25元RC522射频读卡模块7.5元包邮可改写UID卡10张包邮价约8元关键细节RC522模块的VCC引脚需要3.3V供电但部分廉价模块的稳压芯片质量较差建议通过Arduino的3.3V输出口供电。我最初使用5V供电导致读卡距离不足2cm切换后稳定读卡距离达到5cm以上。接线示意图RC522引脚Arduino引脚SDAD10SCKD13MOSID11MISOD12IRQ不接GNDGNDRSTD93.3V3.3V注意不同库可能要求不同的SS/CS引脚定义若遇到读取失败可尝试将SDA改接D8或其他数字引脚2. 卡片类型选择与识别技巧市面上常见的13.56MHz射频卡主要分为三类M1 S50卡不可改写UID多数门禁系统会检测此特性UID可改写卡CUID/FUID等变种支持修改0扇区数据UFUID卡高级可擦写卡支持全扇区反复修改实战建议购买前与卖家确认卡片类型要求提供可改写UID的测试视频。我首次购买的所谓空白卡实际是M1卡导致写入操作完全无效白白浪费两天等待换货时间。快速识别卡片类型的方法#include SPI.h #include MFRC522.h #define RST_PIN 9 #define SS_PIN 10 MFRC522 mfrc522(SS_PIN, RST_PIN); void setup() { Serial.begin(9600); SPI.begin(); mfrc522.PCD_Init(); } void loop() { if (!mfrc522.PICC_IsNewCardPresent()) return; if (!mfrc522.PICC_ReadCardSerial()) return; Serial.print(Card UID:); for (byte i 0; i mfrc522.uid.size; i) { Serial.print(mfrc522.uid.uidByte[i] 0x10 ? 0 : ); Serial.print(mfrc522.uid.uidByte[i], HEX); } Serial.println(); mfrc522.PICC_HaltA(); }运行此代码后连续多次读卡若UID不变则可能是M1卡若每次UID随机变化则是UID可改写卡。3. 软件环境配置与库使用Arduino IDE的库管理虽方便但存在几个隐藏陷阱库版本兼容性问题最新版MFRC522库2.0.3可能不兼容老教程示例代码路径差异部分库安装后需要重启IDE才显示示例可靠配置流程在Arduino IDE中点击「工具」→「管理库」搜索MFRC522选择2.0.3版本安装通过「文件」→「示例」→「MFRC522」找到关键程序ReadUID获取卡片原始UIDChangeUID写入新UID需配合可改写卡常见问题处理当遇到SPI.h not found错误时说明未安装SPI库——这是Arduino内置库通过「工具」→「管理库」搜索SPI安装即可。4. 完整复制流程与避坑指南分步操作手册使用ReadUID读取原门禁卡UID如A1 B2 C3 D4将可改写UID卡放置到读卡器修改ChangeUID示例中的目标UIDbyte newUid[] {0xA1, 0xB2, 0xC3, 0xD4};上传代码并观察串口输出波特率9600关键验证步骤写入后立即用ReadUID验证成功后再测试门禁系统。我遇到的情况是复制卡在单元门禁可用但地下车库门禁却失效——后来发现车库系统还验证了1扇区数据需要额外复制该区域。高级技巧对于验证扇区数据的门禁系统可使用rfid_read_personal_data示例读取全部数据再通过rfid_write_personal_data写入新卡。某品牌电梯门禁的典型数据模式如下表扇区区块特征数据00UID厂商代码10固定标识符AE 4F 21 0311动态校验码实际操作中发现部分门禁系统会检测写卡时间戳。解决方案是先用原卡触发门禁5分钟内完成复制卡写入使两张卡的时间戳相近。
7.5元包邮的RC522读卡器,手把手教你用Arduino Uno复制小区门禁卡(附完整代码与接线图)
发布时间:2026/6/9 6:13:14
7.5元包邮的RC522读卡器实战用Arduino Uno低成本复制门禁卡周末整理抽屉时翻出一张失效的小区门禁卡物业补办要收50元工本费。作为电子爱好者我决定用手头的Arduino开发板和网购的7.5元包邮RC522读卡器尝试自主复制。经过三小时折腾最终零成本解决了问题——这个过程中积累的经验和踩过的坑正是本文要分享的核心内容。1. 硬件准备与成本控制核心设备清单Arduino Uno开发板兼容版约25元RC522射频读卡模块7.5元包邮可改写UID卡10张包邮价约8元关键细节RC522模块的VCC引脚需要3.3V供电但部分廉价模块的稳压芯片质量较差建议通过Arduino的3.3V输出口供电。我最初使用5V供电导致读卡距离不足2cm切换后稳定读卡距离达到5cm以上。接线示意图RC522引脚Arduino引脚SDAD10SCKD13MOSID11MISOD12IRQ不接GNDGNDRSTD93.3V3.3V注意不同库可能要求不同的SS/CS引脚定义若遇到读取失败可尝试将SDA改接D8或其他数字引脚2. 卡片类型选择与识别技巧市面上常见的13.56MHz射频卡主要分为三类M1 S50卡不可改写UID多数门禁系统会检测此特性UID可改写卡CUID/FUID等变种支持修改0扇区数据UFUID卡高级可擦写卡支持全扇区反复修改实战建议购买前与卖家确认卡片类型要求提供可改写UID的测试视频。我首次购买的所谓空白卡实际是M1卡导致写入操作完全无效白白浪费两天等待换货时间。快速识别卡片类型的方法#include SPI.h #include MFRC522.h #define RST_PIN 9 #define SS_PIN 10 MFRC522 mfrc522(SS_PIN, RST_PIN); void setup() { Serial.begin(9600); SPI.begin(); mfrc522.PCD_Init(); } void loop() { if (!mfrc522.PICC_IsNewCardPresent()) return; if (!mfrc522.PICC_ReadCardSerial()) return; Serial.print(Card UID:); for (byte i 0; i mfrc522.uid.size; i) { Serial.print(mfrc522.uid.uidByte[i] 0x10 ? 0 : ); Serial.print(mfrc522.uid.uidByte[i], HEX); } Serial.println(); mfrc522.PICC_HaltA(); }运行此代码后连续多次读卡若UID不变则可能是M1卡若每次UID随机变化则是UID可改写卡。3. 软件环境配置与库使用Arduino IDE的库管理虽方便但存在几个隐藏陷阱库版本兼容性问题最新版MFRC522库2.0.3可能不兼容老教程示例代码路径差异部分库安装后需要重启IDE才显示示例可靠配置流程在Arduino IDE中点击「工具」→「管理库」搜索MFRC522选择2.0.3版本安装通过「文件」→「示例」→「MFRC522」找到关键程序ReadUID获取卡片原始UIDChangeUID写入新UID需配合可改写卡常见问题处理当遇到SPI.h not found错误时说明未安装SPI库——这是Arduino内置库通过「工具」→「管理库」搜索SPI安装即可。4. 完整复制流程与避坑指南分步操作手册使用ReadUID读取原门禁卡UID如A1 B2 C3 D4将可改写UID卡放置到读卡器修改ChangeUID示例中的目标UIDbyte newUid[] {0xA1, 0xB2, 0xC3, 0xD4};上传代码并观察串口输出波特率9600关键验证步骤写入后立即用ReadUID验证成功后再测试门禁系统。我遇到的情况是复制卡在单元门禁可用但地下车库门禁却失效——后来发现车库系统还验证了1扇区数据需要额外复制该区域。高级技巧对于验证扇区数据的门禁系统可使用rfid_read_personal_data示例读取全部数据再通过rfid_write_personal_data写入新卡。某品牌电梯门禁的典型数据模式如下表扇区区块特征数据00UID厂商代码10固定标识符AE 4F 21 0311动态校验码实际操作中发现部分门禁系统会检测写卡时间戳。解决方案是先用原卡触发门禁5分钟内完成复制卡写入使两张卡的时间戳相近。