智能门禁系统

简介

自学,最好的方式就自己所项目,从实战中学习。

而本项目就是自学的一个成果:基于ESP32和FreeRTOS建构的商业级双端智能门禁 IoT 系统。它采用严格的 MVC 架构与事件驱动模型,在单片机上实现了本地硬件无阻塞交互与 MQTT 云端管控的毫秒级无缝融合,并具备断电记忆、防暴自锁和云端网络对时审计功能。

链接:https://github.com/ZZhiHao196/ESP32_Projects/

核心功能

本地交互:用户通过 XL9555 扩展的键盘输入密码,每次按键蜂鸣器会发出清脆的滴答声。LCD 屏幕实时显示当前时间、网络状态和输入反馈。

断电记忆:管理员设置的开门密码、设备运行状态会保存在 EEPROM 中,断电不丢失。

云端协同:设备通过 Wi-Fi 接入网络,利用 MQTT 协议将每一次的“开门记录(带 RTC 时间戳)”打包推送到云端;同时,云端也可以下发指一系列指令直接远程开门、强制拉响蜂鸣器警报、修改密码等。

技术栈

XL9555 (核心枢纽) + EXTI (外部中断)

  • 键盘驱动:占用 XL9555 的多个 I/O 驱动一组矩阵键盘(或独立按键),用于密码输入和菜单切换。

  • 蜂鸣器控制:占用 XL9555 的 1 个输出引脚连接蜂鸣器。

  • 中断触发:将 XL9555 的 INT 硬件引脚连接到 ESP32 的特定 GPIO,并配置为 EXTI (下降沿触发)。ESP32 平时不需要死循环轮询按键,只有当用户按下按键,XL9555 硬件拉低 INT 引脚触发中断,ESP32 才去通过 I2C 读取键值。

  • EEPROM:系统首次开机时读取本地保存的“门禁密码”和“MQTT 设备 ID”。如果密码被管理员在本地或云端修改,立刻写入 EEPROM 持久化。

  • SNTP:提供脱机状态下的精准时间。在 LCD 屏幕右上角实现动态时钟,并在每次产生“开门记录”时,附加上精准的时间戳。

  • **TIMER **:用来控制蜂鸣器的“非阻塞式”发声逻辑。比如密码错误时,触发定时器让蜂鸣器连续短促鸣叫 3 次(滴-滴-滴),绝不能用 vTaskDelay 卡死主程序。

  • LCD (SPI) & LED:LCD 绘制 UI 界面(密码输入框、状态图标)。LED 作为物理门锁继电器的状态指示灯(绿灯代表门开,红灯代表警戒)。

  • WIFI / MQTT:建立稳定的长连接,订阅 NorthStar/cmd 接收远程开锁指令,向 NorthStar/log 发布带时间戳的验证日志。

结果

MQTT与按键交互

在这里插入图片描述

实物
在这里插入图片描述

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