在这里插入图片描述

一、項目介绍

摘 要

森林火灾会给自然环境以及人民生命财产安全造成极大威胁,传统监测方法存在供电不易,通信不畅,缺乏及时性等不足,鉴于此,本文设计并创建起一套自供电森林火灾监测系统,该系统采取太阳能与温差电结合的双重电源优化供电模式,化解林区节点长时间运行时的供电问题,选取 STM32F411CEU6 作为主控芯片,整合 MQ135 空气质量传感器与火焰传感器,达成对火情特征参数即时采样,经由LORA 远距离低能耗通信技术达成采集节点和传送节点之间的数据交互,通信节点借助 ESP8266 WiFi 模块按照 MQTT 协议向 ThingsBoard 物联网云平台发送数据。 系统软件依循 RT - Thread 适时操作系统来设计,做到多任务协同作业以及低功耗运作,经由检测显示,此系统置于林区环境之时,其通信距离可达到 3 公里之远,而自带供电系统的部分则能在连日阴雨的情况下持续运行长达 3 天,而且在接收到火警信息之后仅需不到半分钟就能作出反应,从而完成对森林火灾的提前报警及远程观测功能,这个系统具备不错的环境适应能力与稳定的运行状况,给森林防火信息化创建赋予了可行的技术路线。

关键词:森林火灾监测;自供电;LORA通信;物联网;STM32

主要研究内容
针对当前森林火灾监测系统存在的供电难、通信难等问题,本文设计并实现一套自供电森林火灾监测系统,主要研究内容包括以下几个方面:
自供电电源系统设计:研究太阳能与温差发电双电源供电方案,设计包含充放电控制,锂电池储能,稳压输出等功能模块的太阳能电池板和温差发电片联合供电电路,探究双电源协同工作策略以达成不同环境条件下的可靠供电。
采集节点与通信节点硬件设计:以STM32F411CEU6作为控制核心来设计采集节点与通信节点的硬件电路,采集节点包含MQ135空气质量传感器以及火焰传感器,以此达成对环境参数和火警信号的采集功能。通信节点设有LCD显示屏以及ESP8266 WiFi模块,从而做到本地显示数据并远程传送数据的目的,这两个节点经由LORA模块执行无线通信。
嵌入式系统软件设计:依托 RT - Thread 适时操作系统展开软件设计,其中牵涉多任务划分,线程形成与守护,线程之间通信等方面内容,规划好数据采集任务,LORA 传达任务,数据显示任务以及 WiFi 上传任务等,达成各项功能相互配合运行的目的。
物联网云平台接入:研究以ThingsBoard平台为依托的物联网云接入方案,利用ESP8266 WiFi模块按照MQTT协议向云端上传数据,并规划数据可视化仪表盘,达成即时数据显示,历史数据检索以及报警管理等目的。
系统测试与分析:创建检测环境,针对自供电系统的性能,传感器响应特点,LORA通信距离以及WiFi数据输送的稳定性展开检测,实施系统联合调试检测和野外环境适应性检测,以验证系统功能的完整性与运行时的可靠性。

系统需求分析
森林火灾检测系统要在野外林区长时间稳定运行,会遭遇供电难题,环境恶劣以及通信不畅等诸多挑战,为了符合森林火灾早期警报的实际需求,该系统应当具有如下几个方面的功能需求和性能需求。
系统要采集与火情有关的特征参数以满足监测功能需求,燃烧会产生烟雾,二氧化碳,一氧化碳等气体,这些气体会造成空气质量显著改变。火焰还会发出特定波段的光信号,所以,系统要设置空气质量传感器来监测烟雾和有害气体浓度,这属于火情早期警报的关键指标,还要设置火焰传感器去检测760纳米到1100纳米波长的红外光信号,以此来识别明火,数据采集的时间间隔应当按照环境状况来进行动态调节,处于正常状态的时候,可以设定成每隔5到10分钟采集一次数据,从而减小能耗,一旦检测到异常值就自动转为成高频采集模式,节点要有一定量的本地数据缓存能力,在网络中断期间暂存数据,等到网络恢复正常之后再补传数据。
在自供电能力需求上,林区没有电网覆盖,所以系统须要凭借环境能量自行维持运行。该系统采取太阳能和温差发电双电源互补方案,其中太阳能电池板把光能转为为电能,这是主要的能量来源,要有在林区典型光照条件下产生的发电量,足以满足系统日均功耗的需求;温差发电片靠地表和空气的温差来发电,作为附加能源,特别在夜间或者阴雨天太阳能短缺的时候起到作用,其温差要是高于5摄氏度就能产生有效的功率输出,有关储能的部分,则需设置锂电池,其容量要符合在连续阴雨天情况下使系统运行3到5天的要求,电源守护电路应当具有充放电控制,过充过放防护以及稳压输出等功能,从而保证各个模块得到稳定又可靠的供电电压。
系统存在两级通信链路,采集节点设立于林区内部,通信节点则置于较为开阔之处或者靠近林区边缘之地,二者之间的通讯依靠 LORA 实现,在林区环境里,其通信距离应达 3 至 5 公里,要具有一定的植被穿越能力,而且采集节点须利用低功耗通信技术来提升电池续航力,通信节点充当数据汇集及上传的核心部件,必要时在有网络范围的地方经由 WiFi 连上互联网,并以 MQTT 这类物联网轻量化协议保障数据传送既可靠又及时,平时每隔 10 到 15 分钟就要提交一次数据,一旦发生火警便马上发出警报。
系统各个模块若想达成低功耗及环境适应性的目的,则要实施低功耗设计,主控芯片应拥有多种休眠模式,传感器模块采取间歇工作形式,收集数据之后即刻断电,通信模块只有在必要的时候才会被激活,须要将系统的平均功耗限制在100毫瓦之内,从环境适应性来讲,系统应该可以在零下20摄氏度到60摄氏度的温度区间以及0%到95%的湿度环境下正常运行,还要具有一定防尘防水性能,这样才能应对林区高温,高湿,多尘这样糟糕的环境。

