多场景智能头盔监测系统的设计

2018-08-24 07:49
计算机测量与控制 2018年8期
关键词:环境参数串口路由

(武汉大学 物理科学与技术学院,武汉 430072)

0 引言

经济新常态下,“以人为本,安全生产”的理念深入人心。各行各业不仅需要全面规范安全生产秩序,利用新的科技手段加强工作人员的安全设备也是十分必要的。特别是油气管线、建筑施工、消防、煤矿开采等重点行业领域,及时获得人员现场工作画面与环境数据,是预防事故发生、保障人员安全的重要环节。但当前这些领域的安全信息化水平不高,如煤矿与地下管廊施工,通常采用有线监控、人工巡检、定点监测等方式。作业人员无法及时了解周边环境信息,监管人员无法了解作业人员施工情况。这会对事故预防甚至后期救援带来很大的麻烦。

为改善上述缺点,本文从人员必须使用的安全头盔出发,设计了多场景智能头盔监测系统。该系统根据不同场景的网络状况,选择合适的视频数传方式及监测平台,使得施工作业和监管人员均能及时了解现场环境状态与画面。为预防事故发生,安全生产提供了很好的保障。

1 系统架构设计

从功能的角度看,整个系统由3个部分组成:环境数据采集终端,无线视频数传单元,监测平台。环境数据采集终端通过扣具集成在头盔上,搭载温湿度及气体传感器收集环境数据。根据使用场景灵活选择不同的数传单元。监测平台分为PC端与移动端,负责环境数据、画面的显示与存储。整体结构如图1所示。

在无运营商网络的局域网使用场景,如隧道、煤矿等。可搭建无线Mesh网络提供无线通信保障。智能头盔上的OpenWrt路由模块接入无线局域网,与采集终端进行串口通信获得环境参数,并与头盔上的USB摄像头相连。同一局域网下的PC端监测平台访问由主路由分配的相应子IP及端口,即可获得头盔上的传感器数据与摄像头传来的画面图像。

在有运营商4G网络的广域网使用场景,如消防检查、建筑施工等。将OpenWrt路由模块换为安卓手机。由本系统自研的HelmetLive APP经蓝牙接收传感器数据,手机摄像头获取工作画面,经由4G广域网访问云直播服务器,服务器对内容进行解析分发,环境参数同时存在数据库中。监测时可在移动端或网页端访问相应播放地址,供实时查看现场画面。

2 环境数据采集终端设计与实现

2.1 采集终端总体结构

采集终端以STM32F103为控制核心,具有处理能力强大、功耗低、抗干扰能力强等优点,适用于复杂环境工作需要。其内部搭载2个12位的AD转换器[1]。它有18个通道,可测量16个外部和2个内部信号源,其转换速度最大可达到1 μs,可以实现对探多数据的采样及转换。传感器方面,该终端搭载了DHT11温湿度传感器、MQ-4甲烷传感器、MQ-7一氧化碳传感器、MQ-135烟雾浓度传感器;其它方面包括OLED显示模块与HC-05蓝牙模块。传感器负责收集环境参数,显示模块为人员提供环境状态,蓝牙模块负责在4 G广域网场景下与手机的信息交互。在环境指标超限的情况下,还会进行声光报警。终端收集到传感器数据后,通过相关串口传输出去,为使用方便,所有串口通信参数通过固件函数均设置为波特率9 600,数据位8位,停止位1位,无校验位。其总体结构与软件流程如图2所示。

图2 采集终端结构及软件流程图

2.2 温湿度检测

温湿度是许多监测系统中需要获取的重要参数,本文采用DHT11温湿度传感器,其中包含1个电阻式感湿元件和1个NTC测温元件。输出的为已校准的数字信号,采用单总线数据格式,可直接与STM32的I/O相连,串口一共向外发送5位16 进制数据,分别为:温度高8 位;温度低8位;湿度高8 位;湿度低8位;校验8位。其测量指标如下:湿度的测量范围为20%~90%RH,精度为±5.0%RH;温度的测量范围为0~+50 ℃,精度为±1.0 ℃[2]。为减少干扰噪声,每采集十组数据并取平均值。

2.3 甲烷检测

