ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

基于STM32的路灯智能控制系统设计(光控+人体感应+太阳能追光+火灾报警)

基于STM32的路灯智能控制系统设计(光控+人体感应+太阳能追光+火灾报警) 基于STM32的路灯智能控制系统设计光控人体感应太阳能追光火灾报警一、系统功能总览二、核心模块选型对比2.1 主控模块STM32F103C8T6 vs NXP LPC55S692.2 光敏检测模块GL5528 vs BH17502.3 红外检测模块红外对管 vs E3Z-D622.4 火焰检测模块TEMT6000 vs ZPY162.5 水滴检测模块WLD-01 vs DWS-042.6 显示模块OLED12864 vs TFT ST77352.7 无线通信模块ESP8266 vs nRF905三、系统接线总表四、系统软件设计4.1 主程序设计4.2 光敏检测子程序4.3 红外检测子程序4.4 火焰检测子程序4.5 水滴检测子程序4.6 数据显示子程序4.7 无线通信子程序五、系统实现与测试5.1 硬件与软件调试5.2 功能测试六、总结基于STM32的路灯智能控制系统设计光控人体感应太阳能追光火灾报警城市照明是城市化进程中的重要基础设施但传统路灯普遍存在长明灯式能源浪费、故障发现滞后、维护成本高等问题。本文基于 STM32 单片机设计了一套路灯智能控制系统把环境光照监测、人体感应、火焰检测、降雨监测和远程控制集成到一起天黑自动开灯、有人经过自动调亮、检测到火焰立即声光报警并推送 APP太阳能板由步进电机带动自动追踪光强更强的方向下雨时舵机自动打开遮雨设备所有数据经 ESP8266 上云一部手机就能完成监控与调光。一、系统功能总览系统以 STM32F103C8T6 为核心围绕环境感知 智能照明 安全防护 远程管理展开各功能模块如下表功能模块实现方式功能说明光照监测GL5528 光敏电阻ADC实时采集环境光强低于阈值自动开灯人体感应红外对管检测行人经过光弱且有人时自动调亮灯光火焰检测TEMT6000 红外火焰传感器识别火焰后点亮应急灯并向 APP 推送火灾告警降雨监测WLD-01 雨滴传感器检测水滴含量超限控制舵机打开遮雨设备太阳能追光双光敏电阻 步进电机比较两路光强转动太阳能板朝向光照更强一侧故障报警故障按键 报警灯一键上报故障报警灯提示并向 APP 发送信息数据显示OLED12864I2C实时显示光强、雨量、系统状态等参数远程控制ESP8266 MQTT数据上传云端APP 远程查看数据并控制灯亮暗二、核心模块选型对比2.1 主控模块STM32F103C8T6 vs NXP LPC55S69对比项STM32F103C8T6NXP LPC55S69内核/主频Cortex-M372MHzCortex-M33150MHz存储64KB Flash 20KB SRAM1MB Flash 320KB SRAM功耗中低功耗表现优异性能强但功耗与成本更高生态开发资料广泛性价比高适合高性能场景成本较高本系统主要是 ADC 采样、GPIO 控制和串口通信等中等复杂度任务STM32F103C8T6 性能足够且成本优势明显。选择方案 1STM32F103C8T6。2.2 光敏检测模块GL5528 vs BH1750对比项GL5528 光敏电阻BH1750 数字光照传感器输出方式模拟电压AOUT 接 ADCI2C 数字输出精度高量程适应明暗范围宽适应性强内置自动增益、温度补偿成本/开发成本低原理简单价格较高系统只需判断光强是否低于阈值并比较两路相对强弱GL5528 完全能满足且模拟输出直连 ADC 开发简单。选择方案 1GL5528。2.3 红外检测模块红外对管 vs E3Z-D62对比项红外对管E3Z-D62 光电传感器检测距离近距离最远 1 米抗干扰能在灰尘油雾环境工作抗环境光干扰强成本/体积便宜、集成发射接收一体成本高、体积大路灯只需检测近处行人经过红外对管的性价比和安装便利性更合适。选择方案 1红外对管。2.4 火焰检测模块TEMT6000 vs ZPY16对比项TEMT6000 红外火焰传感器ZPY16 可见光火焰传感器检测原理检测火焰红外辐射检测火焰可见光谱稳定性高温环境表现稳定抗其他热源干扰响应快但需定期校准环境适应性强光下需遮光设计对火焰颜色亮度敏感路灯户外长期运行红外方案的高灵敏度与长期稳定性更有保障。选择方案 1TEMT6000。2.5 水滴检测模块WLD-01 vs DWS-04对比项WLD-01DWS-04检测精度微升级水滴检测可识别水滴大小和数量工作范围宽温湿度范围稳定工作响应快但检测范围有限成本性价比高接口标准化成本较高降雨判断只需检测水滴含量是否超限WLD-01 精度足够且经济实用。选择方案 1WLD-01。2.6 显示模块OLED12864 vs TFT ST7735对比项OLED12864TFT ST7735分辨率/色彩128×64 单色高分辨率彩色功耗自发光黑色区域不耗电依赖背光高亮内容功耗高接口I2C 两线SPI占用引脚多系统只显示简单文本数据OLED12864 功耗低、引脚占用少、成本更优。选择方案 1OLED12864。2.7 无线通信模块ESP8266 vs nRF905对比项ESP8266nRF905联网能力Wi-Fi 直连互联网433MHz 点对点无法联网传输速率最高 72Mbps速率较低通信距离依赖路由器可达几公里生态社区资源丰富一般系统要与手机 APP 交互并上云必须具备互联网接入能力。选择方案 1ESP8266。三、系统接线总表模块接口方式引脚连接光敏电阻 GL5528 ×2ADC 模拟输入AOUT→单片机 ADC 通道DOUT 不接雨滴传感器 WLD-01ADC 模拟输入AO→单片机 ADC 通道DO 不接红外对管GPIO 数字输入OUT→单片机数字输入引脚有人输出低电平火焰传感器 TEMT6000GPIO 数字输入OUT→单片机数字输入引脚有火焰输出高电平5V 供电OLED12864I2CSCL/SDA→单片机 I2C 引脚3.3V 供电ESP8266-01SUSART2115200bpsTXD→RX2RXD→TX2CH_PD 接 3.3VRST→PA4可控制复位步进电机太阳能追光GPIO驱动模块输入端接单片机 GPIO输出接电机舵机遮雨设备PWM信号线接单片机 PWM 输出引脚照明灯/应急灯/报警灯GPIO 输出经驱动电路接单片机 GPIO故障按键GPIO 输入一端接单片机 GPIO另一端接地主控电路部分8MHz 外部晶振接 OSC_IN/OSC_OUT 构成主时钟经 PLL 倍频提供系统时钟32.768kHz 晶振为 RTC 提供断电不丢失的时钟源。复位电路中按键接在 NRST 与 GND 之间10kΩ 上拉电阻把 NRST 拉到 VDD并联电容在按键按下时产生足够长的低电平脉冲完成可靠复位。四、系统软件设计4.1 主程序设计系统上电后依次完成 ADC、串口、I2C 初始化随后进入 while 主循环按以下逻辑持续运行while (1) { /* 1.数据采集两路光强、雨滴、火焰、红外人体信号 */ light1 Get_Lux_Avg(ADC_CH_LIGHT1); light2 Get_Lux_Avg(ADC_CH_LIGHT2); rain Get_Rain_Avg(ADC_CH_RAIN); flame GPIO_ReadInputDataBit(GPIO_FLAME); person GPIO_ReadInputDataBit(GPIO_IR); /* 2.本地显示并经 ESP8266 以 MQTT 上传云端 */ OLED_Show_All(light1, rain, flame); MQTT_Report(light1, rain, flame, person); /* 3.光控光强低于阈值自动开灯低亮度有人经过再调亮 */ if (light1 LIGHT_TH) LED_Dim_On(); if (light1 LIGHT_TH person) LED_Bright_On(); /* 4.太阳能追光哪路光强强步进电机就转向哪边 */ if (light1 light2) Motor_To(DIR_LIGHT1); else Motor_To(DIR_LIGHT2); /* 5.降雨超限舵机打开遮雨设备 */ if (rain RAIN_TH) Servo_Open_Cover(); /* 6.故障/火灾报警应急灯提示并上报 APP */ if (KEY_FAULT()) { Alarm_On(); MQTT_Send(FAULT); } if (flame) { Alarm_On(); MQTT_Send(FIRE); } /* 7.APP 下发调光指令识别后控制照明灯变亮/变暗 */ if (CMD_Received(CMD_BRIGHT)) LED_Bright_On(); if (CMD_Received(CMD_DIM)) LED_Dim_On(); }4.2 光敏检测子程序ADC 初始化将 GPIO 配置为模拟输入、设置分频因子、独立模式单通道单次转换启动后等待校准结束。读取时配置规则组通道与采样时间软件触发转换并通过标志位等待结束连续多次采样取平均值抑制噪声再基于 3.3V 参考电压和 12 位分辨率把均值换算为电压值和光强值。4.3 红外检测子程序红外对管 OUT 引脚接单片机数字输入。模块持续监测输出电平检测到人体时输出低电平0V单片机识别到电平变化即确认有人经过循环检测间隔在实时性与处理效率之间取得平衡实时跟踪人体出现与离开。4.4 火焰检测子程序TEMT6000 的 OUT 引脚配置为输入模式主循环中用GPIO_ReadPin()读取高电平表示检测到火焰立即点亮报警灯并向 APP 上传火灾信息低电平则继续监控。4.5 水滴检测子程序启用 ADC1 及 GPIO 时钟分频系数设为 6把 72MHz 主时钟降至 12MHz 以满足采样频率要求。GPIO 置模拟输入ADC 复位后配置为独立模式、单通道单次转换、软件手动触发、数据右对齐。采样结果为 0~4095 的整数多次采样取平均后换算为水滴含量超限即触发舵机动作。4.6 数据显示子程序先配置 I2C使能 I2C 与 GPIO 时钟SCL/SDA 设为开漏输出配置工作模式、时钟频率与从设备地址。OLED 初始化依次发送关显示命令0xAE、设置内存寻址模式0x20/0x10、对比度、扫描方向与显示时钟最后发开显示命令0xAFOLED_Fill填充背景、OLED_CLS清屏后调用字符/汉字显示函数在指定坐标完成数据展示。4.7 无线通信子程序串口 2 以 115200bps 与 ESP8266 通信复位引脚 PA4 配置为推挽输出先置高再拉低、等待 500ms 完成复位并确认就绪随后依次发送 AT 指令设置 STA 模式 →ATCWJAP连接 WiFi →ATCIPMUX关闭多路连接 →ATCIPSEND进入透传模式 →ATCIPSTART连接 TCP 服务器每步都检查缓冲区应答最终等待 ESP8266 获取 IP 地址后以 MQTT 协议收发数据。五、系统实现与测试5.1 硬件与软件调试焊接从主控模块开始确认电源、复位和时钟电路无误后逐一焊接各传感器、OLED 与 ESP8266上电先核对电压再逐个测试传感器。软件在 Keil 中分模块编写STLink 下载固件后利用断点、变量监视逐步验证 ADC 读取、控制逻辑与无线通信反复迭代直到系统稳定。5.2 功能测试测试项目测试方法测试结果数据检测遮挡/照射光敏电阻OLED 观察 ADC 值光强随环境准确变化数据可靠人体感应人员从红外对管前经过识别准确灯光及时调亮光控照明逐步调暗环境光照光强低于阈值时照明灯自动点亮火灾报警点燃易燃物模拟火焰TEMT6000 快速输出高电平应急灯亮并向 APP 推送故障报警按下故障按键报警灯点亮APP 收到故障信息太阳能追光遮挡一侧光敏电阻步进电机带动太阳能板转向光照更强一侧降雨保护向雨滴传感器喷水水滴含量超限后舵机打开遮雨设备远程控制APP 下发变亮/变暗指令照明灯及时响应光强、雨量数据实时刷新远程通信测试中重点验证了 ESP8266 的 Wi-Fi 连接稳定性AT 指令查询连接状态正常MQTT 上传数据稳定APP 端光照强度、雨量等信息实时更新远程开关灯与报警推送响应及时。六、总结这套路灯智能控制系统在 STM32F103C8T6 平台上把按需照明和主动安防结合到了一起光照传感器与红外对管配合实现天黑开灯、人来灯亮的分档照明策略避免了长明灯浪费火焰传感器与故障按键构成双重安全通道异常情况本地应急灯提示、云端 APP 同步告警雨滴传感器联动舵机遮雨、步进电机带动太阳能板追光进一步提升了户外运行的可靠性与能源自给能力。测试表明系统各项功能均按设计预期工作为城市公共照明的节能化、智能化管理提供了一套完整可复制的单片机解决方案。七、资料内容完整工程资料原理图、PCB、代码、元件清单八、资料获取方式
返回列表