系统总体架构
本系统采取双节点架构设计,包含采集节点,通信节点以及物联网云平台这三部分,采集节点设置于森林监测范围之内,其职责在于收集环境参数并监测火情信号,经由 LORA 无线通信把数据传递给通信节点。而通信节点被置于林区边界或者防火检查站点等具备网络覆盖的地方,该节点主要任务是接收到采集节点输送过来的数据,然后借助 LCD 显示屏当场显示出来,再凭借 ESP8266 WiFi 模块按照 MQTT 协议上传数据到物联网云平台,云平台起到储存,处理数据,执行可视化表现以及告警管理的作用,使用者能够经由浏览器或者移动端实施远程登录。
采集节点以 STM32F411CEU6 微控制器为核心,它装载了 MQ135 空气质量传感器以及火焰传感器,还设有 LORA 通信模块,该节点由太阳能电池板和温差发电片共同供电,再经由锂电池完成储能。这个节点要定时收集环境数据,对这些数据执行初步处理,然后经由 LORA 模块传递给通信节点,节点的软件按照 RT - Thread 实时操作系统来设计,其中覆盖了数据采集线程和 LORA 发送线程,以此达成多任务的协同运作。
通信节点采用 STM32F411CEU6 作为主控芯片,它装有 LORA 通信模块来获取采集节点的数据,并装配 ESP8266 WiFi 模块以接入互联网,还有 TFT LCD 显示屏用于本地显示数据,也安装了蜂鸣器模块用作就地报警,此节点充当数据汇聚中心,从大量采集节点接收到数据包之后加以解读,并把结果显示在 LCD 屏幕上,而且经由 WiFi 模块把这些数据上传至 ThingsBoard 云平台,节点软件依靠 RT - Thread 操作系统,其中包含 LORA 接收线程,数据处理线程,LCD 显示线程以及 WiFi 上报线程。
物联网云平台选用的是ThingsBoard这个开源平台,其具备本地部署能力,该平台凭借MQTT协议来接收通信节点所报传的数据,而且可以向使用者供应数据可视化仪表盘以显示即时检测情况,还负责执行历史数据查询以及趋向分析,还能设置报警规则,一旦监测数值超越了界限就会发出报警提示,此平台有着不错的扩展性能,能够应对诸多设备的接入并做到数据的持久保存。