甲烷是居民生活与工业领域中重要的能源和化工原料,也是煤矿坑道气的主要成分。该气体易燃易爆,对其进行迅速准确的探测,对安全生产与生活具有重要意义。本系统采用MQ-4、MQ-7、MQ-135分别检测甲烷、一氧化碳、烟雾浓度,3种传感器具有相似的原理与特点,本文着重介绍MQ-4的使用。

本系统采用MQ-4气体传感器检测甲烷浓度,传感器的气敏材料为在空气中电导率较低的二氧化锡。当传感器检测到空气中存在甲烷时,电导率随甲烷浓度的增加而增大。在温度-40~70 ℃,相对湿度低于95%的工作环境下,MQ-4能较好的测量甲烷浓度[3]。该传感器能够输出TTL电平及模拟量两种信号。甲烷浓度越高,模拟量输出电压越高,范围为0~5 V。TTL输出低电平时为有效信号。因此,将STM32的IO口与MQ4的输出端相连,通过STM32内部的AD转换器得到输出的电压值,利用MQ-4特性曲线计算出相应甲烷浓度值[4]。在使用时,通过模拟量输入通道采集到的原始数据,可能混杂了一些干扰噪声,为了提高采集的准确性和可靠性,需要对ADC 采样的数据要进行滤波处理。下位机采用算数平均值滤波法,通过20次ADC的连续扫描采集,并求平均值,可得到校正后的采样数据[5]。

2.4 OLED显示与蓝牙模块

采集终端集成在安全头盔上,模块的选用需要功能与便携并存。显示模块采用0.96寸的OLED显示屏,OLED采用主动有机发光的原理,响应速度快,可视角度达到170度。该模块为全固态结构,低温特性好,能够适应恶劣的工作环境。配合蜂鸣器,可以在终端显示传感器数据,并在超标情况下报警提示。蓝牙模块用于4 G广域网场景,负责与安卓手机通讯。此设计选择HC-05蓝牙模块,该模块体积小、功耗低,广泛的波特率范围使其支持许多设备。使用时蓝牙模块与STM32控制单元进行全双工通信,如果没有与安卓手机适配,则不会对外发送数据。

3 无线视频数传单元设计与实现

3.1 OpenWrt路由模块

在无运营商网络的局域网使用场景,如隧道与地下管廊、煤矿等。可搭建无线Mesh网络提供通信保障。无线Mesh技术是具有动态自我组配能力的新一代无线网络结构,与传统WIFI不同的是,在Mesh网络中任意一个节点都能同时与其它多个节点直接通信,同时利用中间节点还可将不相连的路由器进行级联[6]。

本系统采用OpenWrt路由模块提供稳定的WIFI传输,采用高通AR9331芯片,预留USB及USART串口,能自适应路由器等设备。该模块预刷OpenWrt路由系统,OpenWrt是一个高度模块化的嵌入式Linux系统,拥有强大的网络组件与扩展性,用户可以方便快速地定制一个具有特定功能的嵌入式系统来制作固件。为满足功能需要,向路由模块中编译了mjpg-streamer、ser2net和kmod-video-core3个组件,它们的功能为:视频服务器、串口转网口、USB摄像头驱动。其中Mijg-streamer是一款开源视频服务器软件,在基于TCP/IP协议的网络环境下,能够利用M-JPEG技术对USB摄像头的画面进行逐帧压缩,主要用于从单一输入端获取画面并传输到多个输出端[7]。

路由模块上的串口需与STM32采集端通信,因此ser2net串口参数设置与STM32采集端相同。ser2net会将串口数据通过WIFI网口发送给监测平台。头盔上的USB摄像头和采集端的串口与路由模块相连即可。由于需要接入主路由的无线局域网,因此在使用时需将Openwrt路由模块设置为客户端模式,此时路由模块相当于一个无线网卡,主路由会分配不同的IP地址来区分不同的采集端。系统中传输的主要有两种类型数据:视频数据和串口数据。视频流数据要求较高的实时性,少量数据的丢失不会造成较大影响,故采用UDP传输协议;串口数据发送的是采集端的传感器数据,要求较高的准确性和可靠性,故采用TCP传输协议[8]。为了区分这两种数据,在使用mjpg-streamer和ser2net时,还需要分别设置不同的端口。通过访问同一IP下的相应端口,监测平台就可获得画面与串口数据,如图3所示。

