1 引言
在温室农业生产过程中,温度与湿度等环境参数直接影响到作物的生长。因此,环境的监测与控制是保证温室生产优质高效的重要手段。而大部分的温室监控系统采用PLC温室控制和现场总线控制系统,这些系统具有布线费时、抗干扰性差和成本高的缺点,制约了其推广应用。再加上目前针对特定地区(如我国最北部地区)气候存在着温度低、昼夜温差大、光照强度大等条件研究较少,使得环境监测的可靠性、稳定性成为急需解决的问题。
结合实地考察与测量,引入ZigBee数传技术到温室栽培中,建立温室环境监控系统,可以极大的节省劳动力,再加上低功耗、低成本等优势,可广泛应用于现代工农业自动控制,是信息技术在农业应用中的极佳选择。
2 系统总体方案
为保证在监测过程中数据稳定,避免局部数据代表温室数据,所以在每个温室中将安装多个ZigBee无线模块传感器节点,每个ZigBee无线模块节点采集2种环境参数。总体系统架构如图1所示。
图l 温湿度监测系统
每个温室的不同地方都有ZigBee数据采集终端节点,作为移动数据检测节点,每个ZigBee数据采集节点具有采集环境数据并发送给路由的功能。且在每个温室包括一个路由器,用来转发数据,并识别和自组网络节点。
路由器将本温室的传感节点数据接收后并发送给协调器。协调器负责整个ZigBee无线网络的建立和维护,收集ZigBee网络中各个ZigBee无线模块节点发出的信息,通过RS232接口把数据传到上位机。PC主要负责处理数据并显示,同时通过发送指令控制整个系统的运行。(如果监测节点距离太远时还可以考虑增加一个Router节点用于路由转发)。
3 系统硬件设计
整个系统硬件设计主要包括ZigBee网关(协调器)和终端节点2部分。
3.1 ZigBee网关节点
模块网关节点包括CC2530模块、电源模块、串口模块、USB接口、调试接口和3.3与5.0V电源转换模块。其中电源模块通过电压转换盒给节点提供3.3V工作电压。采用的是可;即联科技的JL13 ZigBee2530模块,选取支持最新的ZigBee协议,移植Z-Stack协议栈较为方便的CC2530射频芯片。该温湿度监测系统的硬件构成如图2所示。
图2 ZigBee网关硬件
3.2 ZigBee终端节点模块
在终端传感器节点中,除了网关节点原有模块之外,只需在CC2530的I/0 增加一个传感器。采用温湿度传感器SHT10。根据需要,终端传感器节点分布在监测环境中,通过SHT10实时进行环境参数的ZigBee数据采集,经CC2530处理后由射频芯片发送。电路如图3所示。
图3 SHT10连接
P1的2、3引脚对应CC2530的13、12引脚。为了确保芯片和电源系统工作的稳定性,采用BL8555低压差线性稳压器,在1.2V~5.0V输出电压范围内给电路提供多种固定电压。
4 系统软件设计
整个监控系统软件设计由ZigBee网关软件和终端节点软件2部分组成。协议栈的设计直接关系到整个网络系统的运行。根据ZigBee星型网络,协调器与终端设备在网络中的功能、地位有所不同。ZigBee网关软件和终端节点软件这2部分都需要向其ZigBee无线模块移植ZigBee协议栈(Z-Stack),尤其是与硬件底层密切相关的PHY层和MAC层的实现,它为上层通信应用提供API接口函数。温湿度采集系统程序设计是基于Z-Stack协议栈的SampleApp实验进行的,在协议栈的基础上,实现无线网络的组网及通信。在节点软件设计中,为了方便下载与调试,加入了ISP编程接口,可以对采集的数据信息进行处理。
4.1 网关节点程序设计
ZigBee的通信方式主要有点播、组播和广播3种。
在本设计中采用了周期定时广播发送的方式。其主要负责将终端节点采集到的数据发送给网关节点(协调器),再由协调器通过RS232串口上传到PC串口调试助手上。
协调器节点启动后,根据自身的IEEE地址随机确定一个PAN ID,并自动形成网络,同时允许其他节点加入到该网络,并负责给加入网络的设备分配一个16位短地址、配置网络参数、维护网络正常运行、接收路由器和终端节点发送来的数据。协调器作为整个网络的核心,主要任务即是搭建ZigBee数传网络,实现数据的发送与接收。发送部分协调器在建立网络过程中,需要登记事件、定义任务ID、设置事件编号和设定发送周期。接收部分需要完成2个任务:读取接收到的数据;把数据通过串口发送给PC。协调器节点工作流程如图4所示。
图4 协调器节点工作流程
4.2 传感器SHT10程序设计
终端节点主要功能是加入已经存在的ZigBee数传网络,接收命令发送数据,但是不能转发数据。温湿度信息采集一般分为自动采集和手动采集。将终端定时器设定一个初值,然后启动定时器,每次到达定时设定值时触发中断,开始测量温湿度,测量结束后由CC2530将数据发送出去,此后终端进入低功耗模式,定时器重新装载,计时继续,周而复始,实现自动采集;手动采集是由PC发指令给指定终端,终端识别出该指令后启动传感器,开始温湿度采集,将数据处理后再传给PC。下面对传感器节点主要代码进行说明。
1)传感器的启动传输程序传感器上电后,进入11 ms的“休眠”状态。首先采用一个延时命令来完成系统初始化延时,然后由CC2530给SHTl0发送“启动传输”时序,唤醒芯片。随后,SHTl0接收由CC2530的微控制器发送的命令。
数据传输初始化由一组“启动传输”时序来表示。用0表示低电平,l表示高电平时,当SCK时钟为1时DATA翻转为0,紧接着SCK变为0,在下一个SCK时钟为1时DATA翻转为1。这部分主要由void s_transstart(void)函数完成。
2)SHTlO写数据时序系统采用按位写的方式改变控制线SCK和DATA的状态。对于SHT10,DATA在每个SCK时钟下降沿之后写入一位数据来改变状态,并仅在SCK时钟上升沿有效。数据传输期间,在SCK时钟为高电平时,DATA必须维持稳定。否则可能出现写数据时序的错误。写数据时序主要由char s_write_byte(unsigned char value)函数来完成。
3)SHTl0读数据时序读数据程序主要由函数char s_read_byte(unsignedchar aek)完成。ack为读数据确认控制字,初始变量i=0x80,val=0。当向SHTl0传感器写入测温控制字0x03这个8位数时,系统将进行温度的测量工作,当写入0x05时,系统将进行相对湿度的测量。
4)通信复位程序假如与传感器SHT10的通信发生中断,可以通过随后的信号序列将串口复位,保持DATA为1,触发SCK时钟9次或更多。在下1次指令执行前,发送1组“启动传输”序列。这些程序序列只对复位串口有效,而状态寄存器内容仍然保留。该复位程序由void s_connectionreset(void)函数来完成。
5)SHTl0温湿度信息处理该程序读取指针p_shiduzhi、p_wenduzhi中的湿度值和温度值。该部分由void calc_shtl0(float *p_shiduzhi,float *p_wenduzhi)函数来完成。信息处理中设置SHTl0的工作精度为14位温度和12位湿度测量,进行相对湿度计算。
至此,ZigBee数据采集传感器节点程序设计完成。ZigBee数据采集传感器节点作为温室监测系统的基本组成单元,需要具备环境的参数采集、数据收发、数据处理、无线通信等功能。在实际的应用中只需将CC2530模块+传感器即可组成EndDevice节点或者Router节点。这2种节点均可与Coordinator直接通信进行数据采集,故将以上2种节点统称为传感器节点。
5 系统测试与分析
本测试阶段是在实验室环境中完成的。在实验室内部署了3个ZigBee无线模块,包括1个主节点,2个子节点。
首先需要按图5所示将硬件系统连接起来,接着需要做的就是把源程序下载到无线ZigBee开发系统中并检验系统是否正常工作。
图5 无线ZigBee开发系统下载连接示意
然后,采用星型网络拓扑结构组成一个简单的ZigBee网络。这3个ZigBee数传节点(协调器与PC连接,路由器增加ZigBee数传网络的传输距离,终端节点采集温湿度信息)的短地址随机分配。节点之间的通信距离为
图6 终端节点温湿度数据
图6是一个终端节点接入网络时的通信情况。文中所采集的数据均为空气中的温、湿度信息,从图中可以看出,终端设备的短地址为0x
6 结论
结合实地考察的温室环境,采用ZigBee无线模块技术应用于温室监控系统。利用无线ZigBee数据采集传感器网络对温室温湿度等信息进行采集,设计了无线传感器组网方案,完成了传感器节点软硬件设计,从而实现无线ZigBee数据数据采集与传输功能。测试试验表明:采用ZigBee数传模块进行组网和数据采集,有较好的稳定性和良好的实用性。对不同规模的温室,该系统可以灵活改变网络规模,能够满足温室监测系统的需要。由此可以得出:将ZigBee数传技术为基础的监测和控制系统引入到现代农业温室监测系统是一个很好的解决方案。
原文地址:http://jlinkcn.blog.51cto.com/9948825/1629376