当前位置: 首页 > news >正文

7.5元包邮的RC522读卡器,手把手教你用Arduino Uno复制小区门禁卡(附完整代码与接线图)

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引脚
SDAD10
SCKD13
MOSID11
MISOD12
IRQ不接
GNDGND
RSTD9
3.3V3.3V

注意:不同库可能要求不同的SS/CS引脚定义,若遇到读取失败,可尝试将SDA改接D8或其他数字引脚

2. 卡片类型选择与识别技巧

市面上常见的13.56MHz射频卡主要分为三类:

  1. M1 S50卡:不可改写UID,多数门禁系统会检测此特性
  2. UID可改写卡:CUID/FUID等变种,支持修改0扇区数据
  3. 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才显示示例

可靠配置流程

  1. 在Arduino IDE中点击「工具」→「管理库」
  2. 搜索"MFRC522"选择2.0.3版本安装
  3. 通过「文件」→「示例」→「MFRC522」找到关键程序:
    • ReadUID:获取卡片原始UID
    • ChangeUID:写入新UID(需配合可改写卡)

常见问题处理:当遇到"SPI.h not found"错误时,说明未安装SPI库——这是Arduino内置库,通过「工具」→「管理库」搜索"SPI"安装即可。

4. 完整复制流程与避坑指南

分步操作手册

  1. 使用ReadUID读取原门禁卡UID(如:A1 B2 C3 D4)
  2. 将可改写UID卡放置到读卡器
  3. 修改ChangeUID示例中的目标UID:
byte newUid[] = {0xA1, 0xB2, 0xC3, 0xD4};
  1. 上传代码并观察串口输出(波特率9600)

关键验证步骤:写入后立即用ReadUID验证,成功后再测试门禁系统。我遇到的情况是:复制卡在单元门禁可用,但地下车库门禁却失效——后来发现车库系统还验证了1扇区数据,需要额外复制该区域。

高级技巧:对于验证扇区数据的门禁系统,可使用rfid_read_personal_data示例读取全部数据,再通过rfid_write_personal_data写入新卡。某品牌电梯门禁的典型数据模式如下表:

扇区区块特征数据
00UID+厂商代码
10固定标识符"AE 4F 21 03"
11动态校验码

实际操作中发现,部分门禁系统会检测写卡时间戳。解决方案是:先用原卡触发门禁,5分钟内完成复制卡写入,使两张卡的时间戳相近。

http://www.rkmt.cn/news/1491144.html

相关文章:

  • 【大同黄金回收六大机构实测 持金变现安全指南】 - 润富黄金回收
  • 从标签到社区:我是如何利用GitHub Topics功能,让我的Go语言小项目获得第一批用户的
  • IINA技术解析:基于mpv的macOS现代化视频播放器架构与实现
  • 告别轮询!用STM32CubeMX+HAL库快速配置串口中断,搞定HWT101姿态角数据流
  • DIY T12烙铁头驱动:用三极管和电容搞定NMOS上管驱动(附Multisim仿真)
  • 基于深度学习YOLOv8的吸烟识别检测系统(YOLOv8+YOLO数据集+UI界面+Python项目源码+模型)
  • 别再为PCB仿真发愁了!手把手教你用AD22+Ansys EDB Exporter打通HFSS流程
  • 北京管道疏通公司采购指南,5家务实推荐清单 - 品牌推荐
  • 普通电脑做大数据采集的3种实战方案
  • GitHub Topics功能背后的故事:一个机器学习项目如何改变了我们找代码的方式
  • 给你的K210一双‘慧眼’:手把手教你制作240x240数据集并用Mx-yolov3训练专属检测模型
  • 【包头黄金回收】本地六大诚信回收商家深度实测 - 润富黄金回收
  • 自动售货机串口投币 FPGA 设计 Verilog Vivado
  • 【包头黄金回收】六大口碑机构实测报告 - 润富黄金回收
  • 企业知识库聊天机器人实战:RAG+轻量模型构建可溯源客服助手
  • Linux zone 体系设计:物理内存为什么要分区
  • 2026年企业记账工具技术实测:快递查询软件/批量查快递软件/收支记账/流水记账/生意记账/记账本/记账软件/随手记账/选择指南 - 优质品牌商家
  • ChatGPT革命:从自然语言到可执行指令的认知迁移
  • 北京管道疏通公司怎么选?6月实测5家靠谱推荐 - 品牌推荐
  • 2026年真空泵厂家选购指南:水环真空泵、真空机组、真空泵出口、真空负压泵站厂家选择指南,产能、工艺、品控三维度权威解析 - 海棠依旧大
  • 2026年6月央国企求职机构推荐:五大排行专业评测校招防盲目性价比高价格 - 品牌推荐
  • 告别零碎资料!手把手教你搞定ASTER L1T数据的预处理全流程(附ENVI实操)
  • DeepSeek大模型架构与生产部署深度解析
  • 从Anaconda到VS Code:为地理数据分析打造无缝的GDAL+Pandas+Jupyter开发环境(Windows版)
  • 李克特量表建模新范式:用泊松与负二项替代有序Logistic
  • 从L1A到L1T:ASTER数据产品升级史与L1T的‘精确地形校正’到底强在哪?
  • STC89C52四路防盗报警系统:蜂鸣器+窗磁+PIR+红外对射全功能设计包
  • 临床预测模型实操包:LASSO自动选变量、逻辑回归建模、ROC可视化与Delong检验对比
  • 小程序毕设选题推荐:基于SpringBoot+微信小程序诊所预约挂号系统基于springboot+微信小程序的乡镇医院挂号预约系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 【MySQL高阶】23.重做日志(1)