1 系统概述
1.1 系统构成及部署
基于物联网技术的嵌入式矿下环境监测系统,是基于PC、Cortex—A8及Cortex-M0等设计,依托各项互联网、物联网、传感器等技术实现,实现各个矿井井下环境的远程监测、人员位置跟踪,以实现最大限度的矿井环境监测。
系统分为三大模块:服务器端(PC)、数据处理平台(A8)和远程环境监测终端(M0)。
本系统在矿区的安装布置方式如图1所示。
煤矿的矿区特点是单个矿井纵深长,而范围却比较小,各个终端和数据处理中心进行连接时必须使用级联的方式,各个终端相互之间进行逐级上报,M0采集模块完成数据采集,通过ZigBee通信上报到A8前端数据处理中心,然后A8前端模块集中将数据通过WEB方式提供给远程PC后台。
1.2 系统功能描述
系统实现的基本功能主要包括:M0终端安装在矿井的纵深方向,各个M0终端通过ZigBee进行级联,实现整个矿井的分布式数据采集;M0终端实时采集矿下环境数据:温度、湿度、瓦斯浓度、RFID刷卡数据;最靠近数据处理中心的M0终端、通过ZigBee通信,将采集到的环境数据及刷卡信息传送给数据处理中心;数据处理中心(A8)接收到各个M0终端采集的数据后进行统一处理(存储、转发、产生报警信息、更新到核心服务器端);数据处理中心(A8)通过GPRS模块向绑定的手机发送报警信息;数据处理中心(A8)构建嵌入式WEB服务器,用户通过网络和PC进行监控,并进行相应的参数设置;服务器PC端为总的数据处理后台,通过网络连接到各个A8数据处理中心,下载各个数据中心数据以进行二次数据处理。
1.3 系统通信方式
在本系统中,三个模块间使用了以下几种通信方式。
PC后台和A8数据处理中心之间:使用WEB服务的方式,由A8数据处理中心构建的嵌入式WEB服务器,在模块内实现简单的控制网页,PC通过普通网页的方式进行模块的访问和控制。
A8数据处理中心和M0数据采集模块之间:使用ZigBee短程无线的方式进行数据的传输和模块的控制。
A8模块和手机之间:A8模块连接一个GPRS模块,目前主要使用短信的方式,在紧急事件发生时,向用户手机发出短信;同时GPRS模块也可以提供数据连接方式,实现手机端的WEB访问。
各个M0数据采集模块之间:使用ZigBee短程无线通信,在深井内的M0模块由于距离过长,无法和A8进行通信,所以必须使用级联的方式,通过相邻的M0模块进行逐级上报。
2 数据处理中心(A8)
基于Cortex-A8的数据处理中心模块,需要实现与PC的WEB连接、与各个采集模块的ZigBee通信、与手机的GPRS通信,为此使用基于ARMv7的Cortex—A8内核的高性能嵌入式处理器,构建嵌入式Linux系统,并在此基础上构建嵌入式WEB服务器以实现远端连接,移植QT图像界面以实现本地化的简单控制。
2.1 系统架构
数据处理中心模块为一个完整的嵌入式Linux系统,硬件设计上使用三星公司基于Cortex—A8内核ARMCPU S5PC100芯片作为主处理器,扩展SDRAM、Flash构成一个高性能的嵌入式控制板。在此基础上使用Linux操作系统、QT图形界面,以及BOA嵌入式WEB服务器,提供网页连接方式。
模块开发过程中,使用了华清远见公司的S5PC100开发板进行软件开发和系统评估,在开发板的基础上通过UART串口扩展了ZigBee和GPRS模块,硬件架构如图2所示。
作为一个嵌入式系统,系统的设计充分考虑了软件的分层和模块化设计方式,在评估板上移植了嵌入式Linux作为应用系统,并为各个部分的硬件模块编写相应的Linux驱动,构成一个嵌入式Linux开发平台,在此平台上再进行应用程序的开发,整个系统的层次结构如图3所示。
2.2 平台设计
这里所说的平台,是在S5PC100开发板上构建一个嵌入式Linux平台,分为内核层和驱动层两个主要部分。其中,内核层完成Linux内核的装载、启动、根文件系统的挂载,包括u—boot启动器、Linux内核、rootfs文件系统、yaffs文件系统,而驱动层则是GPRS、LED、ZigBee等外部硬件设备的硬件驱动。
系统启动时,从NAND Flash中启动u—boot,通过u—boot从NAND Flash中装载Linux内核镜像,并挂载rootfs文件系统供内核使用。yaffs文件系统用于管理NAND Flash的余下分区,作为数据存储使用。
2.3 应用设计
(1)系统架构
数据处理中心(A8)需要不停读取各个采集终端(M0)采集到的环境信息,根据环境信息决定是否产生报警信号(发短信、网页通知、声光报警等)并进行数据的保存。同时,还要响应PC后台的网页请求,提供后台PC的无线访问。
系统共设计了5个进程,描述如下:
①主进程负责采集数据,并做主要的事务处理,产生的数据及网页报警信息通过共享内存和QT进程,记录进程并交互;
②ZigBee进程负责按设定好的时间间隔从各个分板将数据读回来,并通过消息队列通知主进程;
③QT进程负责人机界面交互,从共享内存中读取数据,显示于LCD上,并处理用户输入,响应用户操作;
④数据记录进程,从共享内存中取得各项数据记录于数据库中;
⑤CGI程序为独立的可执行程序,从共享内存中读取数据,响应网页操作,并将网页设置的值通过共享内存传递给主进程,进行事务的处理。
(2)HTML和QT界面设计
网页页面主要用来显示相关信息,并提供设置选择是否产生相应的报警信息。从安全角度考虑,进入系统之前,必须进行用户校验。用户登录进入系统后,可以通过左侧选择查看各个终端,右侧设计为实时切换各个终端的数据显示,如图4所示。
除了登录检查和监控,系统还提供了历史数据查看功能,如图5所示。可以查看前几天的数据,类似于监控界面,通过左侧的选择框选择相应的终端,右边实时切换至相应的信息显示;此外增加了图表方式进行连接的曲线显示。
3 数据采集终端(M0)
实际安装在各个采集点的数据采集终端,在夜间断电时还要能够监测矿井里各个点的环境数据,使用电池和电力交叉供电的方式。基于Cortex—M0内核的LPC11C14微处理器作为主控芯片,它是一个超低功耗的ARM内核CPU,可以在保证系统功能的情况下,实现在电池供电状态下的较长待机时间。
3.1 系统架构及功能描述
数据采集终端M0,安装于矿井的各个部分,负责各个点的环境监测与数据上报,整体架构如图6所示。系统功能包括:环境信息采集,即如温度、湿度、瓦斯浓度;RFID数据采集,每个M0终端可以连接一个RFID读卡器,用于工人位置的简单定位;辅助信息采集,模块本身电池电量、Axis_3三轴加速度(在发生地震时,由于不平衡,震动而触发);数据上报,通过ZigBee模块将采集的数据上报到A8前端数据模块进行统一处理;异常报警,正常情况下,模块的异常告警由A8模块进行控制,在异常产生时,可以独立生产异常报警信息;运行状态指示,简单的LED指示系统当前运行状态(是否在工作)等。
M0终端需要采集环境的湿度、温度、瓦斯浓度及其他相关信息,并处理ZigBee通信。
主要包括:采用DHT11传感器对温湿度信息进行采集;采用MMA7455L传感器采集三轴加速度;采用CY14443/SPI对RFID信息采集;采用ADC 3通道对电池电量信息采集;采用ADC0通道对电位器信息采集;采用RS232接口的集成ZigBee模块进行无线通信。
3.2 M0终端工作流程
在本系统中,M0作为分布式模块安装于矿井的各个监测点,负责采集各个环境信息并通过ZigBee模块进行上报,主要包括4个处理流程:ZigBee接收中断处理、RFID中断处理、秒中断处理和主流程。
首先,系统上电初始化M0终端设备,系统定时器、GPIO口、SPI、UART、I2C总线等设备,配置系统定时器为1ms,配置中断处理函数为1 s,第一次采集信息。
然后,主程序进行轮询判断,在没有外部中断(ZigBee接收中断,RFID刷卡中断)情况下进行数据的采集,尝试与主站A8模块进行通信。在通信未成功之前,M0终端设置为自动报警模式(自我环境监测、异常报警等)。
当有外部RFID时,其他数据正常采集,RFID中断函数同时对磁卡数据采集校验,并通过ZigBee模块发送给A8模块。
当有外部中断ZigBee接收中断时,中断处理函数接收A8服务器发过来的命令,执行不同的操作,同时将M0终端设置为受控模式。
从安全稳定的角度考虑,在A8模块异常、M0终端无法和A8模块通信超过30 s时,M0终端将会切换到自动模式,自己进行异常检测,根据设置好的参数判断是否产生报警信息(声光报警)。
结语
整个系统的构建比较复杂,涉及硬件设计、ARM内核编程、系统bootloader、Linux内核移植、驱动程序、嵌入式Linux应用编程、网页编程、AJAX网页动态加载技术、数据库编程等多各项技术的综合应用。
在系统的构建过程中,必须保持清晰的模块化设计,并且在模块分布架构前,必须设计好整个数据流,根据数据流来进行模块的划分与交互,单个模块的技术应用并不复杂,整个系统的实现与架构是设计的难点。
目前,本设计已经实现了整个系统的基本框架,完成了整个系统的数据流闭环,需要完善的是根据实际的使用情况改善用户体验度,例如网页的操作模式、工人井下操作的便利性等。