2026寒假练-基于XIAO ESP32S3 Sense的智能门禁系统
该项目使用了XIAO ESP32S3 Sense开发板,实现了识别用户头像的智能门锁的设计,它的主要功能为:通过Edge Impulse平台训练的对象检测模型识别特定玩偶,结合超声波传感器、舵机、WS2812灯带和OLED显示屏,实现了一个完整的智能身份验证系统。。
标签
嵌入式系统
数字逻辑
显示
开发板
tinySDR
更新2026-03-24
47

基于XIAO ESP32S3 Sense的智能门禁系统

一、项目介绍

本项目是一个基于XIAO ESP32S3 Sense开发板的智能门禁系统,通过Edge Impulse平台训练的对象检测模型识别特定玩偶,结合超声波传感器、舵机、WS2812灯带和OLED显示屏,实现了一个完整的智能身份验证系统。系统能够自动检测人员靠近,进行玩偶识别验证,并根据验证结果控制门锁状态,具有休眠、唤醒、成功验证和失败处理等多种工作模式。

 

二、硬件介绍

主要硬件组件:

1. XIAO ESP32S3 Sense开发板:核心控制器,集成Wi-Fi/蓝牙功能和摄像头接口

2. OV2640图像传感器:用于采集图像,进行玩偶识别

3. CS100A超声波传感器:检测人员靠近,触发系统唤醒

触发引脚:D3

回波引脚:D2

4. SG90舵机:模拟门锁开关

控制引脚:D0

5. WS2812 RGB灯带:显示系统状态(10个LED)

数据引脚:D1

6. OLED显示屏(SSD1306):显示系统状态信息

I2C地址:0x3c

SDA引脚:D4

SCL引脚:D5

 

三、方案框图与设计思路

系统框图:

  export_hr4v3b.png

 

设计思路:

1. 状态机设计:系统采用4种工作模式(0-休眠,1-捕获,2-成功,3-失败)

2. 低功耗设计:默认休眠状态,所有外设关闭

3. 智能唤醒:超声波传感器检测到人员靠近(<35cm)自动唤醒

4. 视觉验证:使用Edge Impulse训练的玩偶识别模型进行身份验证

5. 多模态反馈:通过LED、屏幕、舵机提供丰富的状态反馈


 

四、软件开发环境与流程图

开发环境:

编程语言:Arduino C++

开发平台:Arduino IDE

AI平台:Edge Impulse(模型训练与导出)

核心库:

Edge Impulse SDK

ESP32 Camera库

Adafruit_NeoPixel库

SSD1306Wire库

ESP32Servo库

 

软件流程图:

 

关键代码介绍:

1. 距离测量函数:

         
    float measureDistance() {    
      digitalWrite(trigPin, LOW);    
      delayMicroseconds(2);    
      digitalWrite(trigPin, HIGH);    
      delayMicroseconds(10);    
      digitalWrite(trigPin, LOW);    
          
      unsigned long duration = pulseIn(echoPin, HIGH, measurementTimeout);    
      if (duration == 0) return -1.0;    
      if (duration < 10) return -2.0;    
          
      float distance_cm = duration * soundSpeed_cm_per_us / 2.0;    
      return distance_cm;    
    }    
         

 

2. LED状态显示函数:

         


    void showPixel(int color) {    
      switch (color) {    
        case 0: // 熄灭    
          pixels.setPixelColor(0, pixels.Color(0, 0, 0));    
          break;    
        case 1: // 黄色(唤醒)    
          pixels.setPixelColor(0, pixels.Color(5, 8, 0));    
          break;    
        case 2: // 绿色流水(成功)    
          // 流水灯效果实现    
          break;    
        case 3: // 红色闪烁(失败)    
          // 闪烁效果实现    
          break;    
      }    
      pixels.show();    
    }    
         

 

3. 主状态机逻辑:

        

 
    if(workmode == 0) { // 休眠模式    
      display.clear();    
      pixels.clear();    
      myservo.write(0);    
    } else if(workmode == 1) { // 捕获模式    
      showPixel(1);    
      display.drawString(0, 24, "Capturing");    
      cnt_capture++;    
      if(cnt_capture > 25) workmode = 3; // 超时失败    
      if(detect_Result == 1) workmode = 2; // 检测成功    
    }    
         

 

五、功能展示与说明

实物连接图:

    


状态展示:


1. 休眠状态:

LED:全部熄灭

屏幕:关闭

舵机:0°(关门)

2. 唤醒状态(检测到人员):

LED:黄色常亮

屏幕:显示"Capturing"

开始图像采集

3. 验证成功:

LED:绿色流水灯效果

屏幕:显示"Pass"

舵机:180°(开门)

2秒后返回休眠

4. 验证失败:

LED:红色闪烁3次

屏幕:显示"Fail"

舵机:保持0°(关门)

2秒后返回休眠


六、项目难题与解决方法

难题1:摄像头初始化失败

问题:ESP32S3与OV3660摄像头通信未能驱动,
解决:

1.检查摄像头引脚定义,确保与硬件匹配

2.使用OV2640可以正常工作


难题2:超声波传感器误触发

问题:检测区域周边不规则导致误检测,系统频繁唤醒
解决:

1.设置合理的距离阈值(35cm)

2.添加软件滤波,连续多次检测确认

3.设置超时机制(25ms)

4.添加无效脉冲检测(<10μs)

 

难题3:Edge Impulse模型部署

问题:检测速度比较慢,检测准确度不高

解决:

1.

1.修改图像预处理函数,适配摄像头输出格式

2.训练图片数量过少,使用增加到50张应该会好些

 

七、心得体会

通过本项目,我获得了以下收获:

 

1. 端侧AI应用开发经验:掌握了Edge Impulse平台的使用,了解了从数据采集、模型训练到嵌入式部署的全流程。深刻体会到在资源受限的嵌入式设备上运行AI模型的挑战与优化方法。

2. 多传感器融合技术:学会了如何协调摄像头、超声波、舵机、LED等多种外设,实现复杂的交互逻辑。状态机设计模式在处理多模态输入输出时表现出色。

3. 嵌入式系统调试技巧:通过解决摄像头初始化、超声波干扰、内存分配等问题,积累了丰富的调试经验。串口日志、状态指示灯、分段测试等方法非常有效。

4. 硬件集成能力:从原理图理解到实际接线,从库函数调用到底层寄存器配置,全面提升了硬件集成能力。特别注意到电源稳定性和信号完整性对系统可靠性的影响。

5. 项目管理经验:按照需求分析、方案设计、编码实现、调试优化的流程完成项目,培养了完整的工程思维。文档编写和代码注释的重要性在实践中得到验证。

 

本项目不仅实现了技术目标,更重要的是培养了解决复杂问题的能力。未来可以考虑增加更多功能,如Wi-Fi远程监控、多用户管理、低功耗优化等,使系统更加完善实用。

 

附件下载
ESP32Door.zip
项目源码
团队介绍
本项目由tinySDR独立完成
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号