专业的网站制作正规公司,网站分站代理,网站注册空间,西安做网站优化#xff08;STM32F103C8T6、标准库#xff09;功能设计本项目设计一种全自动的智能火灾监控系统#xff0c;可对环境温度、湿度和烟雾浓度进行实时监测#xff0c;当有火灾风险或异常情况发生时#xff0c;本装置可进行声音报警、自动控制并能够远程数据上报。本系统的具体…STM32F103C8T6、标准库功能设计本项目设计一种全自动的智能火灾监控系统可对环境温度、湿度和烟雾浓度进行实时监测当有火灾风险或异常情况发生时本装置可进行声音报警、自动控制并能够远程数据上报。本系统的具体设计参数如下1通过 DHT11 检测控制温湿度数据并显示在OLED上。2通过 MQ-2 检测烟雾浓度数据并显示在OLED上, 正常阀值在0~1000PPM之间。3系统综合多个传感器数据来判断火情能够实现风险较轻、风险较高、风险极高等基本火情判断检测到温度 超过30摄氏度风险较轻检测到温度 超过40摄氏度风险较高检测到烟雾浓度大于 30ppm 时 风险极高4检测到以上任意风险时蜂鸣器报警提醒同时发送报警信息当前温湿度烟雾浓度风险登记到手机上。5低风险不做处理风险较高打开风扇风险极高风扇和水泵同时打开。2. 硬件设计2.1 系统结构框图本系统由主控制器模块、传感器检测模块、通信模块、执行报警模块、显示模块和电源模块等部分组成各模块协同工作实现对火灾的实时监测、处理与报警。其结构框图如图1所示。图1 系统结构框图2.2 主控制器选型本系统STM32F103C8T6作为主控制器该型号提供 64KBFlash 20KBSRAM的存储组合能满足多传感器监测与执行控制的综合需求。多个独立的ADC通道可同时支持MQ-2 等模拟量传感器的采集可在无需扩展芯片的情况下同时连接WiFi模块、调试接口和外部通信设备。其定时器配置便于驱动风扇、水泵、蜂鸣器等执行装置特别适合需要多路PWM控制的火灾联动系统。2.3 烟雾传感器、温湿度传感器选型本系统烟雾检测部分采用MQ-2 型可燃气体/烟雾传感器。该传感器能够检测空气中的烟雾及多种可燃气体浓度典型测量范围约为 30010000PPM输出为随浓度变化的模拟电压信号电压范围在 05V之间可直接连接至主控制器的ADC输入端口进行采集和处理能够满足系统对烟雾浓度实时监测的要求。本系统温湿度检测部分采用DHT11 型数字式温湿度传感器用于测量环境温度和相对湿度。其温度测量范围为 050 ℃、湿度测量范围为 2090 %RH温度精度约 ±2 ℃、湿度精度约 ±5 %RH输出为数字信号采用单总线的通信方式与主控制器进行连接具有接口简单、数据读取稳定的特点适用于本系统的环境参数采集。2.4 通信模块选型本系统的通信部分在仿真环境中采用Proteus中的COMPIM通信接口模块用于实现主控制器与计算机之间的串行数据交互。COMPIM能够将仿真电路中的UART信号映射为计算机本地的串口或虚拟串口使系统在仿真阶段即可通过串口助手接收主控发送的数据实现与真实串口相同的通信效果。该模块支持标准TTLUART信号波特率可根据系统设置灵活调整接口形式与实际硬件串口一致便于在仿真过程中验证数据发送格式、通信稳定性及上位机显示功能。2.5主控制器外围电路设计主控制器外围电路如图2所示时钟部分采用8MHz无源晶振Y2配合C13、C14构成主时钟振荡电路同时搭配32.768kHz的Y1晶振与C11、C12组成实时时钟电路以满足低功耗计时需求复位功能由复位按键SW1、电容C2和电阻R2构成的手动复位电路实现电源方面通过ME6211-3.3将5V输入转换为3.3V的VCC且输入输出端均配置滤波电容稳定供电调试接口采用SWD形式的H4接口可实现程序下载与调试同时还设计了USB接口、GPIO扩展排针等外设接口以及电源指示灯LED1、LED2用于状态显示也引出了PA11/PA12等引脚支持USB通信。图2 主控制器外围电路原理图2.6 烟雾入侵检测电路设计烟雾入侵检测电路如图3所示。本设计采用MQ-2 可燃气体/烟雾传感器作为火灾早期烟雾识别元件。MQ-2 的模拟输出随空气中烟雾浓度变化而改变经可调电位器RV1 进行阈值设定后送入主控制器的ADC通道。MCU持续采集烟雾模拟量并与设定浓度阈值比较当检测到烟雾浓度升高至危险水平时立即触发火灾预警联动蜂鸣器、排风风扇及水泵执行紧急处置。该电路结构简单、响应快速能够有效实现火灾初期烟雾的自动检测与报警功能。图3 烟雾入侵检测电路原理图2.7 执行报警电路设计执行报警电路如图4所示。本系统采用蜂鸣器、微型风扇和水泵作为火灾报警后的执行装置各执行元器件均通过导线直接连接到STM32 的GPIO引脚并由单片机输出高低电平实现开关控制。当检测到温度或烟雾浓度超过阈值时主控制器立即输出高电平驱动蜂鸣器发声同时启动风扇进行排烟并控制水泵开启进行简易灭火。该电路结构简单响应迅速能够在仿真环境下实现火灾场景的联动报警功能。烟雾传感器、温湿度传感器选型:图4 蜂鸣器原理图图5 电机驱动原理图2.8 显示模块本系统的显示模块采用 0.96 英寸OLED液晶显示屏工作电压为 5V通过I2C总线与STM32F103C8T6 相连仅需SDA和SCL两根信号线即可完成数据传输接口简单、占用资源少。该模块具有高亮度、高对比度和宽视角等特点即使在低光环境下也能清晰呈现信息非常适合用于火灾监控场景的实时数据显示。OLED显示内容包括当前温度、湿度、烟雾浓度以及系统工作状态等关键参数主控制器通过发送字符缓存与刷新指令实现界面的动态更新。显示模块响应速度快、功耗低可确保在持续监控过程中稳定运行为用户提供直观、可靠的现场监控信息。图6OLED原理图2.9 电源电路设计电源电路如图所示。本系统采用稳定的 5V直流电源作为整套电路的供电基础主控制器STM32F103C8T6、DHT11 温湿度传感器、MQ-2 烟雾传感器模块、OLED显示屏及蜂鸣器等都由该电源统一供电。在仿真环境中各模块均已集成必要的稳压处理因此电源直接分配至各器件的VCC与GND引脚即可满足工作要求。系统中所有数字接口均共享公共地线确保信号传输可靠5V电源具备足够的电流输出能力可同时驱动风扇、水泵等负载从而保证整个火灾监控系统的稳定运行。图7 电源模块原理图3. 软件设计3.1 主程序设计1. 系统初始化和主循环2. 传感器数据读取3. 主要风险判断温度30或烟雾304. 报警和数据发送5. 三级响应机制根据烟雾和温度值控制风扇水泵6. 显示更新和循环继续图8 主程序流程图3.2OLED显示子程序设计1. 接收行号、列号和字符串指针参数2. 遍历字符串中的每个字符3. 调用OLED_ShowChar()逐个显示字符4. 遇到字符串结束符\0时停止图9OLED显示子程序流程图3.3 串口发送子程序设计发送单个字节等待发送完成发送字符串遍历直到遇到\0发送字节数组指定长度发送数字转换为字符串形式格式化输出支持可变参数图10 串口发送子程序流程图3.4温湿度传感器子程序设计复位DHT112. 检测响应3. 读取数据包含字节和位的循环4. 校验数据5. 解析数据或返回失败图11 串口发送子程序流程图3.5烟雾传感器滑动变阻器模数转换子程序设计初始化ADC- 配置GPIO和ADC参数获取ADC平均值 - 循环多次采样单次ADC采样延时5ms计算平均值 - 返回最终结果图12 烟雾传感器滑动变阻器模数转换子程序流程图4.效果展示温度30℃且烟雾小于30PPM时无反响烟雾30PPM触发声音报警启动通风灭火系统数据上报异常状态下通过WiFi发送实时数据温度30℃触发声音报警数据上报异常状态下通过WiFi发送实时数据温度40℃触发声音报警启动通风系统5. 程序清单主程序 while(1) { DHT11_Read_Data(temp,humi); mq2MQ2_Get_Adc_Average(ADC_Channel_1,10)*1000/4095;//烟雾传感器浓度的值 OLED_ShowNum(47,0,temp,2,OLED_8X16); OLED_ShowNum(47,16,humi,2,OLED_8X16); OLED_ShowNum(47,32,mq2,3,OLED_8X16); OLED_Update(); //阈值检测 if(temp30 || mq230) //任何一种风险产生 开报警并发送数据出去 { GPIO_ResetBits(GPIOB, GPIO_Pin_0);//低电平触发 Delay_ms(10); GPIO_SetBits(GPIOB, GPIO_Pin_0);//低电平触发 //通过串口发送一次数据到WiFi模块 if(send_flag 0){ send_flag 1; printf(TEMP); Serial_SendByte(temp/100); Serial_SendByte(temp%100); printf( C, HUMI); Serial_SendByte(humi/100); Serial_SendByte(humi%100); printf( RH, MQ2); Serial_SendByte(mq2/1000); Serial_SendByte(mq2/10%100); Serial_SendByte(mq2%100); printf( PPM\r\n); } } else //无风险 关报警 { send_flag 0; GPIO_SetBits(GPIOB, GPIO_Pin_0); } if(mq230){ //风险极高 GPIO_SetBits(GPIOB, GPIO_Pin_3);//开风扇 GPIO_SetBits(GPIOB, GPIO_Pin_6);//开水泵 } else if(temp40){ //风险较高 GPIO_SetBits(GPIOB, GPIO_Pin_3);//开风扇 GPIO_ResetBits(GPIOB, GPIO_Pin_6);//关水泵 }else{ //低风险或无风险 GPIO_ResetBits(GPIOB, GPIO_Pin_3);//关风扇 GPIO_ResetBits(GPIOB, GPIO_Pin_6);//关水泵 } }(详细代码、图片流程图等看网盘中的报告)网盘代码、仿真、报告通过网盘分享的文件火灾监控系统链接: https://pan.baidu.com/s/1S_-OeYKDnZy6qC7FnV-Jrw?pwdyjjz 提取码: yjjz