系统工作流程
系统上电之后,采集节点和通信节点各自展开初始化步骤,涉及MCU时钟设置,外设初始化,传感器预热以及LORA模块参数设置等内容,等到初始化全部结束,系统便转为到定时工作状态当中。
采集节点的工作流程如下:节点被唤醒之后,第一步执行传感器数据采集任务,利用ADC来获取MQ135传感器所产生的输出电压值,凭借GPIO读取火焰传感器发出的数字输出信号,对收集到的数据实施滤波以及校准操作,接着依照预先设定好的协议格式把这些处理过后的数据整合封装起来,经由LoRa模块传送至通信节点处,当数据发送完毕以后,采集节点便转入低能耗休眠模式当中,静待下一次采集时段的到来,倘若传感器察觉到存在异常数值的话,那么该节点就能够自行缩减自身的休眠时延,从而提升采集的频次。
通信节点的工作流程如下:节点上电之后会一直处在接收状态,等待采集节点的数据,一旦接收到 LORA 数据包,就对它执行分析和校验,从中获取有效的传感器数据。分析完毕的数据经由 LCD 显示屏即时更新显示,并按照 MQTT 协议格式再次被封装,然后依靠 ESP8266 WiFi 模块上传到 ThingsBoard 云平台,如果察觉到火情数据,就会立刻启动蜂鸣器发出就地报警信号,而且,通信节点还要担负与云平台保持心跳的任务,以保证连接状态可靠。
云平台侧的工作流程如下:ThingsBoard平台不断监听MQTT端口以接收通信节点上报的数据,数据经解析后存入时序数据库并在即时仪表板上更新显示。平台遵照预设的告警规则对数据执行判断,一旦符合告警条件便产生告警记录,可经由邮件或者短信等形式通知管理职员,用户能够借助Web界面查看即时数据,历史趋势以及告警信息,从而做到对森林火情的远程观测。

二、文档介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

三、項目设计

RT-Thread操作系统移植
本系统把RT - Thread即时操作系统当作软件平台,RT - Thread属于一个嵌入式的即时多线程操作系统,其具备多任务并发执行的能力,用C语言编写而成,代码风格颇为优美,体系结构较为明晰,裁剪性也非常好。对于那些内存容量有限的MCU而言,可以被裁剪到Flash仅有3KB,RAM只有1.2KB的NANO版水平,本系统所采用的STEm32F411CEU6具备512KB Flash以及128KB RAM,完全符合RT - Thread的运行需求,RT - Thread包含四层核心架构,分别是内核层,组件层,服务层以及应用层。 内核层给予多线程调度,信号量,邮箱,消息队列,内存守护,定时器等基本功能,组件层涵盖文件系统,网络协议栈,设备框架等,服务层供应Shell,日志,调试等工具,应用层则是用户的应用程序。该系统重点利用内核层的线程创建与守护,线程同步与交流,软件定时器等功能。
RT-Thread系统启动流程如下:系统上电之后会去执行复位向量,然后跳转到启动代码这里来,当CPU,内存,时钟这些基本硬件被初始化完毕以后,就会开始去执行 rtthread_startup,从而执行系统初始化流程,接着调用 rt_hw_board_init 函数来对板级外围设备实施初始化操作,之后还要对系统定时器以及线程调度器展开初始化设置,再创建出主线程和若干个用户线程,等到这一切都做完之后,就可以开启调度器,从而开始执行多任务调度工作了,这个系统当中创建了很多个任务线程,其中涉及到数据采集线程,LoRa 通讯线程,报警控制线程等等各种类型的线程,就拿数据采集线程来说,是经由 rt_thread_create 函数来进行创建的,得要事先给定好线程的入口函数,分配堆栈大小,设置优先级还有时间片之类的参数,一旦创建过程结束并且检查没有问题的时候,接下来就是调用 rt_thread_startup 函数来真正启动这个线程,经过这样的多任务设计以后,系统整体结构变得更为明晰起来,各个功能模块都能够彼此分开独立运行,互不产生影响,这样也就相应地提升了软件自身的可靠性及其后续维护的便捷程度。

数据采集软件设计
数据采集软件设计重点包含ADC启动设置和传感器数据读取这两部分,本系统利用 STM32F411CEU6自带的12位ADC模块来采集 MQ135空气质量传感器以及火焰传感器所产生的模拟信号。ADC的初始设置经由 HAL_ADC_MspInit 函数达成,在此函数当中先是开启 ADC1 的时钟和 GPIOA 的时钟,接着把 PA4 引脚设置成模拟模式,成为 ADC1 的输入端 IN4,在系统时钟的设置上,依靠 RCC_OscInitTypeDef 和 RCC_ClkInitTypeDef 结构体去完成 HSE,LSE 以及 PLL 的设置,从而保证 ADC 模块处于稳定的时钟频率之下运行。
数据采集线程持续执行传感器的数据读取操作,每次采集时都会启动ADC转换,并等待该转换结束之后才去读取ADC值。传感器输出极易被环境所扰动,所以在软件设计里会对连续多次采集得到的数值执行均值滤波处理,以此来提升数据的稳定性与准确性,从传感器那里获取来的原始ADC值会按照公式转化成相应的电压值,然后再依照传感器本身的特性曲线去推算出气体浓度或者火焰强度之类的物理量,而且这个采集线程还要承担起数据封装的任务,按照预先设定好的通讯协议格式把温度,烟雾浓度以及火焰强度等等数据加以整合,再加上帧头,帧尾还有校验字节,从而合成一个完整无缺的数据包,由LoRa通信线程来负责发送出去。 数据采集的时段可依实际需求予以设置,从而协调好即时性与功耗之间的关系。

