段锋锐,石军锋
(西南大学 工程技术学院,重庆 400716)
随着我国设施农业技术的不断发展,温室的种植面积不断扩大,对温室大棚内的温度、湿度及光照强度等参数进行实时准确测量和调节至关重要[1]。传统的温室数据系统采用RS485或CAN总线等有线的方式传输数据[2]。有线的方式存在布线复杂、灵活性和可扩展性低、安装以及后期维修困难、成本高等问题[3]。因此,为了解决有线传输存在的问题,无线通信技术不断被应用到温室农业设施之中。
文献[4]将WiFi技术应用到温室监测中,虽然实现了温室监测,但是存在功耗大、成本高等缺点。文献[5]中将蓝牙技术应用到温室温度检控系统中,虽然实现了温室温度检控,但是存在协议复杂、功耗大等缺点。ZigBee技术具有协议简单、传输可靠性高、功耗低、自动动态组网自动路由、灵活性高、可扩展性强、实现成本低、实现相对简单等特点[6]。因此,为了解决传统温室数据采集监控系统中存在的布线复杂、灵活性不好、成本高等问题,设计了基于ZigBee技术的实时数据采集系统,改变了传统的有线数据采集的方式,避免了布线的麻烦,降低了功耗和成本,更具灵活性和可扩展性。观测者可以通过上位机掌握组网形态以及各节点采集的温度以及光照强度数据,从而方便管理者对温室环境进行调整。
系统主要由ZigBee传感器节点、ZigBee协调器节点以及上位机3部分组成,系统结构如图1所示。路由器节点和终端节点统一称为传感器节点,传感器节点主要负责采集数据和转发。协调器节点通过RS232与上位机相连,负责建立和维护ZigBee网络、传递上位机命令给传感器节点以及返回采集的数据给上位机。上位机主要负责发送命令,并通过自主开发的上位机界面监测温室环境的各种参数。
图1 系统结构示意Fig.1 Structure schematic diagram
图2 CC2530外围电路原理Fig.2 Peripheral circuit schematics of CC2530
系统硬件设计包括协调器节点的硬件设计和传感器节点的硬件设计,因为2种节点在硬件设计上大部分内容相同,所以不对2种节点进行赘述,主要对ZigBee传感器节点的核心模块外围电路进行设计。ZigBee传感器节点采用深受业界好评的CC2530作为核心模块。如图2所示为设计好的CC2530外围电路原理图,包括电源接口电路设计、LED电路的设计、天线匹配电路的设计,晶振电路的设计、外部传感器电路的设计。图2中C3~C10为去耦电容,L1、C1组成滤波电路滤波。 LED1、LED2阴极分别与P1.0、P1.1相连,阳极接3.3 V电源。采用巴伦天线匹配电路。外接1个32 M晶振和32.768 k晶振,C19、C20、C21、C22分别为他们的去耦电容。 光敏传感器PDV-P9003-1接到P0.0,C16为去耦电容,R4为负载。温湿度传感器SHT11的SCK引脚接P1.5,DATA引脚接 P1.6,GND接地,VDD接 3.3 V的VDD,C17为去耦电容。
系统采用了全球领先的嵌入式系统开发软件IAR7.51作为软件开发平台,选择了业界领先的TI公司开发的Z-Stack作为协议栈,选用了微软公司的C#2010作为上位机程序开发平台,设计了组网、数据帧格式以及数据采集流程,开发了上位机程序。
组网包括ZigBee协调器节点建立网络和ZigBee传感器节点加入网络2个过程。ZigBee协调器节点建立网络时首先初始化硬件设备,然后执行能量扫描和主动扫描,选择最优信道建立网络,选择1个唯一的PANID,并设置相应的PIB参数允许传感节点加入网络,最后选择0x0000作为协调器的网络地址。
ZigBee传感器节点初始化硬件设备后,就会执行主动或被动扫描,扫描过程中得到PANID等网络参数后,向协调器节点发送1个关联请求命令包,传感器节点收到协调器的应答后紧接着向协调器节点发送1个数据请求命令包,协调器收到数据请求命令包后一般情况下会发送关联响应包给传感器节点,传感器节点收到后立即向协调器回复确认帧,最后在PIB中保存协调器分配的的网络地址以及协调器节点和传感器节点的扩展地址,这时就加入了网络。当所有传感器节点加入网络后就完成了组网。
系统设计了一个储存加入网络节点信息的结构体NodeList放在协调器中,如图3所示。当有节点加入了网络时,就会将加入的节点的信息保存在NodeList中,与上位机程序中节点建立地址对应关系,这样就能更准确地获取网络拓扑结构。
图3 NodeList示意Fig.3 Schematic diagram of NodeList
系统设计了串口数据的帧格式和无线数据的帧格式,如表1所示。串口数据的帧格式依次包括1字节帧头、3字节命令头、10字节地址、16字节载荷、1字节校验和、1字节帧尾,总共32字节,其中载荷只用了7字节,预留了可扩展传感数据的空间。无线数据的帧格式除了没有帧头、校验和以及帧尾,其它部分与串口数据的帧格式一致。
表1 数据帧格式Tab.1 Format of data frame
系统设计了数据采集的流程。组网完成后,首先是由上位机程序通过串口发送获取ZigBee网络拓扑结构命令给协调器节点,即发送命令头为RND的串口消息给协调器,协调器收到串口信息后,协议栈MT层解析串口数据,之后将解析完的数据打包作为系统消息事件发送到应用层。应用层事件处理函数执行获取网络拓扑结构命令,即从串口返回上位机保存在协调器NodeList中的所有加入节点的信息,使上位机程序得到建立好地址对应关系的网络拓扑结构。
然后由上位机程序通过串口发送采集命令,即发送命令头为RSA的串口消息给协调器,协调器收到串口信息后,协议栈MT层解析串口数据,之后将解析完的数据打包作为系统消息事件发送到应用层。应用层事件处理函数将命令打包通过无线消息发送给传感器节点。传感器节点收到命令头为RSA的无线消息后,应用层处理函数执行采集传感数据命令,并将所有数据打包通过无线消息返回到协调器,再由协调器打包发送给上位机程序,同时传感器节点设置一个周期性采样事件,其采样事件为osal_start_timerEx(SampleApp_TaskID,SAMPLEAPP_SEND_PERIODIC_MSG_EVT,SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT),周期设为 120 s,即每120 s采集1次所有传感数据并发送回去。
最后如果传感器节点收到命令头为STP的无线消息,那么传感器节点将停止采集传感数据,若是终端节点将进入休眠状态等待中断唤醒。节点工作流程如图4所示。
图4 ZigBee协调器节点和ZigBee传感器节点工作流程Fig.4 Work flow chart of ZigBee coordinator node and ZigBee sensor node
确保实验设备正常的情况下,将程序烧写到相应的每一个硬件板中,用串口RS232连接上位机与协调器节点,完成传感器节点的布局,组网完成后,采集数据如图5所示。实验使用的是ASCII码。发送的数据帧头为&,命令头为RSA,地址为指定节点的地址,帧尾为*,其他用00填充,即向指定节点发送采集数据的命令。串口接收的数据帧依次是帧头为&,命令头为RSA,地址为指定节点的地址,载荷为采集的光照、温度、电池电压的数据,没有使用的用x填充,还有一个校验和与帧尾*。采集温度和光照强度是对温室环境的监测,采集电压是对设备状态的监测。这里光照强度是一个简单AD值。
图5 上位机数据采集界面Fig.5 Data acquisition interface of PC
本文基于ZigBee技术提出温室数据实时采集系统方案。设计了组网、数据帧格式以及数据采集流程。NodeList结构体的设计使得上位机程序能与各个传感器节点建立地址对应关系。帧格式的设计不仅使得数据能够同时返回,而且还预留了可扩展传感数据的空间,为进一步扩展其他功能提供了基础,同时也减小了路由器节点工作量。数据采集流程的设计使得整个系统操作简单、工作灵活、采集方便。实验结果表明,本文设计的基于ZigBee技术的温室数据实时采集系统有效地解决了传统温室数据采集系统采集不方便等问题,而且具有工作灵活、操作简单等优点。
[1]屈利华,赵春江,杨信廷,等.ZigBee无线传感器网络在温室多源数据采集系统中的应用综述[J].中国农机化,2012(4):179-183.
[2]王公堂,李艳华,杨宝.基于ZigBee的温度湿度监测系统的研究[J].电子设计工程,2013,21(1):63-66.
[3]盛平,郭洋洋,李萍萍.基于ZigBee和3G技术的设施农业智能测控系统[J].农业机械学报,2012,43(12):229-233.
[4]吴卓葵,张文峰,曾涛.基于WiFi的温室群环境多参数监测系统设计[J].广东农业科学,2014,41(10):189-193.
[5]贾海政,陈军.基于蓝牙的温室温度检控系统研究[J].农机化研究,2009(5):111-114.
[6]胡炳彰,李辉.基于ZigBee的远程数据采集系统[J].电子技术,2013(4):31-33.
[7]Texas Instruments.CC2530 Data Sheet[DB/OL].[2014-04].http://www.ti.com.
[8]Texas Instruments.CC253x User Guide[DB/OL].[2014-04].http://www.ti.com.