DIY 智能门禁:用 ESP32 & RFID 打造安全便捷的家居体验 (附代码)

一、系统概述

本项目旨在使用 ESP32 微控制器和 RFID 技术构建一个安全可靠的门禁系统。该系统利用 RFID 卡进行身份验证,通过读取卡内存储的唯一 ID,判断用户权限并控制门锁的开关。ESP32 强大的 Wi-Fi 功能还能实现远程监控和管理,方便用户实时掌握门禁状态。

系统架构图:

二、RFID 技术介绍

RFID(射频识别)是一种无线通信技术,可以通过无线电波识别特定目标并读取数据,而无需建立机械或光学接触。

RFID 系统组成:

  • **电子标签(Tag):**附着于目标物体上,存储着物体的标识信息。
  • **读写器(Reader):**发射射频信号激活电子标签,读取或写入数据。
  • **天线(Antenna):**用于 RFID 信号的发送和接收。

RFID 工作原理:

  1. 读写器发射射频信号。
  2. 电子标签接收到信号后,其内部电路被激活,并将存储的 ID 信息发送出去。
  3. 读写器接收电子标签发送的信号,并解码获得 ID 信息。

RFID 优势:

  • 非接触式识别,方便快捷。
  • 可读写,信息存储量大。
  • 抗干扰能力强,安全性高。

三、ESP32 微控制器

ESP32 是一款低功耗、高性能的微控制器,集成了 Wi-Fi 和蓝牙功能,非常适合物联网应用开发。

ESP32 主要特点:

  • 双核 32 位处理器,运行速度高达 240 MHz。
  • 支持 Wi-Fi 802.11 b/g/n 协议,可连接互联网。
  • 支持蓝牙 4.2 协议,可与手机等设备进行通信。
  • 丰富的 GPIO 接口,方便连接各种传感器和执行器。

四、系统硬件设计

所需硬件:

  • ESP32 开发板
  • RFID 读写模块 (例如:RC522)
  • RFID 卡
  • 电磁锁
  • 继电器模块
  • 电源

硬件连接图:

五、系统软件设计

主要功能:

  1. 初始化 ESP32 和 RFID 模块。
  2. 读取 RFID 卡 ID。
  3. 验证用户权限。
  4. 控制门锁开关。
  5. 通过 Wi-Fi 连接云平台,实现远程监控。

代码示例 (Arduino IDE):

cpp 复制代码
#include <SPI.h>
#include <MFRC522.h>
#include <WiFi.h>

// 定义 RFID 模块引脚
#define RST_PIN  9
#define SS_PIN  10

// 定义 Wi-Fi 信息
#define WIFI_SSID "your_ssid"
#define WIFI_PASSWORD "your_password"

// 创建 RFID 对象
MFRC522 mfrc522(SS_PIN, RST_PIN);

// 授权用户卡号
byte authorizedCard[] = {0xXX, 0xXX, 0xXX, 0xXX}; // 替换为实际卡号

void setup() {
  Serial.begin(115200);
  // 初始化 SPI 总线
  SPI.begin();
  // 初始化 RFID 模块
  mfrc522.PCD_Init();
  // 连接 Wi-Fi
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("WiFi connected");
}

void loop() {
  // 寻找 RFID 卡
  if (! mfrc522.PICC_IsNewCardPresent()) {
    return;
  }
  // 读取卡 ID
  if (! mfrc522.PICC_ReadCardSerial()) {
    return;
  }
  // 验证卡号
  if (memcmp(mfrc522.uid.uidByte, authorizedCard, mfrc522.uid.size) == 0) {
    Serial.println("Access granted");
    // 打开门锁
    digitalWrite(lockPin, HIGH);
    delay(2000);
    // 关闭门锁
    digitalWrite(lockPin, LOW);
  } else {
    Serial.println("Access denied");
  }
  // 停用当前卡
  mfrc522.PICC_HaltA();
}

六、系统测试

完成硬件组装和软件上传后,即可进行系统测试:

  1. 将 RFID 卡靠近读写模块。
  2. 如果卡号匹配,门锁应打开几秒钟,然后自动关闭。
  3. 通过串口监视器查看系统日志。

七、总结

本项目介绍了如何使用 ESP32 和 RFID 技术构建一个简单的门禁系统。通过添加传感器、联网功能和更复杂的控制逻辑,可以进一步扩展系统功能,例如:

  • 多用户管理
  • 记录访问日志
  • 手机远程开门
  • 与其他智能家居系统集成、

相关知识点链接

相关推荐
Doraemomo1 小时前
IMX6ULL裸机开发——系统主频和时钟配置
arm开发·嵌入式硬件·makefile·imx6ull
Elsa️7462 小时前
算法一周刷题总结
c++·算法
风合星语2 小时前
2026 机器人工程实例(五):让 Allegro Hand 在 MuJoCo 中完成接触抓取——抓取状态机、稳定抬升与受控释放
c++·python·机器人·仿真
小羊没烦恼!2 小时前
Memory 记忆设计讨论:Agent Memory 的数据模型可以怎么设计
java·开发语言·前端·c++·c#
chen_x_x2 小时前
yopen GPIO demo详细版
物联网
Alinket2 小时前
当 AI 走进传感器:嵌入式人工智能如何重构设备智能
人工智能·物联网·重构·健康医疗·无线通信·智能硬件·iot
welfare9622 小时前
新号别搞:内存管理+模板初阶+STL简介
开发语言·c++
深圳市恒锐丰科技杨生3 小时前
EG1192H 零功耗使能集成上管非同步降压 DC‑DC|屹晶 EGmicro
嵌入式硬件·硬件工程
SL_staff3 小时前
面向业务人员的IoT概念翻译实践:JVS-IOT低代码配置原理与开发者视角解析
java·spring boot·物联网
雪落漂泊3 小时前
C++11(上)
开发语言·c++