LoRa通信软件设计
LoRa通信软件设计基于STM32的串口外设和L33-433 LoRa模块实现。首先进行串口初始化配置,通过HAL_UART_MspInit函数使能USART6时钟和GPIOA时钟,将PA11和PA12引脚分别复用为USART6的TX和RX功能,配置为推挽输出模式,完成串口参数如波特率、数据位、停止位和校验位的设置。LoRa模块的初始化通过向串口发送AT指令完成。主要配置参数包括:工作模式被设定成透传模式,射频频率定为433MHz,发射功率按照通信距离需求实施调节,串口波特率要与STM32的设置相符合,全部设置参数经由AT指令写入模块当中,而且保存在模块的Flash里,防止断电的时候出现数据丢失现象。
数据发送功能需在采集线程取得有效数据时启动,经由串口将已打包的数据帧传送至LoRa模块,此模块会自动执行CSS扩频调制及射频发射流程,数据传送完毕之后,可借助查询或者中断的方式来核查发送状况,从而保证数据得以顺利发出,而数据接收功能则在通信主板上面得以达成,通信主板上的LoRa模块一直维持着接收模式,一旦采集节点开始发送数据,该模块便会予以捕捉并执行解调操作,接着再经由串口向外输出相关内容,到了STM32串口接收中断产生之时,所获的数据就会被储存到缓冲区内,而且还要展开帧分析与校验环节。 校验结果若是符合要求,相关数据便会被单挑出来,用以供LCD显示和 WiFi发送之用。为了提升通信的可靠性,软件设计里增添了简单的重传机制,也就是在采集节点送出数据以后,会等待应答信号,如果过了预定时间还没收到应答信号,那么就自动重新发送数据,最多允许重送三次,而且还会开启 LoRa 模块的 FEC 前向纠错功能,以此来进一步改善数据传送过程中的抗干扰能力。

WiFi与MQTT通信设计
WiFi通信基于ESP8266模块实现,该模块支持STA、AP和STA+AP三种工作模式。本系统采用STA模式,使模块连接至现场已有的无线路由器,从而接入互联网。ESP8266通过串口与STM32通信,使用AT指令集进行控制和数据传输。模块初始化过程包括:复位模块,设定工作模式,关联WiFi网络,在关联WiFi的时候,得要设置SSID和密码,模块会自动去扫描然后关联到指定的网络上,关联完成后,就能得到自己的IP地址,经由AT指令来查看网络关联的情况,以确认模块是否已经顺利接入互联网。
MQTT协议用于将采集到的数据上传至ThingsBoard物联网云平台。MQTT是一种轻量级的发布/订阅消息传输协议,适合物联网场景下的数据传输。本系统在STM32上实现了MQTT客户端,通过ESP8266与云端服务器通信。MQTT连接建立过程如下:首先设置 MQTT 服务器的地址与端口,接着发送包含客户端 ID,用户名及密码的关联请求,一旦连接创建便能够订阅相关主题并着手发布数据。在数据发布阶段,把传感器数据整合成 JSON 格式,依靠 MQTT 的 PUBLISH 消息传送至指定的主题当中,为了保障通信的稳定性,软件内部具备了断线重连的机制,当察觉到 WiFi 断开或者 MQTT 连接出现异常的时候,会自动尝试重新创建连接以恢复数据上报,数据上报采取定时上报和事件触发相融合的方式,一般情形下执行定时上报状态数据,一旦检测到火情就马上启动报警上报。

