APP下载

基于ZigBee无线传感网络的奶牛场有害气体监测系统的设计与实现

2018-08-03王博博李诗尧

数字通信世界 2018年7期
关键词:上位传感路由器

王博博,李诗尧,冯 妍

(西北农林科技大学 信息工程学院,杨凌 712100)

1 引言

从上世纪开始,科学技术在全球飞速发展,人们的日常生活也因为科技的不断进步而不断的发生改变,科技日新月异,不断有新的技术被研发,继而普及,应用在了人们的生活之中。21世纪以来,科技的发展更是迅速,国家也越来越重视,各种互联网科技应用普及的速度也逐渐加快,人们的生活已经离不开网络,Wi-Fi、无线USB、Bluetooth、ZigBee等也随着科技的发展达到了新的高度。相对其他通信设备逐渐升高着其复杂性与功耗成本,功耗更少,成本更低的ZigBee在无数的无线通信设备中“杀出重围”,广泛普及在各行各业。ZigBee应用范围主要环境监测、智能家居等方面,甚至在军事、医疗等方面也有广泛的应用,特点是可以实时监控网络覆盖范围内所有对象发送的信息。

物联网在21世纪之前还没有广泛普及,我国的物联网发展也只是处于摸索阶段,还没有出现相关的较为突出的物联网行业生产商,但是在进入21 世纪之后,因为整个国际上的物联网的发展,国内的物联网产品公司也雨后春笋般的发展起来了,如华为、华立、蓝科、千旸、聪明屋等公司,而如今,在市场上已经随处可见物联网产品,无线传感网络的应用普及的范围之广、速度之快也是有目共睹。

在众多的气体检测方式中,多数的检测设备都具备着高灵敏度与高准确度,但是它们同时也存在着体积庞大、不能现场监测等一系列的缺点,因此其在某些环境中的应用也受到了很大的限制。为了有效地解决这一系列的缺陷,本系统利用了三种电化学传感器来采集有毒有害气体的浓度信息,其轻巧的体积,较低的成本,可现场监测等优点得到了充分体现,系统同时采用了带有TI公司的CC2530射频模块的ZigBee节点建立无线传感网络,使得各个节点之间可以利用无线网络进行数据传输,有效地解决了不能实时监测、不能远程监测等一系列的气体监测相关的问题,通过该系统进行有害气体的监测,达到了实时监测、远程监测的目的,同时也具有良好的实用价值和使用价值。

2 系统硬件设计

本系统可使用的ZigBee无线传感器网络可分为星型网络、树型网络、网状网络三种。由于在奶牛场中需要监测的范围较大并且所有的监测点都比较固定,因此本系统选择组建树型无线传感网络,其网络拓扑结构图如图1所示。本系统所使用的主要硬件主要有CC2530无线单片机和TGS2611、MQ136、MQ137传感器以及供电模块组成。系统所采用无线传感设备开发板是搭载TI公司的ZigBee新一代Soc芯片CC2530的ZigBee开发板。相对于CC2430单片机而言,CC2530单片机拥有更大的存储容量,并且其内部内置了ZigBee协议,降低了ZigBee的成本。

ZigBee无线传感网络负责奶牛长中三种有害气体浓度的监测与节点之间气体浓度信息的传输。系统中的气体采集模块负责采集奶牛场中有害气体的浓度,浓度信息通过ZigBee无线网络进行节点间的相互连接。树型的ZigBee网络由协调器、路由器、终端三种节点组成:作为树型网络中的根节点的协调器负责ZigBee无线传感网络的建立,并对其进行组织与管理;作为根节点或上一级路由的子节点的路由器负责将ZigBee网络数据的转发至协调器或者是其他路由器;连接着三种有害气体传感器的终端节点作为整个ZigBee网络的叶子节点,负责采集有害气体并发送其浓度信息。

图1 网络拓扑结构图

2.1 气体采集模块

气体采集模块主要由TGS2611、MQ136、MQ137三种分别对甲烷,硫化氢,氨气三种气体具有高灵敏度的有害气体传感器与无线传感网络中的终端节点构成。