图3 OpenWrt路由模块传输示意图

3.2 HelmetLive APP

在有运营商4G网络的广域网使用场景,如消防巡检现场等。无线视频数传单元为广泛普及的安卓手机,手机中搭载了HelmetLive APP,该APP基于Android Studio开发,集成了腾讯视频云RTMP SDK与百度定位SDK。APP由推流与直播两个主要的Activity构成。推流是通过输出设备(如手机等)获得视频与音频的采样数据,并对其进行编码压缩,封装成一定格式后上传到服务器中。直播是根据相关协议类型向服务器请求并接受流信息,根据不同封装格式进行解码同步,将视频与音频呈现在观众面前。

推流采用RTMP发布协议,是为高层流媒体协议提供多路复用技术和打包服务的协议[9]。其主要特点是将视频与音频分割,以小数据包的形式进行传输。

推流Activity功能有:视频推流,蓝牙通讯,定位,Json数据上传;直播Activity功能有:视频播放、Json数据解析。

为了开发者使用方便,腾讯对该SDK进行了完善的封装。通过相应API及插件即可完成视频音频推流,为适应不同的网络状况,提供了分辨率、采样率等个性化选择。

绝大多数安卓手机都内置了GPS传感器,但该传感器在使用时搜索卫星信号时间长,在周围建筑物复杂的情况下定位不准,使用体验不够好。因此为提供精准的定位功能,使用了百度地图智能定位服务,该定位服务将手机中的GPS与运营商网络结合在一起,能够在1秒以内实现首次定位。依托百度位置大数据和高精尖定位技术,还可以进行快速有效的离线定位与室内定位。

使用时将安卓手机放置在头盔侧,打开HelmetLive APP。采集终端通过蓝牙模块将传感器数据传输给手机,APP则可获取画面、环境参数、位置信息。在连接运营商4 G网络的环境下,APP通过URL将视频画面推流至直播服务器,由直播服务器对内容进行分发;环境参数、位置信息由APP解析成Json字符串并上传,存储在云服务器数据库中以供调取。其基本流程如图4所示。

图4 HelmetLive推流流程图

3.3 云服务器与数据库

为实现云直播与环境参数实时上传与获取的功能,需要部署成熟的流媒体服务器架构与数据库,而在国内已有诸多互联网公司提供相关接入服务。这里本系统采用了腾讯的云直播服务实现终端画面的解析分发,该直播服务依托腾讯云技术平台,为使用者提供稳定快速的直播接入和分发服务,满足高并发和超低延时的应用要求。

腾讯云直播支持推流和直播两种功能,可以将正在推流画面的用户理解为一个频道,它们只需在专门的管理控制台注册生成相应的推流与直播URL,将相应URL输入到移动端APP即可。控制台除了创建频道,还提供查询、修改、流量监控等功能。腾讯云直播除了推流和直播两大核心功能以外,还提供内容审核、丢失恢复以及CDN加速等优化服务。

另外本系统在云端部署了Tomcat服务器,并在上面运行JavaWeb程序。在用户上传环境参数与坐标时,会解析上传的Json字符串并存入数据库。如果用户请求获取环境参数,会从数据库中获取参数并解析,然后发送给用户。

4 监测平台设计与实现

4.1 PC端监测平台

PC端用于局域网监测的使用场景,为用户提供了良好的交互界面,负责环境数据的接收、存储与曲线绘制,同时显示OpenWrt路由模块传来的摄像头画面。

在Visual Studio2012的开发环境下,利用.NET Framework的Windows Forms模块中的控件进行窗体程序开发,数据库选用SQL Server2008版本。数据的显示和接收如果采用单线程,容易造成软件界面无法响应,所以采用多线程设计,使程序执行效率更高、反应更快。线程功能方面:界面更新和操作响应由主线程负责;视频显示线程负责接收视频流并显示画面;串口数据处理线程负责接收OpenWrt传来的环境参数,并实时展示在用户面前[8]。从主路由获得OpenWrt路由模块分配的子IP,输入视频与串口通信端口,由HttpWebRequest类获得画面帧并在PictureBox控件中显示视频流。由Socket类与路由模块建立TCP通信,获得环境参数,利用chart控件在窗体程序中实时绘制相应曲线,存入数据库以供后续参考。其流程如图5所示。