LCD显示与报警设计
LCD显示模块所用的是TFT液晶显示屏,它经由SPI接口和STM32开展通信,在设置SPI驱动的时候,要设定STM32为主机模式,并设置时钟极性,相位以及分频系数,以符合LCD模块的时序需求。LCD的初始化包含很多步骤,比如复位,设置显示方向,调整颜色格式等等,这些都会借助发送特定的初始化命令序列来达成,显示界面的设计重点在于即时数据显示和状态信息显示两方面,即时数据显示区会显现采集节点上传来的诸如温度,烟雾浓度,火焰强度之类的数据;而状态信息区则会显示网络连接状况,LoRa通信品质,系统时间等信息,利用像LCD _ Fill2这样的底层填充函数,并配合字符及图形绘制函数,就可以形成起既直观又便捷的用户界面。
数据显示采取动态更新的形式,即通信主板收到新数据包之后,执行相关分析并马上在LCD屏幕上显示相应数值,这样做的目的在于区分正常情况与警报情形,平常显示的数值都是白色或者绿色,一旦出现报警就会变成红色并且不断闪烁以引起操作人员关注,而蜂鸣器发出声响则是用来告诫存在火灾风险的。当采集节点监测到烟雾浓度高于限值或者火焰强度突破设定阈值的时候,就会借助LoRa无线模块向系统发出警报信号,通信主板收到该信号之后便会启动蜂鸣器产生声音来做出回应,报警控制软件包含三个主要方面:一是判定是否满足报警触发条件;二是决定报警音的样式以及开启或关闭静音模式;三是赋予用户经由按下按钮直接关闭报警音的权利。 报警音以间歇性发声作为模式,不同于普通的提示音,这样的设计便于区分。用户能够借由按键做到手动静音,不过如果火情仍然存在,那么在静音之后的一段时间里,报警将会重新响起,以此保证警告不会遗漏掉任何情况。

ThingsBoard平台简介
ThingsBoard是个依靠Java开发出来的开源物联网平台,可用来执行数据收集,处理,可视化表现以及设备管理任务,它凭借物联网行业通用的标准协议来达成设备关联,并且拥有云部署与本地部署这两种形式,给用户赋予了多种化的设置可能。本系统采取本地部署的办法,把该平台安排在机房里的服务器上面,以此保障数据安全并且维持系统的相对独立性,ThingsBoard这个平台具备很多特性,在设备管理上,这个平台供应设备,资产和客户相关的运作功能,而且允许用户设定彼此之间繁杂的关系。 在数据处理环节,平台会剖析传来的遥测数据,经由复杂的事件处理机制发出警报。就设备控制而言,平台支撑借助远程过程调用来控制设备,按照设备生命时段事件,REST API事件,RPC请求等创建自动化流程。
平台具有可扩展性,这是其一大突出优势,ThingsBoard采取可水平扩展的架构并利用先进的开源技术塑造而成。单个服务器节点能够应对成千上万甚至更多的设备,而采用集群模式之后,则可应付多达数百万台设备,平台不存在单点故障,集群里的各个节点均处于相同的地位,具备自动识别节点故障的功能,可以在不中断运行的前提下替换出现故障的节点,而且会凭借稳定的 NoSQL 数据库来执行持久化数据的复制工作,从而保证数据不会发生遗失现象,在做到数据可视化时,ThingsBoard 供应了 30 个可设置的小部件,还给予内置编辑器用以制作专属小部件。 内置的线图,数字,模拟仪表,地图等组件,能符合各种数据表现需求,用户可给客户供应设备或者资产遥测及见解,规划出动态且响应快速的仪表盘,经由可自定义的规则链,窗口小部件和输送达成去拓展平台的默认功能。

结 论
本文设计并完成了一套自供电森林火灾监测系统,针对自供电源设计,硬件电路开发,嵌入式软件设计,LoRa无线通信以及物联网云平台接入这些关键技术展开深入探究,该系统采取太阳能与温差发电双源供电方案,把STM32F411CEU6当作主控芯片,融合MQ135空气质量传感器和火焰传感器执行火情检测,依靠LoRa模块达成采集节点与通信主板间的远程数据输送,通信主板又经由ESP8266 WiFi模块把数据上传到ThingsBoard物联网云平台,从而做到数据的可视化表现和多级告警管理功能。
系统测试结果表明:自供电系统存在光照充足时,可以有效地补充电能,没有光照的情况下,电池续航时间可超过130小时,传感器对于烟雾和火焰反应很灵敏,能精准地识别火情特点。LoRa通信在林区环境下的有效距离大约为1. 2公里,数据接收的达成率大于85%,云平台接入比较稳定,数据上报的达成率高达99. 8%,告警触发的延时大概在1到2秒之间,经过连续七天的稳定性考察,系统的运行都是正常的,各个功能也达到了设计的目的,这表明该方案在实际应用环境当中具备可行性和可靠性。
本研究的创新点主要体现在三个方面:首先,采用太阳能与温差发电相融合的双源供电方案,加强了野外供电的可靠性,其二,凭借 RT - Thread 的多任务软件框架,达成了系统功能的模块化及低功耗运行,其三,形成起采集节点 + 通信主板 + 云平台的三层架构,经由 LoRa 与 WiFi 异构组网,既满足远距离通信的需求,又满足互联网接入的需求,在森林防火领域有着较好的应用前景。

更多推荐