若该文为原创文章,转载请注明原文出处。
一、引言
(一)研究背景及意义
随着“智慧校园”和“绿色建筑”概念的普及,教室的能源管理,特别是照明用电的节能,已成为一个重要的研究课题。传统教室照明依赖人工管理,经常出现“无人长明灯”和“光照充足仍开灯”的能源浪费现象。本项目旨在利用传感器技术、嵌入式系统和物联网技术,设计一套能够根据室内光照强度和实际人数自动调节照明、并能进行远程监控的系统,对于节约能源、降低运维成本、提升管理智能化水平具有重要的现实意义。
(二)国内外研究现状
目前,智能照明系统多采用单一的光照控制或简单的动静感应控制。单纯的光控无法判断区域内是否有人,而单纯的动静感应(如人体红外传感器)无法区分光照是否充足,且无法进行准确的人数统计。本设计创新性地将光照传感与双向人数统计相结合,实现了更精准的“按需照明”控制。同时,引入物联网技术,使管理人员能够远程监控多个教室的状态,大大提升了系统的实用性和管理效率。
二、系统总体设计
(一)系统架构
系统采用“感知-决策-执行-云联”的闭环控制架构。
-
感知层:由光照传感器、温湿度传感器、红外对管传感器组成,负责采集环境原始数据。
-
决策层:以STM32为核心,处理传感器数据,执行核心控制算法(人数统计、模式判断)。
-
执行层:继电器或MOSFET模块,负责控制LED灯组的开关。
-
交互与通信层:包括OLED本地显示、按键输入,以及ESP8266 WiFi模块负责与云平台和手机APP进行数据交互。
(二)功能模块划分
-
环境感知模块:光照传感器、DHT11温湿度传感器。
-
人数统计模块:两对红外对管(或红外发射接收管)传感器。
-
控制执行模块:继电器/MOSFET开关电路。
-
人机交互模块:OLED显示屏、按键。
-
通信模块:ESP8266 WiFi模块。
-
电源模块:为STM32及各个模块提供5V和3.3V电源。
三、硬件设计与实现
(一)系统硬件框架图
(二)主控模块选型及介绍
模块名称 | 型号 | 核心参数 | 选型理由 |
---|---|---|---|
主控MCU | STM32F103C8T6 | Cortex-M3内核,72MHz,64KB Flash,20KB RAM,2个ADC,3个USART | 资源完全满足本项目需求(ADC采光照,USART接WiFi,足够GPIO接传感器),性价比极高,开发资料丰富。 |
(三)传感器模块选型及电路设计
传感器类型 | 型号/种类 | 接口 | 电路设计要点 |
---|---|---|---|
光照传感器 | 光敏电阻(GL5528) | ADC | 搭配10K电阻组成分压电路,输出模拟电压接入STM32 ADC引脚。光照越强,电阻值越小,输出电压越高。 |
温湿度传感器 | DHT11 | 单总线(GPIO) | 数据线接STM32 GPIO,需接4.7K上拉电阻。时序要求严格,需精确延时。 |
人数统计传感器 | 红外对管 * 2 (E18-D80NK) | GPIO | 采用高低电平触发的模块。当红外被遮挡时,输出信号跳变。关键:两对传感器需在门口保持一定距离(>20cm)安装,以防止同时被触发。 |
按键 | 轻触按键 | GPIO | 设置为输入上拉模式,按键另一端接地。用于切换模式、手动开关灯。 |
(四)通信模块选型及配置
模块名称 | 型号 | 接口 | 功能与配置 |
---|---|---|---|
WiFi模块 | ESP-01S (ESP8266) | USART (串口) | STM32通过AT指令集控制ESP8266连接WiFi,并通过MQTT或HTTP协议与云平台(如OneNET、阿里云、Blinker)通信,实现数据上报和指令接收。 |
核心控制逻辑说明
1. 人数统计逻辑(核心算法)
-
状态: 系统维护一个内部计数变量
People_Count
。 -
进入: 当入口传感器先被触发,然后出口传感器被触发,判定为一人进入,
People_Count++
。 -
离开: 当出口传感器先被触发,然后入口传感器被触发,判定为一人离开,
People_Count--
。 -
防误触: 在软件中需加入去抖动延时和状态判断,防止有人在门口徘徊造成重复计数。
2. 自动模式 (Auto_Mode = 1
)
-
条件1(光照不足):
if (光照强度 < 光照阈值) { 开启照明灯; }
-
条件2(有人):
if (People_Count > 0) { 开启照明灯; }
-
关灯条件:
if (光照强度 >= 光照阈值 && People_Count == 0) { 延迟一段时间(如2分钟)后关闭照明灯; }
//延迟防止人短暂离开就关灯
3. 手动模式 (Auto_Mode = 0
)
-
本地手动: 通过按键强制控制照明灯的开关,自动逻辑失效。
-
远程手动: 通过手机APP远程控制照明灯的开关,并可远程切换模式。
4. 数据上传与显示
-
动作: STM32定期将人数、温湿度、光照、灯状态等数据通过WiFi上传至手机APP。
-
显示: OLED屏幕实时刷新显示所有关键参数。
四、软件设计与实现
(一)开发环境搭建
-
IDE:STM32CubeIDE 或 Keil uVision 5。
-
库:使用STM32CubeMX配置HAL库,快速生成初始化代码。
-
驱动:需编写DHT11、OLED(SSD1306)、ESP8266 AT指令解析、MQTT客户端等驱动程序。
(二)系统软件流程图
(三)关键软件模块实现
1. 人数统计算法(核心)
2. 自动控制逻辑实现
3. 数据上报与指令接收
五、系统测试与优化
(一)测试方案
-
功能测试:
-
人数统计:用书本模拟人体,分别测试“进入”和“离开”动作,观察OLED显示的人数变化是否准确。
-
光控测试:用手遮挡光照传感器,模拟光线变暗,观察LED灯是否在有人的情况下自动开启。
-
模式切换:通过按键和APP切换模式,测试手动开关灯功能是否正常。
-
网络通信:查看云平台是否能实时更新数据,并通过APP下发指令控制灯开关和模式切换。
-
-
性能测试:
-
抗干扰测试:在传感器附近快速挥手,测试是否会误触发。
-
压力测试:模拟多人快速连续进出,测试人数统计的准确率。
-
(二)优化方向
-
软件优化:
-
状态机优化人数统计:使用更精确的状态机算法来跟踪人的运动方向,进一步提高计数准确率,防止在门口徘徊造成误计数。
-
数据滤波:对光照传感器采集的ADC值进行软件滤波(如滑动平均滤波),避免因瞬时变化导致灯光频繁闪烁。
-
看门狗:加入独立看门狗(IWDG),防止程序跑飞,提高系统稳定性。
-
-
硬件优化:
-
传感器布局:优化红外对管的安装位置和角度,确保其探测区域不会重叠,且能可靠检测到通行人员。
-
电源管理:采用更稳定的LDO电源芯片,并为数字和模拟部分进行适当的电源隔离,减少干扰。
-
六、结论与关键设计
(一)结论
本项目成功设计并实现了一套功能完整、运行稳定的智能教室灯光与人数监测系统。系统成功将环境感知、人员监测、智能决策和物联网远程控制有机结合,实现了教室照明的智能化管理,达到了节能降耗和提升管理效率的设计目标。经过测试,各项功能均运行良好,具有较高的实用和推广价值。
(二)关键设计
-
基于双红外对管的双向人数统计方案:这是系统的核心创新点,通过判断两个传感器触发的先后顺序来区分进出方向,实现了相对准确的人数统计,为“人走灯灭”提供了精准的数据依据。
-
光照与人数双条件判断的自动控制逻辑:控制策略并非简单的“有人就开灯”或“暗了就开灯”,而是 “在光照不足的条件下,且有人存在时才开灯” 。这一逻辑从根本上避免了两种主要的能源浪费场景。
-
灵活的本地与远程双控制模式:系统提供了自动智能控制和手动远程控制两种模式,既保证了日常的自动化运行,又满足了特殊情况下的人为干预需求,极大地增强了系统的实用性和用户体验。
如有侵权,或需要完整代码,请及时联系博主。