在本系统中,通过使用杜邦线将传感器与终端节点指定引脚进行连接(如图2所示)构成气体采集模块,该模块中主要利用了终端节点的P0_6,P0_7,P0_0 三个引脚分别连接了MQ137、TGS2611、MQ136 三个传感器的A-out接口,通过在终端节点烧写程序实现了将传感器检测到的电信号转换为气体浓度数据并进行传输,其中气体采集模块实拍图如图3所示。在终端节点的硬件开发板中,为了便于使用设计了更多的特有引脚接口,如图4中标出的引脚,即与J6板中的对应编号的引脚使用的是一致的电路,故可以使用图中的引脚。当奶牛场中存在有害气体时,对应的有害气体传感器的电导率会随着空气中有害气体浓度的增大而增大,气体采集模块的关键就是找到电导率与检测到的气体浓度的关系,并且设计出可以将传感器的电导率转换为该气体浓度的电路。

在气体采集模块中,传感器节点的VCC接口连接终端节点的3V3引脚,GND接口连接终端节点的GND接口,A-out接口与设置的指定终端节点引脚连接,即MQ136的A-out接口连接终端节点的P0_0引脚,MQ137的A-out接口连接终端节点的P0_6接口,TGS2611的A-out接口连接终端节点的P0_7接口。下面是数据采集模块主要流程:

图2 气体采集模块连接引脚图

图3 气体采集模块实拍图

图4 终端节点引脚

(1)终端节点上电,通过 HalAdcRead(HAL_ADC_CHANNEL_X,HAL_ADC_RESOLUTION_Y)函数读取与终端节点连接的传感器的ADC。其中参数HAL_ADC_CHANNEL_X表示信道,X表示要设置的引脚编号,参数HAL_ADC_RESOLUTION_Y表示分辨率,Y可设置为8、10、12、14,在本系统中使用的分辨率为14位。

(2)判断ADC采样值是否大于8192(采样值最大是8192)。当ADC的采样是大于8192时,表示出错,则给出错误提示。否则执行第三步。

(3)当ADC的采样值小于8192时,将传感器的参考电压取3.3V,利用ReadGasData()函数读取传感器引脚上的ADC转换值。

(4)将转换后的ADC值转换为字符串形式,即使用下列方式将ADC转换值转换未字符串形式:

str_adc[9]=’0’+((adc%1000)/100);

str_adc[10]=’0’+(((adc%1000)%100)/10);

str_adc[11]=’0’+(((adc%1000)%100)%10);

str_adc是一个类型为byte的数组,将str_adc通过发送函数发送,即完成了气体浓度数据的采集。

2.2 无线网络数据传输模块

本系统中的ZigBee无线网络数据传输模块由连接有害气体传感器的终端节点、路由节点以及协调器三部分组成。上电之后的协调器节点会自动建立ZigBee无线传感网络。无线传感网络在被创建之后即允许多个子节点加入网络;路由器负责将有害气体浓度信息在无线传感网络中的各个节点之间进行传输。它即可以连接协调器并作为协调器的子节点,也可以连接其他路由器作为其他路由器的父节点或者是子节点;协调器节点在每一个无线传感网络中都是独一无二的,它负责接收由路由器或者是终端节点传输来的气体浓度信息。

协调器建立网络的过程如下:

(1)当协调器上电以后,系统会进行硬件设备的自动初始化并建立ZigBee无线传感网络,当网络成功建立,协调器进入网络扫描状态,检测是否有子节点发送来的加入网络请求,如果存在加入网络的请求,则协调器进行请求处理。

(2)当协调器的子节点上电后,系统调用ADOInitDevice()函数进行设备初始化,并设置初始化事件,之后调用ADO_StartService()函数,在网络层中如果调用了发现加入网络请求函数,则协调器进行请求处理并将处理响应返回给子节点,子节点接收响应之后设置设备启动事件并进行执行,进一步设置ZDO状态改变事件进行网络状态更新。

(3)子节点向用户发送ZDO状态改变事件,当用户收到ZDO状态改变事件,根据状态执行发送数据函数,在网络中进行数据传输。

