基于CC2530和ZigBee的智能农业温湿度采集系统设计
2015-09-14廖建尚
廖建尚
摘 要:通过分析ZigBee协议,利用物联网架构,完成了基于CC2530和ZigBee的智能农业温湿度采集系统的硬件和软件设计,实现了节点数据采集、网络模块设计和数据封装设计,实现了农业大棚的温度、湿度环境信息的采集,达到了良好效果,从而为实现智能农业温室大棚的环境信息采集提供了一种科学方法。
关键词:ZigBee;物联网;智能农业;温湿度采集
中图分类号:TP391 文献标识码:A 文章编号:2095-1302(2015)08-00-05
0 引 言
我国目前农村务农人数正在不断减少,原先的个体小规模种植模式也将会向大规模种植管理模式转变,实现由少数人完成农业生产任务,这种发展趋势必然要由科学技术来承载。因此提高效率,减少传统的人员操作是对未来农业发展的要求[1-3]。农业的智能化、自动化也是未来农业的发展方向。我国农业主要呈现以下几个方面的现状[4]:
(1)农业的信息化、智能化程度低。我国现在大部分地方依然是靠传统的人力农业生产,科技在农业方面的应用水平也较低。农业的发展急需科技方面的资金、技术,因此需要科研人员在农业的信息化、智能化方面进行更多的科研投入。
(2)随着经济社会的发展,务工人数增多,导致农村务农人数减少,出现土地荒废的情况,这也决定了今后农业生产活动必将由少数人来完成。
(3)我国是一个农业大国,对农作物产品的需求也是极其庞大的,而受季节影响,农作物的生产只能按季种植。因此,农业大棚的产生与应用,促进了农作物的年产量,减小了季节对作物生长的限制。农业大棚的数量在大规模增加,农业大棚目前信息化、智能化程度低,大部分管理工作仍需人工完成。
本文采用 ZigBee 无线传输技术构建无线传感网络,研究应用物联网和云平台技术实时收集农业大棚的环境信息,如空气温度、空气湿度等,并根据需要进行实时控制,农业环境信息可以帮助专业机构对数据进行分析、整理、融合,并对灾害进行预测。利用物联网技术在农业上的应用,可以促进科学种植,提高产品综合效益,进一步实现农业生产的自动化和信息化。
1 ZigBee协议
基于IEEE 802.15.4标准的ZigBee技术是一种近距离低复杂度低功耗低速率低成本的双向无线通讯技术,目前广泛应用到了物联网、家庭自动化、家庭安防、工业与环境控制等领域[5]。
ZigBee网络中存在三种逻辑设备类型:协调器(Coordinator),路由器(Router)和终端设备(End-Device)。一个ZigBee网络由一个协调器、多个路由器和多个终端设备组成。
1.1 ZigBee协议的实现
1.1.1 协调器(Coordinator)
协调器负责启动整个网络,它也是网络的第一个设备。协调器选择一个信道和一个网络ID(PAN ID,即Personal Area Network ID),随后启动整个网络。协调器的角色主要涉及启动和配置网络,一旦这些工作都完成后,协调器就类似一个路由器。
1.1.2 路由器(Router)
路由器的功能主要是允许其他终端设备加入网络,在进行数据收发之前,必须加入一个由协调器启动的ZigBee网络,加入网络后,允许路由和终端节点加入,可以对网络中的数据进行路由 ,必须常电供电,不能进入睡眠模式,可以为睡眠的终端节点保留数据,至其唤醒后获取。
1.1.3 终端设备(End-Device)
终端设备用于数据采集或者执行控制任务,在进行数据收发之前,必须加入一个由协调器启动的ZigBee网络,不能允许其他设备加入,必须通过其父节点收发数据,不能对网络中的数据进行路由,可由电池供电,进入睡眠模式。
1.2 ZigBee协议的实现
ZigBee协议有物理层、MAC层、应用层、网络层组成,如图2所示,物理层通过物理层数据服务接入点(PD-SAP)提供物理层数据服务;MAC层提供特定服务会聚子层和物理层之间的接口,通过MAC公共部分子层的数据SAP提供MAC数据服务;应用层支持子层提供了网络层和应用层之间的接口,功能是通过ZDO和定义的应用对象都可以使用的一组服务来实现;网络层提供的服务包括配置新设备、创建新网络、设备请求加入/离开网络和ZigBee协调器或路由器请求设备离开网络、寻址、近邻发现、路由发现、接收控制等功能。
1.2.1 Z-Stack
Z-Stack[6,7]是TI公司开发的开源ZigBee协议栈,Stack协议栈中提供了一个名为操作系统抽象层OSAL的协议栈调度程序, Z-Stack协议栈操作的具体实现细节都被封装在库代码中,开发者直接调用API,无需知道协议栈的实现过程。Z-Stack采用分层的软件结构定义了通信硬件和软件在每个分层里怎样协调工作,协议栈的各层相对独立,每一层都提供相应的服务,设计者只关心与他的工作直接相关的那些层的协议,为设计带来极大的方便,协议栈的每个工程都包含用户应用层、硬件抽样层、物理层、网络层、操作系统抽样层和设备对象层等目录文件。
任务的执行通过系统消息进行调用,在初始化函数osalInitTasks中对任务进行初始化,为每一个任务分配一个ID号,任务保存在tasksArr[]数组,通过循环查询获取相应的ID号进入对应的任务处理程序,本课题研究采用的是SampleApp_ProcessEvent这个任务。
1.2.2 Z-Stack协调器、终端和路由器的联网过程
首先,ZigBee协调器上电以后,周期发送空的数据包,在允许通道内搜索其他ZigBee协调器,并基于每个允许通道中所检测到的通道能量及网络号,选择惟一的16位PAN ID,建立自己的网络[4]。一旦一个新网络被建立,ZigBee路由器与终端设备就可以加入到网络中了。而终端设备上电以后,重复发送信标请求,要求加入到最近的网络中。当协调器发现终端设备发出的信标请求,则响应一个超帧结构,用于设备间的同步,一旦同步成功,则实现图5中的关联过程,由终端设备向协调器发送关联请求,协调器同意则回应终端设备并自动分配16位的短地址,至此,两者组网成功[7]。
2 硬件设计
为了使用Z-Stack无线通信协议,本研究的硬件模块用CC2530实现,TI公司已经在CC2530集成了ZigBee系统,CC2530设备使用8051CPU内核[8]。它有三个不同的存储器访问总线(SFR、DATA和CODE/XDATA),以单周期访问SFR、DATA和主SRAM。它还包括一个调试接口和一个18输入输出的扩展中断单元,CC2530提供了一2.4 GHz的IEEE802.15.4兼容无线收发器。RF内核控制模拟无线模块。
DHT11数据通信是单总线协议,只要一根数据线就可以完成数据通信,接法简单,除去两个电源接口后,将其数据接口接入CC2530的一个GPIO口,本设计将数据接口接入CC2530的P1_0。
3 软件设计
结合ZigBee的协议,将软件设计分成节点数据采集模块、节点监测模块、协调器网络通信模块,数据采集模块主要完成DHT11的温湿度采集;节点监测模块负责将节点数据发送到协调器;协调器的网络模块设计负责将收集的数据发送到云终端服务器。
3.1 节点数据采集模块设计
采集湿度和温度DHT11与CC2530之间能采用简单的单总线进行通信[8],仅仅需要一个口数据格式采用单总线格式,即单个数据引脚端口完成输入输出双向传输,其数据包由5个字节组成,数据分小数部分和整数部分,一次完整的数据传输为40位,具体的数据格式为: 8位湿度整数数据+8位湿度小数数据+8位温度整数数据+8位温度小数数据+8位校验和,校验和数据等于“8 b湿度整数数据+8 b湿度小数数据+8 b温度整数数据+8 b温度小数数据”等于结果的末8位。
根据0时序和1时序图可知,其区别在于总线拉低50 μs后,自动拉高,这时候延时大约30 μs,判断是否高电平,如果总线拉低了,则表示为数字0;如果总线还是高电平,则表示数字1。图4所示识别0和1信号的程序及代码。
数据由5个字节组成,数据分小数部分和整数部分,根据0和1时序图,每个字节有8位组成,即每次循环读取8位,共读5次,实现流程和代码如图5所示。
图6是CC2530读取DHT11数据的时序图。根据图6,设计的读取数据流程如下:
(1)拉低总线,通过设计连接的IO口将其拉低;(2)延时18 ms,拉高总线;(3)延时40 us,等待总线拉低,如果总线拉低,说明DHT11有响应信号;(4)将总线拉高,开始输出数据;(5)读取湿度整数部分;(6)读取湿度小数部分;(7)读取温度整数部分;(8)读取温度小数部分;(9)读取校验位;(10)数据读取后,拉高总线。
DHT11的数据接口设计后,通过调用DHT11_read接口,把温度和湿度值读取出来。
3.2 网络模块设计
3.2.1 终端监测模块的网络模块设计
ZigBee设备有两种类型的地址。一种是64位IEEE地址,即MAC地址,称为长地址,可以利用NLME_GetExtAddr()获取,或者是直接从地址中读取;另一种是16位网络地址,称为短地址,可以使用NLME_GetShortAddr()获得。64位地址是全球唯一的地址,由IEEE来维护和分配。16位网络地址是当设备加入网络后分配的。它在网络中是唯一的,用来在网络中鉴别设备和发送数据。
终端和协调器联网成功后,每片CC2530拥有唯一的MAC地址,在识别无线网络中,将MAC地址发送给协调器进行注册,终端设备主动发送CC2530的MAC地址给协调器进行登记,注册后就可以进行数据发送和接收,设备终端的实现代码如下:
3.2.2 协调器的网络模块设计
协调器通过识别终端发来的数据包进行分析,首先确认MAC地址,第一次MAC地址保存,以后接收数据,只要是存在的MAC地址,则更新其短地址,更新后就可以接收数据。
3.3 数据封装设计
数据封装的目的是为了更好地完成终端和协调器的通信,采用合适的通信协议,可以简化软件设。
设计发送数据包为可变长的,0~7位为MAC地址,用来确认是哪个模块的数据,第8位数值为1是数据采集传感器采集信息,如温湿度传感器,2是控制设备命令,如电机控制命令,第9位存储温度值,第10位存储湿度值,第10位为数据包结束标志。在协调器和节点终端都遵循同样的通信协议分析与控制。
3.3.1 节点采集数据封装设计
根据通信协议,将获取的温度和湿度相应封装,通过函数AF_DataRequest(),将数据Send _Data发送给协调器。
3.3.2 协调器接收数据和转发设计
传输部分设计为每一个终端节点配置一个唯一的设备编号并且运用设备编号为每一个终端配置一个唯一的协调器接收上位机的命令,包括两种格式:一种不带设备编号参数,即需要所有终端节点响应处理;一种是带设备编号参数,仅需该设备编号的终端节点响应,协调器收到上位机或者服务器的命令时会做出相应的判断,在接收数据过程中获取MY_CLUSTERID,进行查询。
4 结 语
本文利用物联网知识,采用一种基于CC2530和DHT11的实现方法,完成了温湿度数据的采集,应用于智能农业大棚,取得了良好效果,为进一步农业自动化提供了一个科学方法,为解决我国目前农村务农人数减少,实现大规模种植管理模式转变提供了一种实现方式。
参考文献
[1]何华斌.福建农业大棚的低成本棚联网构建方案[J].闽江学院学报,2014(5):81-87.
[2]齐莉.物联网农业智能测控系统的特点、优势及其在温室大棚的应用[J].安徽农业科学,2011,39(30):18989-18992.
[3]张钰玲.农业大棚智能控制系统设计与研究[J].微计算机信息,2009,25(3):52-53.
[4]张小伟.基于物联网技术的农业大棚监控系统研究[D].西安:陕西科技大学,2014
[5] A True System-on-Chip Solution for 2.4-GHz IEEE 802.15.4 and ZigBee Applications[EB/OL].http://www.ti.com.cn/cn/lit/ds/symlink/cc2530.pdf
[6] Texas Instruments.Z-Stack developers guide[M].California USA:Texas Instruments,2015
[7]ZigBee Alliance.ZigBee Speciafication[S].USA:ZigBee Alliance,2008.
[8]Texas Instruments.Z-Stack users guide for smart RF05EB and CC2530[M].California USA:Texas Instruments,2011.
[9] DHT11 Humidity & Temperature Sensor [EB/OL].http://www.micro4you.com/files/sensor/DHT11.pdf