基于单片机的幼儿安全监控报警系统设计
摘要:随着社会对幼儿安全关注度的不断提升,幼儿园、家庭等幼儿活动场景的安全监控需求日益迫切。传统幼儿监控方式存在响应滞后、监控不全面、无法实时预警等问题,难以有效保障幼儿的人身安全。本文设计了一套基于STM32F103C8T6单片机的幼儿安全监控报警系统,集成ESP32无线通讯模块、红外对管、火焰传感器、烟雾传感器、OLED显示模块、按键模块、继电器水泵、蜂鸣器及LED小灯等元器件,实现实时监控、入侵检测、紧急呼叫、远程监控与通知、火灾报警及自动灭火等核心功能。系统以STM32F103C8T6为核心控制器,通过红外对管检测入侵行为、火焰传感器与烟雾传感器联合监测火灾隐患、紧急按键接收幼儿求助信号;借助ESP32模块实现与手机端的无线通讯,完成远程监控与报警通知;通过OLED显示屏实时展示系统状态、监测数据及报警信息;当检测到火灾或入侵时,触发蜂鸣器与LED声光报警,火灾场景下还会通过继电器控制水泵自动灭火。经测试,系统运行稳定、监测精准、响应迅速,各项功能均达到设计目标,能够有效提升幼儿活动区域的安全防护水平,为幼儿安全提供可靠保障,具有较高的实用价值、推广前景与应用意义。
关键词:STM32F103C8T6;幼儿安全监控;入侵检测;火灾报警;远程监控;ESP32