在数据传输的过程中,主要流程如下:

(1)首先调用osal_msg_receive()函数,通过在消息队列中接收消息。

(2)通过SampleApp_Send_ADC_Message()函数将接收到的数据通过串口发送到PC端,通过上位机进行数据的显示。在函数SampleApp_Send_ADC_Message(void)中,调用了AF_DataRequest()函数进行数据传输。

在AF_DataRequest()函数中,主要有以下参数:

参数名 参数类型 参数含义*dstAddr *afAddrType_t 目的地址结构体变量(发送目的地址和端点地址以及模式)*srcEP endPointDesc_t 设备端点描述符cID uint16 集群号Len uint8 发送数据的长度Data uint8 存放发送数据的数组SampleApp_TransID uint8 任务ID号AF_DISCV_ROUTE uint8 有效位掩码的发送选项AF_DEFAULT_RADIUS uint8 传送跳数

在本系统中,我们使用点播的方式进行数据传输,即当终端节点的父节点为路由节点时,终端节点的数据只发送至该节点的父路由节点,不会发送到其他节点,所以在设置AF_DataRequest()的参数时。

(1)设置了*dstAddr为SampleApp_P2P_DstAddr。

(2)设置*srcEp为SampleApp_epDesc。

(3)设置cID为SAMPLEAPP_P2P_CLUSTERID。

(4)设置Len为需要传输的数据的长度。

(5)设置Data为需要传输的数据即上文中提到的str_adc。

利用这些参数的设置,当AF_DataRequest()的返回值等于afStatus_SUCCESS时,数据进行发送。利用AF_DataRequest()函数,实现了在ZigBee无线传感网络中将终端节点采集的数据通过路由转发,最后传输到协调器的过程。

2.3 节点供电模块

不同于其它需要不管更换电池的无线传感网络节点,本系统中的无线传感网络节点使用了可循环充电的蓄电池作为节点供电的主要能源,系统所采用的蓄电池可循环进行充电,且其电压范围为7.2V-7.5V,而ZigBee节点的额定电压为5V,故系统中使用了降压模块进行电压降压处理,将蓄电池的电压降低至在系统节点中可用的电压范围。图5所示系统供电模块的主要电路图,图6为供电模块的实拍图。在使用降压器时,根据实际所用电压可灵活调节输出与输入电压值,降压器的示意图如图7所示,该降压模块主要调节流程如下:

(1)调节变压器使其进入变压器输入输出电压调整模式。

(2)根据系统中节点对电压范围的需求调节变压器的输入电压以及输出电压。

(3)当输入电压与输出电压均设置完毕后保存所有参数,退出变压器输入输出电压调节模式。

图5 节点供电模块设计图

图6 供电模块实拍图

图7 降压器示意图

3 系统软件设计

基于ZigBee无线传感器网络的奶牛场有害气体监测系统中软件模块主要分为上位机与移动端App。PC端上位机负责显示协调器接收到的数据。当协调器通过串口连接了PC端的串口,打开上位机以后,可选择已经存在的串口,打开串口后,若协调器接收到了由路由节点或者终端节点传输过来的数据,则上位机会依次显示每一条传输过来的数据。当PC端的数据库服务处于开启状态,则上位机会以指定格式将接收的数据写入数据库。

移动端App负责用可视化方式显示终端节点监测到的气体浓度的动态变化,同时支持查询历史气体记录以及设置浓度阈值功能。

3.1 上位机设计

PC端上位机主要采用QT Creator开发平台进行开发。上位机有数据显示区,同时也可以设置串口、波特率、数据位、校验位、停止位。上位机也支持将连接数据库功能,在协调器通过串口方式将数据信息传输PC机时,上位机会显示传输过来的数据,当上位机与MySQL数据库连接后,数据就会自动写入数据库。上位机界面业务流程图如图8所示:

图8 上位机业务流程图

