使用 Arduino 制作便携式 RFID 门锁——分步指南
元器件与物料
| Arduino UNO | ×1 |
| RFID 读写模块 (RC522) | ×1 |
| 跳线 (通用) | ×1 |
| USB-A 转 Micro-USB 数据线 | ×1 |
| ControlEverything.com 4 通道 I2C 继电器控制器 | ×1 |
应用与在线服务
- Arduino IDE
项目简介
本教程将演示如何使用 Arduino Uno 和 RC522 RFID 模块制作一个便携式 RFID 门锁。该装置体积小巧,制作简单,适合初学者入门物联网安防项目。
硬件概览——RC522 RFID 读写模块
什么是 RFID 读写器?
RFID(射频识别)是一种利用无线电波在短距离内传输数据的身份识别系统。系统包含标签(电子标签/钥匙扣)、读写设备和宿主应用系统。标签内含微芯片和天线,无需电池即可工作(无源标签)。当标签进入读写器产生的电磁场时,感应电流为芯片供电,从而读取或写入数据。
RC522 模块主要规格:
- 工作电压:3.3V(严禁接 5V)
- 工作频率:13.56 MHz
- 内存容量:1 KB(16 扇区,每扇区两组密钥 A/B)
- 支持读写操作,可存储自定义数据
- 价格低廉(通常 < $4),随模块附赠一张白卡和一个钥匙扣标签
引脚接线(Arduino Uno)
| RC522 引脚 | Arduino 引脚 |
|---|---|
| SDA (SS) | Digital 10 |
| SCK | Digital 13 |
| MOSI | Digital 11 |
| MISO | Digital 12 |
| IRQ | 悬空 |
| GND | GND |
| RST | Digital 9 |
| 3.3V | 3.3V |
步骤 1:读取卡片 UID
- 在 Arduino IDE 中安装
MFRC522库(库管理器搜索即可)。 - 打开示例:
文件 > 示例 > MFRC522 > DumpInfo并上传。 - 打开串口监视器(波特率 9600),将卡片/钥匙扣靠近模块。
- 记录串口输出中高亮显示的 Card UID(如
89 18 79 63),后续代码需用到。
步骤 2:上传门锁控制代码
将下方完整代码上传至 Arduino。代码会在检测到授权 UID 时触发继电器(低电平有效)持续 1 秒,模拟门锁开启;其余 UID 则拒绝访问。
#include <SPI.h>
#include <MFRC522.h>
#define RELAY_PIN 8
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
void setup() {
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, HIGH); // 继电器默认断开(高电平关闭)
Serial.begin(9600);
SPI.begin();
mfrc522.PCD_Init();
Serial.println(F("请将卡片靠近读写器..."));
}
void loop() {
if (!mfrc522.PICC_IsNewCardPresent()) return;
if (!mfrc522.PICC_ReadCardSerial()) return;
// 拼接 UID 字符串(大写、空格分隔)
String uidStr = "";
for (byte i = 0; i < mfrc522.uid.size; i++) {
uidStr += (mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
uidStr += String(mfrc522.uid.uidByte[i], HEX);
}
uidStr.toUpperCase();
uidStr.trim(); // 去除首尾空格
Serial.print(F("UID: ")); Serial.println(uidStr);
// ==== 修改此处为你的授权 UID ====
if (uidStr == "89 18 79 63") {
Serial.println(F("授权通过 → 继电器吸合"));
digitalWrite(RELAY_PIN, LOW); // 低电平触发
delay(1000);
digitalWrite(RELAY_PIN, HIGH); // 复位
} else {
Serial.println(F("拒绝访问"));
}
delay(500); // 防抖
}
演示效果
- 授权卡靠近 → 串口打印
Authorized access,继电器动作 1 秒。 - 非授权卡靠近 → 串口打印
Access denied,继电器不动作。
常见问题
- 供电:RC522 必须接 3.3V,接 5V 会烧毁模块。
- 库版本:建议使用最新版
MFRC522库,旧版可能不兼容新款模块。 - 继电器模块:多数模块为低电平触发,代码中
LOW为吸合,HIGH为释放;若模块为高电平触发,请自行调整逻辑。
原理图


制造工艺
- 复古 Numitron 管时钟:Arduino Nano 驱动,低温可靠省电
- Arduino RFID 门锁系统 – RC522 模块实现安全门禁
- 打造安全的 Arduino RFID 门锁——分步指南
- 基于 Arduino 与 Python 的可靠 RFID 考勤系统
- 智能存钱罐:Arduino Nano 控制硬币识别器实现余额显示
- Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
- Arduino DIY 电压表:Nokia 5110 屏幕显示,手把手教学
- 自制高精度测距轮:Arduino Nano + 旋转编码器 + 1602 LCD
- 高精度空气质量监测仪:Sharp GP2Y1010AU0F 粉尘传感器 + Arduino Nano
- Arduino UNO + 以太网盾板实现低成本太阳辐射测量仪(热电堆原理)
- Arduino Nano 与 WS2812 灯带打造 1D 乒乓球游戏——分步 DIY 教程
- Arduino Pro Micro 实现 HID UPS:将"哑"电源升级为 USB 智能后备电源