李少伟,王喜喜,傅 诗
(江汉大学 数学与计算机科学学院,武汉 430056)
环境监控系统广泛应用于实验室、工厂、农业以及军工等各个领域.设计完善的环境监控系统可以大大减少灾难事故的发生,从而间接提高安全生产效率.文献[1]提出了一种基于Android 和Zigbee 的农业环境监控系统,可以实现移动端对环境的实时监控.但由于其所使用的传感器与单片机之间采用固定的RS232 接口连接,因此整个系统的可扩展性较差;梁灼永、佟伟等人在论文中介绍了若干专用环境监控系统[2,3],其最大的特点就是针对特定的系统有完善的监控功能.但由于系统专用性强,无法实现大范围推广,同时不具备远程访问能力;文献[4,5]将WIFI 及网络技术引入系统中,但最终仅仅实现了局域网内的访问,同时传感器数据接口采用了与文献[1]相似的方法,因此扩展性较差;文献[6]采用了数据库技术,将传感器节点数据存放于数据库中,可以方便对数据的各种操作.但是该文中将传感器直接与服务器连接,这种做法在工程实践中几乎没有实用性;文献[7]中魏访将Zigbee 技术与传感器相结合,解决了传感器部署的难题.但由于该系统仅仅实现了温湿度监控,而且没有引入必要的通信协议,导致无法形成复合传感器网络,降低了系统可扩展性,同时其监控端布置于PC 机,无法实现远程监控.
综合考虑以上系统中存在的不足,本文提出了一种基于Zigbee 无线传感网络与移动数据访问技术的环境监控系统.为了实现在不增加接口硬件的情况下对不同传感模块的读写,该系统利用Zigbee 模块内置的51 单片机系统模拟不同传感网络的接口协议,从实现对传感模块的数据读取,提高了系统的可扩展性;在系统的设计过程中引入了ZStack 协议栈以及移动端访问技术,实现了对环境的温湿度、烟雾、漏水检测等六个方面的监控;利用数据库技术强大的存储能力,将获得的数据存储于其中,方便任意网络设备对环境系统的远程监控.该系统在提高系统集成度的同时,简化了传感器的部署,提高了系统可扩展性,实现了移动端对监控系统的远程访问.
如图1所示为环境监控系统的结构框图.
图1 系统结构框图
从图1可知,整个系统由Zigbee 无线传感网络、网关、数据库服务器以及客户端组成,其组成与功能如下:
(1)Zigbee 无线传感网络包含节点传感器与协调器.其中的节点传感器由传感器模块与基于CC2530 的Zigbee 无线数传模块组成.CC2530 模块中内建有51 单片机系统,可以实现对传感器数据的采集与打包,并通过其中的无线Zigbee 模块定时发送至协调器;协调器则接收来自传感器的数据,并将数据传送至网关.由于ZStack 协议栈的存在,因此节点传感器的数量可动态增减.
(2)基于Cortex A8 的网关上运行有一套Linux 操作系统.该系统一方面通过串口接口来自协调器的数据,另一方面则将数据通过网络发送至数据库服务器.
(3)数据库服务器首先接收来自网关的传感器数据,然后通过特定的协议对数据包进行解析并标以时间标签,最后将数据存储于表中,供远程客户端访问.
(4)客户端程序通过TCP/IP 协议连接到数据库服务器上的数据服务程序,实时获取当前环境信息.
为了简化软硬件设计上的难度,本系统中所有的无线数传模块均具有相同的硬件结构,同时引入ZStack 协议,并对数据传输格式进行了定义,实现了基于Zigbee 的无线传感网络.如图2所示为基于CC2530 的无线数据传输系统硬件电路图.
由图2可知,CC2530 模块共引出19 个I/O 引脚,这些引脚可全部配置为通用I/O 方式或者根据应用的需要,将其中的部分配置为模拟输入引脚.对于本系统而言,所选用的传感器接口共分为三种,分别是普通I/O 口、IIC 接口以及模拟数据接口.因此,我们可以利用CC2530 模块中的单片机系统直接实现对I/O 端口以及模拟数据的读取.但是对于IIC 接口,则需要利用普通I/O 口模拟实现IIC 协议[8].
由于本系统中引入了TI 公司的ZStack 协议栈技术,因此Zigbee 无线传感网络中的节点数传模块与协调器均具有相同的硬件结构以及相似的软件结构.如表1所示为ZStack 协议栈中用户需要修改的关键模块.
在编程实现表1中所有模块功能的前提下,所有基于ZStack 协议栈的节点传感器均可以动态加入或者撤出整个传感网络.而且其传输过程对程序员而言完全透明,大大降低了数传模块的软件开发难度.
在CC2530 模块中并未集成IIC 接口,因此需要利用普通I/O 接口模拟IIC 总线协议中的SCL 和SDA 接口,从而实现对传感器数据的读取.总体而言,IIC 总线的工作流程包括以下几个方面:
图2 基于CC2530 无线数传模块
表1 ZStack 关键模块
(1)起始和结束.如图3所示为IIC 总线的起始和结束时序图.当总线处于空闲状态时,且SCL 处于高电平,SDA 线上的下降沿表示起始信号;当总线上的数据传输完成后,且SCL 处于高电平时,SDA 线上的上升沿表示结束信号.
图3 总线起始与结束
(2)数据有效性.如图4所示为总线上数据传输的时序图.在数据传输过程中,一旦SCL 处于高电平状态,SDA 上的数据则必须保持稳定.
图4 总线数据有效性
(3)应答.当主机向从机发送完一个字节的数据后,需要等待从机返回一个应答信号,以确认从机是否成功接收到数据.其中低电平0 表示应答,1 表示非应答.如图5所示.
图5 应答信号时序
根据上文所述,本系统中实现了对六种不同种类传感器数据的读取与监控.为了防止不同传感器数据在发送过程中由于产生冲突而出现的数据混乱以及丢失,所有数据在发送前必须按照协议进行编码.接收方在获取数据后,则需要按照规则进行解码.如表2所示为数据编码协议.
表2中有下划线的部分表示实时读取的传感器信息,除协议结尾0x10 为16 进制外,其余部分均采用ASCII 码表示.
表2 数据编码协议
本系统中所采用的服务器运行有Windows 操作系统,因此选择SQL Sever 数据库软件来存储获取到的传感器数据信息.由于所传输的数据较为简单,因此数据库中仅建立有一张表,如表3所示为表中的列.
表3 数据表
整个系统的软件设计分为四个部分,分别是传感器节点(含协调器)、网关、服务器以及客户端.各部分软件工作流程如图6所示.
为了验证该系统的实用性,同时分析系统的运行效率,在江汉大学交叉科学院与数学与计算机科学学院的协助下,本系统最终部署于江汉大学高性能计算实验室.如图7所示,为传感器部署图.其中圆圈内为传感器节点.
由图7可知,该实验室内部已安装部署有烟雾、温湿度等传感器节点用以监控室内环境.但其采用有线的安装方式,无疑会增加安装难度同时限制了其扩展性;采用无线节点实现数据的读取与传输,恰恰可以克服上述缺点,同时能灵活实现节点数量及种类的改变.
本系统无线部分由6 个传感器节点以及一个路由节点组成.为了测试整个网络的扩展性、抗干扰性及数据传输速率,网关节点会将收到的信息如图8所示实时显示在屏幕上.用户只需要观察收到的信息是否有序,即可判断无线收发是否正常.
本文采用如表4所示的数据设定数据发送间隔(见表1).得到的结果如表4右侧所示.
根据CC2530 用户手册[8]可知,该芯片最大传输速率约为30 kbps.表2所列举的数据编码协议最长不超过21 个字符,即0.7 ms 即可发送完毕.但由于ZStack协议栈的存在占用了大量资源,因此数据发送间隔不能太小.
图6 系统工作流程
图7 传感器部署图
图8 网关数据
表4 速率测试数据表(单位:ms)
如图9所示为基于Android 的移动客户端监控软件.软件运行后会提醒用户输入服务器IP 地址以及数据转发软件所占用的端口号,以便与数据转发软件建立连接,从而获取传感器数据.由于当前系统主要用于内网测试,因此并没有加入身份验证功能.
图9 软件登录
若上述信息输入正确,则软件跳转进入如图10所示的运行界面.在运行界面中,弧形进度条表示当前粉尘量,同时辅以优、良、差的文字进行描述;云朵下方的雨滴图形表示是否漏水有雨滴渗入;云朵图案右方为烟雾状态;温度和湿度采用文字的形式告知用户.
图10 软件运行界面
本文提出了一种基于CC2530 模块的Zigbee 无线环境监控系统.该系统利用CC2530 内部的51 单片机作为主控芯片,模拟外部传感器的接口协议,从而在不增加接口器件的情况下,适应不同传感设备的读写需求,增强了整个系统的扩展性;在完成对数据的采集后,该主控芯片对环境信息进行采集、编码以及传输,同时引入了ZStack 协议,降低了传感网络中控制软件的复杂程度;通过数据库服务器的建立,实现了对数据的动态、远程访问.与现有技术相比,该系统在网络动态布局、扩展性以及软件灵活性方面有了一定的改善.在下一步的工作中,可以尝试对多个场所的监控系统进行互联,建立多层次网络结构,从而可以实现对更大范围的环境进行有效监控.