1 绪论
1.1 研究背景与意义
幼儿是国家的未来与希望,幼儿安全是社会关注的焦点,也是幼儿园、家庭及社会的重要责任。幼儿年龄小、自我保护意识薄弱、好奇心强,在日常活动中容易出现意外情况,如陌生人入侵、火灾隐患、意外走失等,这些情况都可能对幼儿的人身安全造成严重威胁。当前,多数幼儿活动场所(如幼儿园、家庭活动室)的安全监控主要依赖人工值守或传统监控设备,人工值守存在疲劳疏忽、响应滞后等问题,传统监控设备仅能实现视频录制,无法实时检测异常情况、及时发出预警,也难以实现远程监控与快速响应,无法满足幼儿安全防护的多元化、智能化需求。
随着嵌入式技术、传感器技术、无线通讯技术的快速发展,智能化安全监控系统逐渐应用于各类安全防护场景,为幼儿安全监控提供了新的解决方案。基于单片机的智能监控报警系统具有体积小、成本低、运行稳定、响应迅速等优势,能够集成多种监测功能,实现异常情况的实时检测、自动报警与远程通知,有效弥补传统监控方式的不足。
基于此,研发一套基于STM32F103C8T6单片机的幼儿安全监控报警系统,整合入侵检测、火灾报警、紧急呼叫、远程监控等功能,能够实时监测幼儿活动区域的安全状况,及时发现异常并发出预警,同时实现远程监控与通知,为教师、监护人提供便捷的安全管理手段,有效降低幼儿安全风险,保障幼儿人身安全,推动幼儿安全防护领域的智能化发展,具有重要的现实意义、实用价值与应用前景。
1.2 国内外研究现状
国外对幼儿安全监控系统的研究起步较早,技术相对成熟,形成了较为完善的产品体系与解决方案。欧美、日本等发达国家的幼儿安全监控产品,普遍集成了视频监控、入侵检测、环境监测、紧急呼叫等功能,部分产品还支持人脸识别、行为分析等高级功能,能够精准识别陌生人入侵、幼儿异常行为等情况,同时通过无线通讯实现远程监控与报警通知,适配幼儿园、家庭等多种场景。此类产品智能化程度高、稳定性强,但结构复杂、研发与生产成本高昂,价格昂贵,难以在发展中国家广泛普及;同时,其设计理念与功能适配性更贴合国外幼儿教育与监护模式,与我国幼儿安全防护的实际需求存在一定差异。
国内近年来也逐步重视幼儿安全监控领域的研发,相关产品与研究不断增多。现有幼儿安全监控产品主要分为两类:一类是高端产品,集成视频监控、远程通知、入侵检测等功能,主要应用于大型幼儿园,但价格较高,中小幼儿园及普通家庭难以承受;另一类是中低端产品,多仅实现单一的监控或报警功能,缺乏多参数联合监测、自动灭火、远程实时监控等功能,智能化程度不足,且响应速度较慢,难以满足幼儿安全防护的全面需求。此外,现有部分产品存在传感器监测精度低、报警误报率高、远程通讯不稳定等问题,影响使用体验与防护效果。因此,研发一套功能完善、成本低廉、操作便捷、运行稳定的基于STM32的幼儿安全监控报警系统,填补现有中低端产品的不足,适配幼儿园、家庭等多种幼儿活动场景,具有重要的研究价值与实用意义。
1.3 研究内容与目标
1.3.1 研究内容
本文围绕幼儿安全监控的核心需求,结合给定的元器件与功能要求,设计并实现一套基于STM32F103C8T6单片机的幼儿安全监控报警系统,具体研究内容如下:
- 硬件系统设计:选取STM32F103C8T6作为核心控制器,搭配ESP32无线通讯模块、红外对管、火焰传感器、烟雾传感器、OLED显示模块、按键模块、继电器+水泵、蜂鸣器+LED小灯、电源模块等,设计各功能模块的硬件电路,完成电路的设计、焊接与调试,确保各模块连接可靠、运行稳定,满足系统各项功能需求。
- 软件系统设计:基于Keil µVision5开发环境,采用C语言进行模块化编程,实现实时监控、入侵检测、紧急呼叫、火灾报警、自动灭火、远程监控与通知、OLED实时显示等核心功能,优化程序逻辑,降低报警误报率,提升系统响应速度与监测精度。
- 核心功能实现:设计入侵检测算法,通过红外对管检测陌生人或动物进入预设安全区域,触发声光报警并发送远程通知;设计火灾监测逻辑,通过火焰传感器与烟雾传感器联合检测,当同时检测到着火点且烟雾浓度超标时,触发声光报警、启动水泵自动灭火并发送远程火灾通知;设计紧急呼叫功能,幼儿按下紧急按键后,立即触发声光报警并向教师、监护人发送求助通知;通过ESP32模块实现手机端远程监控,实时查看系统状态与监测数据。
- 显示与报警功能设计:通过OLED液晶显示屏,实时展示系统工作状态、监测数据(烟雾浓度、是否检测到火焰、是否有入侵)、报警信息及远程连接状态;设计蜂鸣器与LED小灯的声光报警逻辑,不同异常情况对应不同的报警模式,确保报警清晰、醒目。
- 系统调试与测试:对硬件电路进行导通测试、故障排查,对软件程序进行编译、调试,对系统的各项功能、监测精度、响应速度、稳定性、远程通讯效果进行全面测试,验证系统是否达到设计目标,针对测试中发现的问题进行优化改进。
1.3.2 研究目标
本研究的核心目标是设计一套满足幼儿安全防护需求的智能监控报警系统,结合给定的元器件与功能要求,具体目标如下:
- 实现实时监控功能:实时监测幼儿活动区域的状态,通过各类传感器采集相关数据,为入侵检测、火灾报警提供可靠依据,确保对异常情况的实时感知。
- 实现精准入侵检测:通过红外对管设置安全区域,当有陌生人或动物进入该区域时,系统能快速检测并立即触发声光报警,同时向教师、监护人发送远程入侵通知,误报率控制在合理范围内。
- 实现紧急呼叫功能:幼儿遇到紧急情况时,按下紧急呼叫按键,系统立即触发声光报警,并向预设的教师、监护人手机发送求助通知,确保求助信息及时传达。
- 实现远程监控与通知:通过ESP32模块与手机端建立无线通讯,教师、监护人可通过手机远程查看系统状态、监测数据,接收各类报警通知,实现远程实时监控与响应。
- 实现火灾报警与自动灭火:火焰传感器与烟雾传感器联合工作,当检测到着火点且烟雾浓度高于预设阈值时,系统立即触发声光报警,通过继电器控制水泵启动,自动抽水灭火,并向教师、监护人发送火灾紧急通知。
- 实现清晰显示功能:通过OLED显示屏,实时、清晰地展示系统工作状态、监测数据、报警信息及远程连接状态,便于现场人员查看系统运行情况。
- 确保系统稳定运行:优化硬件电路与软件程序,确保系统连续运行无故障,传感器监测精准、报警响应迅速、远程通讯稳定、自动灭火功能可靠,操作便捷,适合幼儿活动场景使用。
1.4 论文结构安排
本文共分为6章,具体结构安排如下:
- 第1章 绪论:阐述研究背景与意义、国内外研究现状、研究内容与目标及论文结构安排,明确本研究的核心方向与价值。
- 第2章 系统总体设计:确定系统的设计原则、总体架构,划分系统功能模块,结合给定的元器件选择核心元器件并进行方案选型,为系统硬件与软件设计奠定基础。
- 第3章 系统硬件设计:详细设计各功能模块的硬件电路,包括核心控制模块、传感器监测模块、无线通讯模块、显示模块、报警模块、执行模块、按键模块、电源模块,绘制电路原理图与系统总电路图。
- 第4章 系统软件设计:基于Keil开发环境,进行软件总体设计,编写各功能模块的程序代码,绘制程序流程图,实现实时监测、入侵检测、紧急呼叫、火灾报警、自动灭火、远程通讯、OLED显示等功能。
- 第5章 系统调试与测试:对硬件电路与软件程序进行调试,对系统各项功能、监测精度、响应速度、稳定性、远程通讯效果进行测试,分析测试结果,验证系统是否达到设计目标。
- 第6章 总结与展望:总结本文的研究成果,分析系统存在的不足,提出未来的改进方向与发展展望。
2 系统总体设计
2.1 设计原则
结合幼儿活动场景的特殊性(安全、便捷、可靠、易操作)与给定的功能要求,本系统设计遵循以下原则:
- 安全性原则:系统核心目标是保障幼儿安全,硬件选型与电路设计需符合安全标准,避免电路漏电、元器件损坏等安全隐患;报警响应迅速,确保异常情况能及时被发现并处理,最大限度降低幼儿安全风险。
- 可靠性原则:选用成熟、稳定的元器件与技术,确保系统长期稳定运行,传感器监测精准、报警无误报或误报率极低,远程通讯稳定,自动灭火功能可靠,避免因系统故障影响幼儿安全防护。
- 便捷性原则:操作流程简洁直观,紧急呼叫按键设计简单,便于幼儿在紧急情况下快速操作;OLED显示界面清晰、数据直观,便于现场人员查看;手机端远程监控操作简便,无需专业操作知识,适合教师、监护人使用。
- 低成本原则:在满足核心功能需求的前提下,选用性价比高的元器件,简化硬件电路设计,降低系统整体成本,便于幼儿园、普通家庭大规模推广应用。
- 可扩展性原则:系统采用模块化设计,预留功能扩展接口,便于后续新增功能(如视频监控、人脸识别、体温监测等),提升系统的适用性与可持续性,适配不同场景的幼儿安全监控需求。
2.2 系统总体架构
本系统以STM32F103C8T6单片机为核心,采用模块化设计思路,结合给定的元器件与功能要求,将系统划分为8个功能模块,分别为核心控制模块、传感器监测模块、ESP32无线通讯模块、OLED显示模块、报警模块、执行模块、按键模块、电源模块。系统总体架构如图2-1所示。
核心控制模块是系统的核心,负责接收各模块的输入信号(传感器数据、按键指令),进行数据处理、逻辑判断,控制各模块的工作;传感器监测模块由红外对管、火焰传感器、烟雾传感器组成,负责采集入侵信号、火灾相关数据,传输至核心控制器;ESP32无线通讯模块负责实现系统与手机端的无线通讯,完成数据传输、报警通知与远程控制指令接收;OLED显示模块负责实时展示系统状态、监测数据、报警信息及远程连接状态;报警模块由蜂鸣器与LED小灯组成,负责在异常情况下触发声光报警;执行模块由继电器与水泵组成,负责在火灾发生时,接收核心控制器指令,启动水泵自动灭火;按键模块负责接收紧急呼叫指令与系统参数设置指令;电源模块为整个系统提供稳定的供电。
图2-1 系统总体架构图
2.3 核心元器件选型与方案论证
系统元器件的选型严格遵循给定的元器件清单与设计需求,结合设计原则,对核心元器件进行选型与方案论证如下,确保元器件适配性强、性能稳定、性价比高,满足系统各项功能需求:
2.3.1 核心控制器选型
选用STM32F103C8T6最小系统板作为核心控制器。STM32F103C8T6是基于ARM Cortex-M3内核的32位微控制器,最高主频可达72MHz,运算性能强劲,能够快速处理多传感器采集的数据与各类控制指令;内置64KB Flash、20KB RAM,可满足系统程序存储与数据缓存需求;外设资源丰富,包含GPIO、I2C、UART、ADC等,可直接适配各类传感器、显示模块、无线通讯模块与执行机构,开发生态完善,支持标准库与HAL库,大幅降低开发难度;同时具备低功耗模式,适配系统长期运行需求,且成本适中,性价比高,完全满足本系统多模块协同工作、实时数据处理与精准控制的核心需求。
2.3.2 传感器监测模块选型
按照给定的元器件清单与功能要求,选用三类传感器,确保监测功能达标:
- 入侵检测传感器:选用红外对管。该传感器结构简单、价格低廉、响应迅速,分为发射端与接收端,可通过设置红外对管的安装位置划定安全区域;当有物体(陌生人、动物)遮挡红外光线时,传感器输出信号发生变化,STM32接收信号后判断为入侵,触发报警,适配幼儿活动区域的入侵检测需求,且易集成、适配性强。
- 火焰传感器:选用模拟量火焰传感器。该传感器对火焰的红外光具有较高的灵敏度,测量范围广,输出模拟信号,可通过STM32的ADC接口采集信号,能够精准检测着火点的存在;当检测到火焰时,输出信号强度发生明显变化,为火灾报警提供可靠依据,且成本低廉、性能稳定,适合幼儿活动场景使用。
- 烟雾传感器:选用MQ-2烟雾传感器。该传感器对烟雾、可燃气体具有较高的灵敏度,测量范围广,输出模拟信号,可通过STM32的ADC接口采集信号并转换为烟雾浓度数据;当烟雾浓度高于预设阈值时,输出信号发生变化,与火焰传感器联合使用,可提高火灾检测的准确性,避免误报,适配火灾报警需求,且成本低廉、易集成。
2.3.3 无线通讯模块选型
选用给定的ESP32无线通讯模块。ESP32模块集成Wi-Fi与蓝牙双重通讯功能,功耗低、兼容性强,采用UART通信协议与STM32对接,接口简单,程序控制便捷;可实现系统与手机端的双向数据传输,支持远程查看系统状态、监测数据,接收各类报警通知,同时可接收手机端下发的控制指令(如手动启动/停止水泵、关闭报警等);传输距离远、通讯稳定,完全适配幼儿活动场景的远程监控与通知需求,且符合给定的元器件要求。
2.3.4 显示模块选型
选用给定的OLED液晶显示屏(4针IIC协议)。OLED显示屏采用自发光技术,无需背光,功耗低;可视角度宽、显示清晰,字体可调节,支持图形与字符显示,可实现系统状态、监测数据(烟雾浓度、火焰检测状态、入侵状态)、报警信息、远程连接状态的分区显示,便于现场人员快速查看;4针IIC接口简化了电路设计,与STM32的I2C接口对接便捷,体积小巧、易集成,且成本适中,完全满足本系统的显示需求。
2.3.5 报警模块选型
按照给定的元器件清单,报警模块由蜂鸣器与LED小灯组成。蜂鸣器选用有源蜂鸣器,工作电压为5V,与系统电源适配,无需额外驱动电路,可通过STM32的GPIO引脚直接控制,发声清晰、音量可调,适合现场声光报警;LED小灯选用红色高亮LED,工作电压为3.3V,串联限流电阻后与STM32的GPIO引脚连接,亮度高、醒目,与蜂鸣器配合,实现不同异常情况的声光报警(如入侵与火灾采用不同的报警频率),确保报警效果明显,适配幼儿活动场景的报警需求。
2.3.6 执行模块选型
按照给定的元器件清单,执行模块由继电器与水泵组成。继电器选用5V单路继电器模块,可通过STM32的GPIO引脚控制其吸合与断开,用于控制水泵的启动与停止;水泵选用小型直流水泵,工作电压为5V,与系统电源适配,流量适中,适合小型幼儿活动区域的灭火需求;继电器模块可实现弱电控制强电,保护核心控制器,同时确保水泵启动可靠,完全满足火灾场景下自动灭火的功能需求。
2.3.7 按键模块选型
选用独立按键,共设置2个按键,分别为紧急呼叫键与系统复位键。按键结构简单、价格低廉,一端接地,另一端通过上拉电阻与STM32的GPIO引脚相连,程序控制简单,能够精准接收用户的操作指令;紧急呼叫键设计为大型按键,便于幼儿在紧急情况下快速按下,复位键用于系统出现异常时重启系统,满足系统的手动操作与异常恢复需求。
2.3.8 电源模块选型
系统采用5V直流电源(适配器)供电,选用AMS1117-3.3V稳压芯片,将5V电压转换为稳定的3.3V,为STM32、OLED显示屏、传感器、ESP32模块等提供供电;蜂鸣器、继电器、水泵直接采用5V电源供电,确保设备可靠工作。电源电路中加入电容滤波,减少电压波动,确保电源稳定;同时加入电源指示LED,便于判断系统供电状态;加入保险丝,防止电路短路损坏元器件,保障系统安全运行,适配幼儿活动场景的安全要求。
3 系统硬件设计
系统硬件设计以STM32F103C8T6为核心,严格按照给定的元器件清单与功能要求,按照各功能模块的划分,分别设计硬件电路,确保各模块之间连接可靠、数据传输稳定,满足系统各项功能需求。本章详细介绍各功能模块的硬件电路设计原理与连接方式。
3.1 核心控制模块电路设计
核心控制模块以STM32F103C8T6最小系统板为核心,主要包括电源电路、复位电路、晶振电路,为整个系统提供稳定的工作环境,是系统正常运行的基础。
3.1.1 电源电路
STM32F103C8T6的工作电压为3.3V,系统采用5V直流电源(适配器)供电。电源电路中,通过AMS1117-3.3V稳压芯片将5V输入电压转换为稳定的3.3V,为STM32及OLED、传感器、ESP32模块等提供供电;蜂鸣器、继电器、水泵直接接入5V电源,确保其正常工作。电源电路中加入0.1μF陶瓷电容与10μF电解电容进行滤波,减少电压波动;加入电源指示LED(串联220Ω限流电阻),便于判断系统是否正常供电;加入保险丝,防止电路短路损坏元器件。电源电路如图3-1所示。
3.1.2 复位电路
系统采用手动复位与上电复位相结合的方式,复位电路由复位按键、10KΩ上拉电阻、1μF电容组成。上电时,电容充电,产生复位信号,实现系统上电自动复位;手动按下复位按键时,电容放电,触发复位,实现系统重启。复位电路确保系统在出现异常时,可快速恢复正常工作,电路设计简单、可靠。复位电路如图3-2所示。
3.1.3 晶振电路
STM32F103C8T6采用外部晶振电路,选用8MHz晶振,通过两个18pF电容与单片机的晶振引脚(OSC_IN、OSC_OUT)连接,为单片机提供稳定的时钟信号。晶振电路经过单片机内部倍频后,可输出72MHz的系统时钟,满足系统数据采集、处理与控制的实时性需求。晶振电路如图3-3所示。
3.2 传感器监测模块电路设计
传感器监测模块由红外对管、火焰传感器、烟雾传感器组成,负责采集入侵信号、火灾相关数据,传输至核心控制器进行处理。
3.2.1 红外对管电路
红外对管分为发射端与接收端,采用串联分压电路设计。发射端VCC引脚接入5V电源,GND引脚接地,串联220Ω限流电阻,确保发射端正常工作;接收端VCC引脚接入3.3V电源,GND引脚接地,信号输出引脚与STM32的PA0引脚相连,串联1KΩ限流电阻。当无物体遮挡时,接收端接收到红外光线,输出高电平;当有物体遮挡时,接收端无法接收到红外光线,输出低电平,STM32通过PA0引脚检测电平变化,判断是否存在入侵。电路中加入0.1μF滤波电容,减少信号干扰,确保检测稳定。红外对管电路如图3-4所示。
3.2.2 火焰传感器电路
火焰传感器输出模拟信号,VCC引脚接入3.3V电源,GND引脚接地,AO引脚(模拟输出引脚)与STM32的PA1引脚(ADC接口)相连,DO引脚(数字输出引脚)悬空(本系统采用模拟信号采集,提高测量精度)。当检测到火焰时,传感器输出的模拟信号强度随火焰距离变化,STM32通过PA1引脚采集模拟信号,经ADC转换为数字信号,判断是否存在着火点。电路中加入0.1μF滤波电容,减少信号干扰,确保采集数据稳定。火焰传感器电路如图3-5所示。
3.2.3 烟雾传感器电路
烟雾传感器(MQ-2)输出模拟信号,VCC引脚接入5V电源,GND引脚接地,AO引脚(模拟输出引脚)与STM32的PA2引脚(ADC接口)相连,DO引脚(数字输出引脚)悬空。传感器采集的烟雾浓度模拟信号通过PA2引脚传输至STM32,经ADC转换为数字信号,得到烟雾浓度值;当烟雾浓度高于预设阈值时,STM32判断为火灾隐患,触发相关报警与执行操作。电路中加入0.1μF滤波电容,减少信号干扰,确保采集数据准确。烟雾传感器电路如图3-6所示。
3.3 ESP32无线通讯模块电路设计
ESP32无线通讯模块采用UART通信协议与STM32对接,其VCC引脚接入3.3V电源(避免电压过高损坏模块),GND引脚接地,TXD引脚(发送端)与STM32的PA5引脚(RXD)相连,RXD引脚(接收端)与STM32的PA6引脚(TXD)相连。STM32通过UART通信协议向ESP32模块发送系统状态、监测数据、报警信息等,ESP32模块通过Wi-Fi将数据传输至手机端;同时,ESP32模块接收手机端下发的控制指令,传输至STM32,执行对应操作。电路中加入0.1μF滤波电容,减少信号干扰,确保通讯稳定;加入1KΩ限流电阻,保护模块与核心控制器。ESP32无线通讯模块电路如图3-7所示。
3.4 OLED显示模块电路设计
本系统选用OLED液晶显示屏(4针IIC协议),其工作电压为3.3V,与STM32的供电电压一致,无需额外的电平转换电路。OLED屏幕的VCC引脚接入3.3V电源,GND引脚接地,SDA引脚(数据线)与STM32的PB7引脚相连,SCL引脚(时钟线)与STM32的PB6引脚相连。STM32通过I2C通信协议向OLED发送显示指令与数据,控制OLED屏幕分区显示系统状态、监测数据、报警信息及远程连接状态。电路中加入1KΩ限流电阻,确保数据传输稳定,减少干扰。OLED显示电路如图3-8所示。
3.5 报警模块电路设计
报警模块由蜂鸣器与LED小灯组成,电路设计如下:蜂鸣器VCC引脚接入5V电源,GND引脚通过STM32的PB8引脚接地,串联220Ω限流电阻,STM32通过控制PB8引脚的电平变化(高电平断开、低电平导通),控制蜂鸣器的启停;LED小灯(红色)阳极通过220Ω限流电阻接入3.3V电源,阴极与STM32的PB9引脚相连,STM32通过控制PB9引脚的电平变化(低电平点亮、高电平熄灭),控制LED小灯的亮灭。蜂鸣器与LED小灯配合,不同异常情况采用不同的报警频率(如入侵时蜂鸣器间歇发声、LED间歇闪烁;火灾时蜂鸣器持续发声、LED持续点亮),确保报警清晰、醒目。报警模块电路如图3-9所示。
3.6 执行模块电路设计
执行模块由继电器与水泵组成,负责火灾发生时自动灭火,电路设计如下:继电器模块VCC引脚接入5V电源,GND引脚接地,IN引脚(控制引脚)与STM32的PB10引脚相连;水泵VCC引脚接入5V电源,GND引脚接地,水泵正极通过继电器的常开端连接至电源,继电器的公共端连接至水泵正极。当STM32检测到火灾时,控制PB10引脚输出高电平,触发继电器吸合,接通水泵电源,水泵启动抽水灭火;火灾解除后,控制PB10引脚输出低电平,继电器断开,水泵停止工作。电路中加入续流二极管,保护继电器与核心控制器,避免启停时产生的反向电动势损坏元器件;加入LED指示灯,显示继电器的工作状态,便于观察。执行模块电路如图3-10所示。
3.7 按键模块电路设计
系统设置2个独立按键,分别为紧急呼叫键与复位键。按键一端接地,另一端通过10KΩ上拉电阻分别与STM32的PA7、PA8引脚相连。紧急呼叫键(PA7引脚):当幼儿按下按键时,PA7引脚电平变为低电平,STM32检测到电平变化后,触发声光报警并发送远程求助通知;复位键(PA8引脚):按下按键时,PA8引脚电平变为低电平,触发系统复位,恢复初始设置。电路中每个按键两端并联0.1μF消抖电容,消除机械按键的抖动干扰,确保按键识别精准、无误触发。按键模块电路如图3-11所示。
3.8 系统总电路图
将各功能模块电路整合,得到系统总电路图,各模块通过STM32的GPIO、I2C、UART、ADC等外设接口连接,实现实时监测、入侵检测、紧急呼叫、火灾报警、自动灭火、远程通讯、OLED显示等功能。系统总电路图如图3-12所示,各模块连接可靠,电路布局合理,便于焊接与调试,同时考虑了系统的安全性与稳定性,严格贴合给定的元器件清单与功能要求。
4 系统软件设计
系统软件设计基于Keil µVision5开发环境,采用C语言进行模块化编程,遵循“初始化-数据采集-数据处理-功能执行-显示反馈-通讯交互”的逻辑,实现系统各项核心功能。本章详细介绍软件总体设计、各功能模块程序设计及程序流程图。
4.1 软件开发环境与编程语言
4.1.1 开发环境
本系统软件开发选用Keil µVision5集成开发环境,该环境是面向ARM架构微控制器的专业开发工具,集成了代码编辑、项目管理、编译构建、在线调试等全流程功能,支持STM32F1系列芯片的开发。Keil µVision5内置STM32F103C8T6的器件库,可快速配置芯片时钟、外设引脚等参数,大幅提升开发效率;同时支持ST-Link仿真器在线调试,便于排查程序逻辑错误,优化程序性能。
4.1.2 编程语言
系统硬件程序选用C语言作为编程语言,C语言具备底层硬件访问能力,可直接操控STM32的寄存器,适配传感器采集、显示控制、报警控制、水泵驱动、无线通讯等底层操作;同时C语言生态成熟,开源资源丰富,可复用各类模块的驱动程序、通信协议代码(如I2C、UART、ADC),大幅降低开发难度;模块化编程特性便于程序的维护与功能扩展,符合系统的设计需求。
4.2 软件总体设计
系统软件采用模块化设计,将各功能模块拆分为独立的子程序(如初始化子程序、传感器采集子程序、入侵检测子程序、火灾报警子程序、紧急呼叫子程序、ESP32通讯子程序、OLED显示子程序、执行子程序等),由主程序统一调度,确保程序逻辑清晰、结构合理、易维护。软件总体流程如下:
- 系统上电后,首先进行系统初始化,包括STM32外设初始化(GPIO、I2C、UART、ADC)、OLED显示初始化、各传感器初始化、ESP32无线通讯模块初始化、报警模块初始化、执行模块初始化、按键初始化及系统参数初始化(如烟雾浓度阈值、入侵检测灵敏度、报警模式、手机端通讯地址等)。
- 初始化完成后,系统进入主循环,首先通过传感器监测模块采集红外对管信号、火焰传感器信号、烟雾传感器信号,将采集到的模拟信号转换为数字信号并进行滤波处理,确保数据准确。
- 数据处理完成后,通过OLED显示屏实时显示系统工作状态(正常/报警)、监测数据(烟雾浓度、火焰检测状态、入侵状态)、远程连接状态(已连接/未连接);同时将系统状态、监测数据通过ESP32模块传输至手机端,供教师、监护人远程查看。
- 检测按键输入,若检测到紧急呼叫键按下,立即触发声光报警(蜂鸣器发声、LED点亮),通过ESP32模块向手机端发送求助通知(“幼儿紧急求助,请及时处理”);若检测到复位键按下,系统重启并恢复初始设置。
- 进行入侵检测与火灾检测逻辑判断:
- 入侵检测:若红外对管检测到遮挡信号(低电平),且持续时间超过预设阈值(避免误报),判断为入侵,触发声光报警(间歇模式),通过ESP32模块向手机端发送入侵通知(“有陌生人/动物入侵,请及时查看”),直至遮挡信号消失,停止报警并发送“入侵解除”通知。
- 火灾检测:若火焰传感器检测到火焰信号(模拟信号超过预设阈值)且烟雾传感器检测到烟雾浓度超过预设阈值,判断为火灾,立即触发声光报警(持续模式),通过ESP32模块向手机端发送火灾通知(“检测到火灾,已启动自动灭火”),同时控制继电器吸合,启动水泵自动灭火;当火焰信号与烟雾浓度均降至阈值以下时,停止报警、关闭水泵,并发送“火灾解除”通知。
- 检测ESP32远程通讯状态,若与手机端正常连接,实时接收手机端下发的控制指令(如手动启动/停止水泵、关闭报警等),解析指令内容并执行对应操作,同时向手机端反馈操作结果;若通讯中断,OLED屏幕显示“远程未连接”,系统继续执行本地监测与报警功能,待重新连接后恢复远程通讯。
系统软件总体流程图如图4-1所示。
4.3 各功能模块程序设计
4.3.1 系统初始化程序设计
系统初始化程序是系统正常工作的基础,主要包括STM32外设初始化与各模块初始化,具体如下:
- GPIO初始化:配置各模块的GPIO引脚,设置引脚为输入或输出模式,如按键引脚设为输入模式,OLED、报警模块、执行模块、红外对管发射端的引脚设为输出模式;配置I2C(OLED)、UART(ESP32)、ADC(火焰传感器、烟雾传感器)通信引脚的工作模式。
- ADC初始化:配置STM32的ADC接口,设置采样率与转换模式,用于采集火焰传感器、烟雾传感器的模拟信号,将其转换为数字信号。
- 传感器初始化:初始化红外对管、火焰传感器、烟雾传感器,确保各传感器正常工作,能够准确采集数据;设置红外对管的检测灵敏度、火焰传感器与烟雾传感器的阈值参数。
- OLED初始化:配置OLED屏幕的显示参数(如分辨率、显示模式),清除屏幕残留数据,初始化显示界面,显示系统名称、当前状态(正常)、监测数据初始值、远程连接状态(未连接)。
- ESP32模块初始化:配置ESP32模块的工作模式(Wi-Fi连接模式),设置Wi-Fi账号密码、手机端通讯地址、波特率(9600bps),初始化UART通信,确保ESP32模块能正常与手机端建立连接、通讯。
- 报警模块初始化:初始化蜂鸣器与LED小灯,设置不同异常情况的报警频率,确保报警模块能准确响应控制指令;初始状态下,蜂鸣器与LED小灯均处于关闭状态。
- 执行模块初始化:初始化继电器与水泵,设置继电器初始状态为断开,水泵初始状态为停止,确保执行模块能正常响应控制指令。
- 系统参数初始化:设置各项参数的默认值,包括烟雾浓度预警阈值(如500ppm)、火焰传感器检测阈值、红外对管入侵判定时间(如1秒)、报警模式参数、手机端通讯地址等。
4.3.2 传感器采集程序设计
传感器采集程序负责采集各类监测数据,进行数据滤波处理,确保数据准确可靠,具体逻辑如下:
- 红外对管信号采集:通过STM32的PA0引脚采集红外对管接收端的电平信号,持续采集5次,取平均值,判断信号是否稳定(低电平为有遮挡,高电平为无遮挡),避免因瞬时遮挡(如幼儿挥手)导致的误报。
- 火焰传感器信号采集:通过STM32的PA1引脚(ADC接口)采集火焰传感器的模拟信号,经ADC转换为数字信号,进行多次采样取平均值,滤波处理,去除干扰信号,根据预设阈值判断是否检测到火焰。
- 烟雾传感器信号采集:通过STM32的PA2引脚(ADC接口)采集烟雾传感器的模拟信号,经ADC转换为数字信号,根据传感器的校准曲线将数字信号转换为烟雾浓度值(ppm),进行多次采样取平均值,滤波处理,减少信号干扰,确保采集数据准确。
传感器采集程序流程图如图4-2所示。
4.3.3 入侵检测程序设计
入侵检测程序负责通过红外对管检测入侵行为,触发报警与远程通知,具体逻辑如下:
- 实时读取红外对管采集的电平信号,若检测到低电平(有遮挡),开始计时;若低电平持续时间超过预设阈值(如1秒),判断为入侵,设置入侵标志位为1,触发声光报警(蜂鸣器间歇发声、LED间歇闪烁)。
- 通过ESP32模块向手机端发送入侵通知,内容为“有陌生人/动物入侵,请及时查看”,同时在OLED屏幕显示“入侵报警”提示及入侵持续时间。
- 持续监测红外对管信号,若检测到高电平(遮挡消失),停止计时,清除入侵标志位,停止声光报警,通过ESP32模块向手机端发送“入侵解除”通知,OLED屏幕恢复正常显示。
- 若检测到低电平但持续时间未超过阈值,判断为瞬时遮挡,不触发报警,仅记录信号变化,确保检测的准确性,降低误报率。
入侵检测程序流程图如图4-3所示。
4.3.4 火灾报警与自动灭火程序设计
火灾报警与自动灭火程序负责通过火焰传感器与烟雾传感器联合检测火灾,触发报警、自动灭火与远程通知,具体逻辑如下:
- 实时读取火焰传感器与烟雾传感器的采集数据,对比预设阈值,若火焰传感器信号超过阈值(检测到火焰)且烟雾浓度超过阈值(烟雾超标),判断为火灾,设置火灾标志位为1,触发声光报警(蜂鸣器持续发声、LED持续点亮)。
- 通过ESP32模块向手机端发送火灾通知,内容为“检测到火灾,已启动自动灭火,请及时处理”,同时在OLED屏幕显示“火灾报警”提示、烟雾浓度值及火焰检测状态。
- 控制STM32的PB10引脚输出高电平,触发继电器吸合,启动水泵自动抽水灭火,同时记录灭火启动时间,在OLED屏幕显示“水泵已启动”。
- 持续监测火焰传感器与烟雾传感器数据,若两者数据均降至阈值以下,判断为火灾解除,清除火灾标志位,停止声光报警,控制PB10引脚输出低电平,继电器断开,水泵停止工作;通过ESP32模块向手机端发送“火灾解除,水泵已停止”通知,OLED屏幕恢复正常显示。
- 若仅检测到火焰或仅检测到烟雾超标,判断为异常但非火灾,不启动自动灭火,仅在OLED屏幕显示对应异常提示,同时向手机端发送“异常提醒(非火灾)”,避免误触发灭火功能。
火灾报警与自动灭火程序流程图如图4-4所示。
4.3.5 紧急呼叫程序设计
紧急呼叫程序负责接收幼儿的紧急呼叫指令,触发报警与远程求助通知,具体逻辑如下:
- 实时检测紧急呼叫按键的输入信号,若检测到按键按下(PA7引脚低电平),设置紧急呼叫标志位为1,立即触发声光报警(蜂鸣器持续发声、LED持续点亮),与火灾报警区分开(可采用不同的蜂鸣频率)。
- 通过ESP32模块向手机端发送紧急求助通知,内容为“幼儿紧急求助,请及时处理”,同时在OLED屏幕显示“紧急呼叫”提示,持续闪烁。
- 若检测到复位键按下或手机端下发“取消报警”指令,清除紧急呼叫标志位,停止声光报警,通过ESP32模块向手机端发送“求助已处理”通知,OLED屏幕恢复正常显示。
- 若紧急呼叫按键持续按下,系统持续发送求助通知,每30秒发送一次,确保教师、监护人能及时收到求助信息。
4.3.6 ESP32无线通讯程序设计
ESP32无线通讯程序负责实现系统与手机端的双向通讯,完成数据远程查看与控制指令下发,具体逻辑如下:
- 通讯连接:系统初始化后,ESP32模块自动连接预设的Wi-Fi网络,尝试与手机端建立通讯连接;连接成功后,ESP32向STM32发送“连接成功”信号,STM32更新OLED显示的远程连接状态为“已连接”,同时向手机端发送系统初始状态信息(正常/异常、监测数据、报警状态)。
- 数据发送:系统状态、监测数据(烟雾浓度、火焰检测状态、入侵状态)每隔0.5秒通过UART通信向ESP32模块发送一次,报警状态变化时,立即向ESP32模块发送更新信息,由ESP32模块转发至手机端,确保手机端能实时查看系统状态。
- 指令接收:STM32实时接收ESP32模块传输的手机端控制指令,解析指令内容(如“手动启动水泵”“手动关闭报警”“设置烟雾阈值”等),执行对应操作,并向ESP32模块发送操作结果,由ESP32模块反馈至手机端;若指令解析失败,向手机端发送“指令错误,请重新发送”提示。
- 通讯异常处理:若Wi-Fi断开或手机端通讯中断,ESP32向STM32发送“连接失败”信号,STM32更新OLED显示的远程连接状态为“未连接”,系统继续执行本地监测与报警功能;待Wi-Fi重新连接或手机端重新配对后,恢复远程通讯,并向手机端发送“通讯已恢复”提示。
ESP32无线通讯程序流程图如图4-5所示。
4.3.7 OLED显示程序设计
OLED显示程序负责将系统状态、监测数据、报警信息等实时显示在屏幕上,采用分区显示方式,界面简洁、数据直观,便于现场人员查看,具体设计如下:
- 屏幕分区:将OLED12864屏幕分为5个区域,第一区域显示系统名称(“幼儿安全监控报警系统”);第二区域显示系统状态(“状态:正常/入侵报警/火灾报警/紧急呼叫”);第三区域显示监测数据(“烟雾:XXXppm 火焰:有/无”);第四区域显示入侵状态(“入侵:有/无”);第五区域显示远程连接状态(“远程:已连接/未连接”)。
- 显示更新:监测数据每隔0.5秒更新一次,系统状态、入侵状态、远程连接状态变化时,同步更新对应区域的显示内容;报警状态下,对应区域采用高亮显示,同时闪烁提示,确保醒目。
- 显示控制:字体选用大号字体,颜色清晰,烟雾浓度保留一位小数,确保用户能快速读取信息;报警提示采用红色字体,正常状态采用绿色字体,便于区分系统状态。
4.3.8 执行模块程序设计
执行模块程序负责控制继电器与水泵的工作,实现自动灭火功能,具体逻辑如下:
- 水泵控制逻辑:当系统检测到火灾(火灾标志位为1)时,控制STM32的PB10引脚输出高电平,触发继电器吸合,接通水泵电源,水泵启动抽水灭火;当火灾解除(火灾标志位为0)或收到手机端“停止水泵”指令时,控制PB10引脚输出低电平,继电器断开,水泵停止工作。
- 异常处理:若水泵启动后,系统检测到水泵电流异常(如卡阻),立即停止水泵工作,触发声光报警(与火灾报警区分),在OLED屏幕显示“水泵异常,请检查”提示,并向手机端发送异常通知,保护水泵与继电器。
- 手动控制:支持手机端下发“手动启动/停止水泵”指令,STM32接收指令后,执行对应操作,同时向手机端反馈操作结果,便于教师、监护人手动控制灭火功能。
5 系统调试与测试
为验证系统的可行性与稳定性,确保各项功能达到设计目标,严格按照给定的元器件清单与功能要求搭建硬件电路,对系统进行硬件调试与软件调试,随后开展系统功能测试、数据采集精度测试、控制响应速度测试、远程通讯测试及稳定性测试,全面验证系统的性能。
5.1 系统调试
5.1.1 硬件调试
硬件调试的核心是确保各功能模块连接可靠、元器件工作正常,具体调试步骤如下:
- 电路导通测试:搭建硬件电路后,使用万用表检测各模块的电源、接地、信号引脚,确保电路导通,无短路、虚焊、漏焊等问题;重点检测电源电路,确保AMS1117-3.3V稳压芯片输出稳定的3.3V电压,各模块供电正常。
- 元器件测试:分别测试各元器件的工作状态,红外对管测试:遮挡与不遮挡时,检测接收端电平变化,确保能准确输出信号;火焰传感器测试:用火焰靠近传感器,检测输出模拟信号的变化,确保能准确检测火焰;烟雾传感器测试:用烟雾靠近传感器,检测烟雾浓度数据的变化,确保能准确采集烟雾浓度;ESP32模块测试:确保能正常连接Wi-Fi,与手机端建立通讯;蜂鸣器、LED、水泵测试:确保能正常响应STM32的控制指令,发声、点亮、运转正常。
- 模块联动测试:将各模块整合后,测试模块之间的联动效果,如传感器采集数据传输至STM32,STM32控制OLED显示、报警模块报警、执行模块工作,确保各模块联动顺畅,无信号丢失、控制延迟等问题。
- 故障排查:针对调试中出现的问题(如传感器采集数据异常、报警不触发、水泵不启动、远程通讯失败等),逐一排查电路连接、元器件性能、引脚配置等,