图5 PC端监测平台流程图

4.2 移动端监测平台

HelmetLive APP在Android Studio的开发环境下,利用安卓5.0版本开发。移动端监测平台用于广域网的使用场景,整合在该应用的直播Activity中。

开发APP时,将腾讯云直播SDK导入到工程中。其中布局文件中TXCloudVideoView控件负责在两个Activity中展示摄像头拍摄的影像;TXLivePusher对象在推流Activity中负责完成推流工作,TXLivePushConfig决定推流时的参数配置,如分辨率、画面帧;TXLivePlayer对象在直播Activity中实现直播播放功能;TXLivePlayConfig则可设置播放模式、视频码率。为了更好实现低延时、清晰的直播体验,还可以通过设置监听控件来掌握网络状况、CPU占用率等信息。

直播采用FLV协议,只是在大块的视频帧和音视频头部加入一些标记头信息,在延迟表现和大规模并发方面都有很好的表现。播放地址从云直播管理平台获得,APP输入后,并访问云直播服务器即可播放正在进行作业的人员现场画面。其流程如图6所示。

5 系统测试结果与分析

针对此监测系统,对其采集端的灵敏度和数据传输的实时性和可靠性进行了测试。为简单模拟井道管廊等密闭的工作场景,采集端利用密封的铝箔采样袋作为测量环境[10]。将传感器部分放入袋内并封口,分批次向袋内注入一定体积的空气及甲烷。温度部分为操作方便,用吹风机对采样袋缓加热。

首先进行局域网场景测试,开启采集端并与OpenWrt路由模块连接。设备初始化完成后,登录主路由中查看路由模块分配的子IP与网络状态。这里将视频监控端口设为8080,数据传输端口设为2001,输入至PC端监测平台打开即可。如图7所示,可以看出路由模块被分配的子IP为192.168.99.181。监控视频清晰流畅,其传输帧率与分辨率为25FPS,640*480。采集端串口数据也显示在下方并可以看到相关传感器的检测曲线。

4G广域网场景测试,将路由模块换为安卓手机,同样开启采集端,蓝牙匹配成功。开启APP的推流界面并输入URL,即完成视频推流和数据上传。移动端平台用另外一台安卓手机打开APP的播放界面并输入播放URL便可收到画面与环境参数,如图8所示。从图中可以看到推流Activity通过蓝牙获取到采集端数据,利用百度定位SDK获得详细的位置信息,推流帧数为19FPS。监测直播Activity通过访问后台数据库也可观测到环境参数,播放帧数为14FPS,能够很好地满足用户使用。如果网络状况好,画面的帧数还能进一步提高。

图7 PC端监测界面图

图8 移动端推流与监测界面图

当然,本系统的设计上还有些许不足。比如,软件界面设计上还能更易用直观;将系统对外开放,以便其它开发者可以提出新的想法;进一步改善头盔的集成度与舒适度等。

6 结束语

本文针对重点行业领域安全信息化不足的问题,设计了一种多场景智能头盔监测系统。着重介绍了系统的架构与方案,通过功能分层,阐述了采集终端、数传单元、监测平台的设计与实现。采集终端以STM32为核心,集成在头盔中提高了便携性。环境参数与工作画面根据使用场景的不同,通过OpenWrt路由模块或安卓手机进行无线传输。监测平台也充分考虑了实用性,提供了PC端和移动端两种方式。本系统操作简单且界面友好,后期也有很好的扩展性,运行时易于人员维护及分析,降低了事故发生率。

猜你喜欢
环境参数串口路由
基于梯度提升决策树算法的鄱阳湖水环境参数遥感反演
数据通信中路由策略的匹配模式
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
路由选择技术对比
OSPF外部路由引起的环路问题
一种食用菌大棚环境参数测控系统设计
路由重分发时需要考虑的问题
MCS—51单片机中的多串口通讯技术的应用
基于ZigBee的多环境参数监测系统设计