关键词:森林火灾;报警系统;STM32;北斗定位;无线传输
0 前言
森林火灾是全球最严重的自然灾害之一,不仅破坏生态环境,还会危及社会,使人的生命无法得到安全保障。2020年全国发生森林火灾有1 153起,直接减少了八千多公顷森林覆盖面积[1-2],2024年3月15日17时,四川省甘孜州雅江县呷拉镇白孜村发生森林火灾,这些事故的发生都在时刻警醒着人们要把握森林防火安全。近年来由于全球气温异常,生态环境恶化,在非防火期内森林火灾也时有发生,做好森林火灾的预防及报警刻不容缓。
1 设计方案
基于北斗定位的森林火灾报警系统要求以微处理器为控制核心,完成火灾报警有两个关键因素,即火灾发生地的信息参数采集以及实现远程报警。系统框图如图1所示。
1.2 设计方案选择
选用STM32F103C8T6芯片作为基于北斗定位的森林火灾报警系统的主控制器。选择DS18B20温度传感器来测量森林环境中的温度。MQ-2半导体气体传感器对烟雾气体敏感,探测效果良好,性价比高,使用它来完成森林中烟雾浓度的探测。当探测到有火灾时需要通过GSM模块来把火灾发生的地点信息发送到管理员的手机中。SIM900A模块工作频段是四频的,支持蓝牙串口,支持TTS功能,体积小[3],适合作为系统的无线通信模块。使用OLED12864模块实时显示森林中的温度以及经纬度信息。北斗定位系统是我国自主建设和运行的,定位精度达10米,测速精度0.2m/s,数据安全可靠,因此使用北斗+GPS双模卫星定位GY-GPS6MV1 模块来确定火灾发生的地点位置。
2 硬件电路设计
2.1 STM32单片机最小系统电路设计
STM32F103C8T6内存容处量理以器及的1 M内B核的是闪存cor,te2x个-M132, 位,1us模数转化器,可以映射到16个模数转化通道,3个异步串行通信通道[4]。STM32F103C8T6单片机芯片原理图如图2所示。
2.2 烟雾采集电路设计
当森林中环境中烟雾浓度大于300PPM时,表示有火灾发生,此时处理器将控制系统报警,并执行发报警短信的动作。本系统选用性价比较高的烟雾探测模块MQ-2来采集环境中的烟雾浓度。烟雾检测模块MQ-2上设计电路把电导率的变化转化为电压的变化,因此只需要采集模块引脚输出的电压值[5-6]。然后利用电压和烟雾浓度之间的关系就可以计算出环境中具体的烟雾浓度值。烟雾检测模块MQ-2和处理器的连接电路如图3所示。
2.3 温度采集电路设计
温度传感器DS18B20一共只有3个引脚,其中两个引脚是电源引脚,使用正5伏直流供电。温度传感器DS18B20内部已经把温度转化为数值,然后通过中间的2号引脚把温度值传出来,处理器需要按照一定的单总线协议从DQ引脚中把温度读取出来,然后把数据处理,最后把温度显示在显示屏上。当温度大于60度时,单片机发出控制命令,同时控制蜂鸣器报警,并发送报警短信。因此,在读取温度之前需要详细地了解单总线通信协议,并通过PB5引脚利用单总线通信协议把温度值读取出来。DS18B20和处理器的连接电路如图4所示。
2.4 定位电路设计
为了快速准确定位到火灾发生的地址,使用北斗全球定位模块来获取火灾目标的位置信息(经度和纬度)。北斗模块的信号接收模块为GY-GPS6MV1,核心是U-BLOX NEO-6M模组,它能快速准确地连接到卫星,并从卫星上连续不断地获取数据信息。此时获取的数据信息是带有起始位和结束位的一帧一帧的信息,每帧信息中包含了12个数据信息分别是:时间、纬度、纬度半球、经度、经度半球、GPS3toS+OkMZdH+87uWKGhr1f7xBuhAdNEFnsUvMahQ4Pg=状态、正在使用解算位置的卫星数量、HDOP水平精度因子、海拔高度、地球椭球面相对大地水准面的高度、差分时间、差分站ID号[7-8]。GY-GPS6MV1模块和处理器的电路连接图如图5所示。
2.5 短信报警电路设计
当火灾发生地的环境温度超过60度,或者烟雾浓度超过300PPM时,此时就通过GSM模块发送经度和纬度的定位短信到管理员手机上。SIM900A模块为5 伏直流供电,由于模块在发送短信时的功耗较大,功耗高达10W,因此整个系统供电功率应该10W以上。为此,这里将使用5伏2.1A的电源适配器给整个系统供电。在使用SIM900A模块时,应该先把手机卡插入到模块的卡槽中,当模块识别到移动网络之后,此时模块上的信号指示灯就会由快速闪烁变成,每间隔3 秒闪烁一次。此时模块就处于正常工作状态。系统处理器处理所有的数据,当系统满足了报警条件,处理器就可以把字符串型的信息通过串口通信协议发送给手机模块,手机模块接收到信息就会自动触发电信网络,把数据信息发送出去。
手机GSM模块SIM900A和处理器的连接电路如图6所示。
2.6 蜂鸣器报警电路设计
基于北斗定位的森林火灾报警系统中当环境温度超过60度,或者烟雾浓度超过300PPM的值时,需要提醒用户参数超标,这里使用有源蜂鸣器声音来实现报警功能。蜂鸣器报警电路如图7所示。
使用PNP三极管SS8550放大电流驱动蜂鸣器。温度超过60度,或者烟雾浓度超过300PPM的值时,此时处理器通过PB11引脚给蜂鸣器报警电路一个低电平,此时SS8550三极管导通,有电流通过蜂鸣器,蜂鸣器响。当参数正常时,此时处理器通过PB11引脚给蜂鸣器报警电路一个高电平,此时SS8550三极管截止,没有电流通过蜂鸣器,蜂鸣器停止发声。
2.7 显示电路设计
为了方便用户实时直观地看到整个系统所有采集的温度和烟雾浓度等数据信息,这里将采用面积小且节能的OLED12864 作为系统的显示屏。显示屏OLED12864和处理器的接口电路如图8所示。
本系统使用OLED12864字符显示模块一共有7 个引脚,使用3.3伏供电,供电引脚为1号引脚和2号引脚,1号引脚连接到电源地,2号引脚连接到3.3伏正电源[9-10]。3号引脚是SPI数据通信的时钟线连接到处理器的PA5引脚,4号引脚是SPI数据通信的数据线连接到处理器的PA7引脚。6号引脚是SPI数据通信的通信数据或者命令的选择引脚,当该引脚赋值为高电平,表示传输的是数据;当该引脚赋值为低电平,表示传输的是命令[11]。7号引脚是片选引脚,低电平有效。
本系统使用的OLED12864是一个字符型的显示器件,只能显示英文、数字以及特殊字符等等。单片机处理使用SPI通信协议把需要显示的数据传送给OLED12864,单片机在处理显示的字符时,需要把字符转化为ASCII码,然后再把字符传送给OLED12864 内部的控制器
3 软件设计
3.1 总软件流程设计
总软件 设计流程图如图9所示。
基于北斗定位的森林火灾报警系统在主函数中首先要把GSM短信报警模块和北斗模块使用的串口1和串口2初始化,完成了初始化之后,通过串口2从北斗模块中获取当前的经度值和纬度值并把数据显示在显示屏上,再通过ADC采集模块从烟雾传感器中采集烟雾值并把数据显示在显示屏上。接着采集温度值,并把温度值显示在显示屏上。最后进行比较判断,如果烟雾浓度大于300PPM,或者温度大于60度则表示森林中有发生火灾,此时处理器控制蜂鸣器启动报警,同时启动串口1 通过GSM 模块发送报警短信[12-13]。
3.2 温度采集程序设计
本设计使用数字量输出的温度传感器DS18B20 采集森林中环境的温度。处理器连接温度传感器的数字信息输出引脚,编写代码从该引脚中获取数字量值,温度传感器中自带有寄存器,不管处理器有没有读数据,温度信息都保存在寄存器中。处理器通过总线协议可以从寄存器中读取数值[14]。具体的读取数据的流程如图10所示。
首先把温度数值信号初始化,然后处理器发送启动指令给DS18B20的寄存器,然后再发送复位的指令给DS18B20,DS18B20寄存器接收到以上指令之后检查寄存器是否做好数据输出的准备。然后再进行跳过ROM操作,寄存器启动转换,输出数值。此时处理器从寄存器中连续获取高8位和低8位的数据,然后把数据合成为16位的数,但是此时的数据值并不是具体的温度值,还需要把数值乘以0.0625,最终把数值换算成温度值。
3.3 烟雾浓度采集程序设计
为了提高测量的准确度,本设计使用STM32F103 C8T6处理器自带的12位ADC转换器从烟雾传感器的信号输出引脚获取数值。STM32F103C8T6处理器中12位的ADC转换器是使用逐次比较的方式把传感器输入的电压值以数值的形式输出。电压采集流程图如图11所示。
3.4 显示软件程序设计
显示程序是对OLED12864显示器件进行程序设计,程序中完成显示屏的初始化以及显示具体内容的设计,在显示程序的初始化中对显示屏的使能有效位进行控制,使其开启显示功能,之后设定字体大小、设定显示位置以及清空显示屏等内容进行程序设计,在具体的显示内容中,通过显示屏的数据引脚接收单片机传送的具体数据,并按照具体显示位置将数据显示出来[15-16]。显示函数运行时,首先使用SPI协议发送命令使显示屏进行初始化,包括开启屏幕、字体大小和位置确定。之后等待具体的显示内容,收到显示内容后,按照初始化的设定命令完成显示。显示流程图如图12所示。
3.5 远程短信报警程序设计
GSM 模块使用的是SIM900A 模块,本次设计中STM32F103C8T6单片机为控制模块,通过串口通信的方式发送AI指令来控制SIM900A模块进行发短信的操作。GSM模块程序流程图如图13所示。
4 系统调试
4.1 软件调试
按照系统的整体功能,通过调用函数的方式,编写逻辑控制代码,全部代码调试运行成功。
4.2 实物测试
使用电压为5伏输出电流为2A的适配器给系统供电。在手机模块的卡槽中插入一张移动卡,然后再接通电源。通电后北斗模块和手机模块开始初始化操作。当手机模块上的信号指示灯变成慢闪,且北斗模块上的信号指示灯变亮,表示这两个模块都初始化成功。此时显示屏上显示当前的北斗模块获取的当前的经度和纬度信息,以及当前的温度和烟雾浓度值。开机初始化成功后显示界面如图14所示。
接下来测试烟雾浓度过高报警。人为制造烟雾,并把烟雾对着烟雾传感器的探头,此时烟雾浓度升高,当烟雾浓度高于300PPM的时候,此时蜂鸣器开始响,同时管理员的手机上接收到一条报警短信。报警信息的内容如图15所示。最后测试温度过高报警。人为提高环境温度,此时温度升高,当温度高于60度的时候,此时蜂鸣器开始报警,同时管理员的手机上接收到一条报警短信。报警信息的内容如图16所示。
当管理员收到报警短信后,立即打开奥维互动地图App(奥维互动地图是由北京元生华网公司开发的跨平台地图浏览器,拥有强大的设计功能与地理信息展现技术,也可实现经纬度转化为地点坐标,满足人们的需求,因此可以选择此软件),选择搜索输入经纬度信息,如图17所示:
输入完成以后点击确定,点击地图导航功能从我的位置到地图中心点(火灾发生地),点击搜索,直接导航前往火灾地进行救火。通过观察奥维地图App,地图上显示的经纬度与实际火灾发生地的经纬度有一定的偏差,大概在15米左右,但这不完全是由定位模块决定的,也有可能与地图软件本身的精确度有关,总体来说,该设计达到预期要求。中心点导航界面如图18所示。
5 结论
基于北斗定位的森林火灾报警系统在单片机和传感器的共同作用下,实现了预期的温度和烟雾浓度智能监测与显示、火灾发生地的实时定位和远程报警功能。运行的结果可以明确地表明该设计从数据的智能采集到执行器件的自动控制均符合预期的目标,数据的采集过程中,数据稳定并准确,没有发生错误,执行器件的控制中,执行器件稳定运行,没有出现控制的逻辑错误。最终成功地实现了森林火灾的远程监控和报警功能。