# ESP32S3实验室门禁系统 **Repository Path**: keNengbu/ESP32S3-Lab-ACS ## Basic Information - **Project Name**: ESP32S3实验室门禁系统 - **Description**: 本文设计并实现了一种基于ESP32S3的多模态智能门禁系统。系统融合指纹识别、RFID卡及密码验证三种身份认证方式,通过Django框架构建远程管理平台,支持访问记录存储、权限分级、设备互联等功能。软件层采用ESP-IDF开发环境实现多模块协同,结合MQTT协议完成与Home Assistant平台的通信,触发灯光、监控等设备的智能联动。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-05-01 - **Last Updated**: 2025-10-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ACS 系统项目文档 ## 项目简介 本项目为一个访问控制系统 (Access Control System, ACS),包含 ESP-IDF 嵌入式开发部分和 Django Web 后端部分。硬件部分暂未开源。 ![硬件部分暂未开源](README-assets/image-1.png) - **Lab_ACS-IDF**: 包含嵌入式系统代码,用于 ESP32 设备,使用 ESP-IDF 开发框架。 - **Lab_ACS-Web**: 包含 Django Web 应用,用于 ACS 的用户界面和 MQTT 消息处理。 ## 系统结构 ### Lab_ACS-IDF - `main/`: 包含主程序源码 - `MATRIXKEY/`: 矩阵键盘驱动 - `MQTT/`: MQTT 消息通信逻辑 - `OLED/`: OLED 显示驱动 - `RC522_IC/`: RFID 模块驱动 - `RELAY/`: 继电器控制逻辑 - `emqxsl-ca.crt`: CA 证书文件(用于 MQTT 通信) - `main.c`: 主程序入口,包含 RFID、OLED 和按键的任务调度 ### Lab_ACS-Web - `back/`: Django 应用核心代码 - `models.py`: 定义数据库模型,如环境数据和卡片数据 - `views.py`: 处理 HTTP 请求,如登录、注册、门控、写卡、读卡等 - `urls.py`: 路由配置 - `migrations/`: 数据库迁移脚本 - `management/commands/clear_db.py`: 自定义 Django 管理命令,用于清除数据库 - `static/`: 静态资源文件 - `css/login.css`: 登录界面样式 - `images/`: 图片资源 - `admin.py`: Django Admin 配置 - `apps.py`: 应用配置 - `djangoProject/`: Django 项目配置 - `settings.py`: 项目设置 - `urls.py`: 项目路由 - `wsgi.py`: WSGI 配置 - `mqtt.py`: MQTT 客户端实现,用于与嵌入式设备通信 ## 主要功能模块 ### Lab_ACS-IDF - **MQTT 通信** - 使用 `esp_mqtt_client` 实现与服务器的通信 - 实现了密码验证、卡片授权、数据发布等功能 - 使用 `mqtt_ssl.c` 实现了 SSL/TLS 安全通信 - **OLED 显示** ![alt text](README-assets/image.png) - 使用 I2C 接口控制 OLED 显示 - 实现了基本绘图、文本显示、图片显示等函数 - **RFID 读卡** - 使用 RC522_IC 实现 RFID 卡片识别 - 支持读写 Mifare 卡片 - **继电器控制** - 控制门锁继电器的开关 - **矩阵键盘** - 4x4 矩阵键盘扫描,用于密码输入 ## Lab_ACS-Web - **Django Web 界面** ![alt text](README-assets/图片1.png) ![alt text](README-assets/图片2.png) ![alt text](README-assets/图片3.png) ![alt text](README-assets/图片4.png) - 登录、注册、仪表盘、RFID 信息展示等页面 - 使用 Bootstrap 提供的前端样式 - **MQTT 集成** - `mqtt.py` 提供了与嵌入式设备的 MQTT 通信 - 支持订阅和发布消息,处理卡片数据和环境数据 - **数据模型** - `EnvironmentData`: 存储环境信息 - `CardData`: 存储卡片信息 - `CardList`: 存储授权卡片列表 ## 使用说明 ### 硬件要求 - ESP32 开发板 - RC522 RFID 模块 - OLED 显示屏 - 4x4 矩阵键盘 - 继电器模块 ### 软件要求 - ESP-IDF 开发环境 - Python 3.10+ - Django - Bootstrap - MQTT Broker(如 EMQX) ### 配置步骤 1. 配置并运行 MQTT Broker 2. 修改 `Lab_ACS-IDF/main/mqtt_ssl.c` 中的 MQTT 连接信息 3. 在 `Lab_ACS-Web/djangoProject/settings.py` 中配置数据库、MQTT 服务器地址等 4. 在 `Lab_ACS-Web/back/views.py` 中查看和修改 Web 界面逻辑 5. 在 `Lab_ACS-IDF/main/main.c` 中配置 RFID、OLED 和按键任务 ## 开发与部署 - 使用 ESP-IDF 构建并烧录嵌入式程序 - 使用 `python manage.py runserver` 启动 Web 服务器 - 使用 `python manage.py clear_db` 清除数据库数据 ## 版权与许可 本项目使用开源软件,包含 ESP-IDF、Django、Bootstrap 和 Popper.js 的代码。具体许可协议请参考各子模块的 `LICENSE` 文件。