数据显示区显示的内容连接PC端的协调器接收到的终端节点通过传感器采集到的数据浓度,数据格式为Rx:节点编号 气体名称:气体浓度值 气体浓度单位。上位机可直接连接MySQL数据库,当连接数据库后,会将接收到的数据进行格式解析,并插入数据库中。左下角状态栏显示数据库连接状态以及端口状态。如图9为上位机界面。

图9 上位机界面

3.2 移动端App设计

移动端App采用Android开发,主要开发工具为谷歌公司的Android Studio。Android Studio专门用于谷歌的安卓操作系统开发,内置于JetBrains 公司的IntelliJ IDEA软件和专门的Android开发插件,官方提供了Windows版本、Linux版本、Mac版本,该开发工具具有以下特点:

a)基于Gradle的构建支持;

b)Android特定的重复机制和快速修复机制;

c)Lint工具来捕捉性能;

d)基于模板的向导来创建常见的设计与组件;

e)支持构建Android Wear应用程序;

f)内置对Google云平台的支持;

本文使用Android Studio开发的移动端App主要功能如下:

g)用户注册、用户登陆功能(如图10所示)

h)实时监测节点气体浓度功能(如图11所示)

i)查询历史监测信息(如图12所示)

j)设置气体浓度阈值功能(如图13所示)

图10 登陆注册

图11 历史节点监测

图12 实时监测

图13 阈值设定

4 系统实验与结果分析

为测试系统数据采集以及组网效果,假设该网络由网关节点、一个路由器节点、三个连接传感器的终端节点构成一个树型网络,利用节点的LCD显示屏观察测试结果。

系统中LCD显示屏显示EndDevice的节点为终端节点,显示Router的为路由器节点,显示ZigBee Card的为协调器节点。系统中各个节点上电后,网关节点会建立一个ZigBee网络(如图14)所示,其自身分配了一个16位的网络地址FFF1,网关节点建立网络后会处于允许节点加入状态,启动路由器节点后,网关节点为路由器节点分配一个网络地址(如图15),并且路由器节点的Parent为0,表示其父节点为协调器,同时路由器节点为终端节点分配网络地址(如图16),EndDevice后面的16位地址即为终端节点的网络地址,终端节点的Parent为路由器节点的网络地址,表示终端节点的父节点为路由器节点。终端节点LCD显示屏第三行的内容表示节点编号、所监测的气体名称以及气体的实时浓度值。

图14 网关节点

图15 路由器节点

图16 终端节点

同时,当协调器通过串口连接PC端,打开上位机并打开串口(如图17)所示,就会看到上位机依次显示各个终端节点传输过来的数据,并且当数据库连接成功后会将数据自动插入数据库中,终端节点每隔5秒钟发送一次数据(如图18)。

图17 上位机

当数据写入数据库后,我们打开移动端App,可查看终端节点中气体浓度的变化过程(如图19)

测试结果表明,网关节点成功建立了一个ZigBee树型网络,并且路由器节点与终端节点成功加入的ZigBee网络中,且终端节点成功采集了传感器监测到的数据并将数据传输到了协调器,协调器接收到了数据并通过上位机进行了显示与数据库插入,且移动端App也成功显示出了气体浓度的变化。

图18 数据库数据

图19 App监测显示图

5 结束语

本文设计了一套基于ZigBee无线传感网络的奶牛场气体监测系统,主要成功实现了无线传感网络的搭建,对奶牛场中有毒有害气体的实时监测。本系统最终将终端节点采集到的气体浓度信息传输至PC端的上位机。上位机不仅实现了对奶牛场中有害气体浓度的实时查询,也实现了浓度数据在MySQL数据库中的存储。本系统也设计了安卓手机端App方便用户实时查看数据库中存放的气体浓度信息。本系统通过实验调试和在奶牛场的实地认证达到了项目的设计要求并且实现了对奶牛场中有害气体进行实时监测的功能。

猜你喜欢

上位传感路由器
《传感技术学报》期刊征订
新型无酶便携式传感平台 两秒内测出果蔬农药残留
买千兆路由器看接口参数
维持生命
路由器每天都要关
路由器每天都要关
IPv6与ZigBee无线传感网互联网关的研究
特斯拉 风云之老阿姨上位
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统