论文部分内容阅读
摘要 针对广西山区茶园设计了依靠节点自组织特性自动构建零通信费的ZigBee无线网络监测系统,能够定时采集茶园的空气温湿度、土壤温湿度和光照等参数。该系统除协调器外全部使用路由节点,种植区按蜂窝状划分,每个路由监测节点均布置在蜂窝中心,有效提高了监测系统可靠性。在种植区与监控中心之间的非种植区设计了路由中继节点,用于接力传送茶园监测数据至监控中心内的协调器。节点硬件电路包括核心板与底板,核心板设计了CC2530与RFX2401射频功放,底板设计了传感器处理模块、电源模块及调试接口。深入分析了Zstack协议栈基于事件处理的多任务构架下用户程序设计方法。完成了山区茶园基于ZigBee技术的无线监控网络设计,实现了茶叶种植区内空气温、湿度及土壤温、湿度,光照参数,CC2530供电电压和工作温度的周期采集和传输。通过实际运行,整个系统稳定可靠。
关键词 ZigBee;ZStack协议栈;CC2530;中继
中图分类号 S24 文献标识码 A 文章编号 0517-6611(2014)32-11588-05
Design of Wireless Network Monitoring System for Guangxi Mountain Tea Plantation
ZHUGE Tianqiu1, LUO Yuexin1, ZHANG Biao2 et al
(1. Tea Research Institute of Guilin, Guilin, Guangxi 541004; 2. School of Information Science & Engineering, Guilin University of Technology, Guilin, Guangxi 541004)
Abstract The paper designs ZigBee wireless network for tea plantation in Guangxi mountain area, which has features of selforganization, selfestablishing and no communication fees. The network can obtain data regularly that contain temperature and relative humidity of ambient and soil, intensity of illumination. The all node of system adopts routing node except coordinator. In order to improving reliability of monitoring systems, the tea plantation is divided into several cellular areas, and the center of each cellular has one routing node for gathering abovementioned parameters. Between tea plantation and monitor center some routing nodes are arranged so that data from tea plantation can relay transmit to coordinator which is in the monitor center. The hardware is consist of core board and baseboard. Module of sensor signal process, power module and debugging interface are equipped in the baseboard. Programming method about Zstack protocol which is based on event process of multitask architecture was analyzed deeply. Stability and reliability of the whole system are confirmed by running actually.
Key words ZigBee; Zstack protocol stack; CC2530; Relay
基金項目 广西区科技计划项目(桂科攻12220112D);广西区教育厅科技项目(桂教科研[2006]26号);广西自然科学基金项目(2013GXNSFBA019277);桂林市科技攻关项目(201101095);桂林市科技攻关项目(20130110112)。
作者简介 诸葛天秋(1974-),女,广西富川人,高级农业经济师,从事茶叶种质资源与农业信息化工作。
收稿日期 20141011
为了提高广西山区茶园的茶叶品质,需要对其环境参数进行有效感知,以便及时采取有效措施来实现高效的生产管理。但山区茶园距离远,环境参数的获取依靠传统的人工方式显然不能满足要求。针对山区有机茶园的监测现状,必须采用无线远程监控方式来实现。无线方式分为两类,一类利用移动通信网络实现数据收发,如3G、GSM、GPRS等,这种方式必须支付通信费用,使成本增加。另一类则是利用无线传感网来实现,其中ZigBee网络无需申请许可证即可使用免费2.4 G频段。对于山区茶园,使用ZigBee网络不仅可以克服偏远地区移动通信网信号不稳定的缺点,更重要的是无需支付任何通信费用。由于茶树喜欢温暖、潮湿、阴蔽的环境,其生长需要适当的温度、水分、光照和土壤条件,确定采集参量共5个,分别为土壤温度、土壤湿度、空气温度、空气湿度和光照度。 1 系统结构设计
针对山区茶园监测要求,设计了一个组网方便且可采集多种参量的监测系统,系统结构如图1所示。对于茶叶种植区域按蜂窝划分,每个路由监测节点位于一个蜂窝的中心,均采集空气及土壤温、湿度和光照度参数,系统依靠节点的自组织特性自动组建成ZigBee无线网络。路由中继节点不实现采集任务,但增加了射频功率放大(PA)模块,使无线信号传输距离超过1 km,通过多次中继后采集数据可以传送到距茶园较远,且安装在监控中心内的协调器,协调器再经串口将所有检测数据发送到上位计算机进行显示和处理。
系统结构的核心是ZigBee节点,ZigBee标准中定义的节点具有通用性,每个节点都具备参数采集、路由和协调器功能,具体成为何种节点只需软件配置,一旦节点配置为终端节点,该节点就丧失了路由功能。当配置为路由节点或协调器节点时仍可实现参数采集功能,这是由用户编写的软件代码决定的。由于每个ZigBee子网只能有一个协调器节点,因此该项目除配置一个协调器节点外,其他全部为路由节点,没有使用终端节点,这样即使发生多个节点故障也不会造成采集系统失效,可显著提高监测网络的可靠性。但路由节点需对其他节点发来的信息存储、融合和转发,会使其数据吞吐量增加,不过茶园监测数据量小,监测间隔时间较长,这样实现完全可行。
该项目最终确定茶叶种植区内配置为路由节点,兼有参量采集和路由功能,故此称为路由监测节点,用于采集土壤温度、湿度及空气温度、湿度和光照共5个参数;采集间隔时间为20 min。由于山区茶叶种植区距离监控中心较远,约有数公里,因此还配置了另一类路由节点,在此命名为路由中继节点,该类节点不具备参数采集功能,实现电路上增加功率放大模块,实现茶园采集数据接力传输至远端协调器。
图1 系统结构框图
2 硬件电路设计
2.1 节点硬件结构设计
系统硬件的核心是ZigBee节点,为提高节点硬件通用性并降低印刷电路板开模成本,每个节点都包含两块印制板:核心板和底板。高频部分,即ZigBee模块CC2530和射频功放模块RFX2401单独设计成核心板,该核心板有两种,协调器和路由中继节点使用带射频功放模块RFX2401,路由采集节点的核心板不带射频功放模块。底板是所有节点通用的,对于路由中继节点和协调器则不连接传感器模块。
该系统ZigBee节点硬件结构如图2所示,每个节点由CC2530、射频功率放大模块RFX2401、传感器模块、串行接口及电源模块组成。传感器模块负责采集监测区域的信息;CC2530是整个节点的中枢,主要负责建立,维护通信网络,实现无线信号传输;传感器数据采集、处理、转发和识别控制信息并进行控制等功能;射频功放模块实现无线信号远距离双向传输;串行接口对协调器实现节点与上位机通信,对路由节点则用于硬件测试;电源模块负责节点供电。
2.2 核心板电路设计
CC2530是一款SOC芯片,符合ZigBee标准。CCC2530具有较宽的工作电压(2.0~3.6 V),功
图2 节点硬件结构
耗低,适合电池供电,它片內集成了射频收发模块、增强型51内核、8路12位ADC、2个多功能串行口、21个I/O。CC2530内置的射频收发模块通信距离有限,在空旷区域可达100 m,有障碍区域只有50~60 m,使用RFX2401模块可使通信距离增加到600 m,若再配合高增益的9 dBi天线则通信距离超过1 km。该设计将CC2530+RFX2401模块用作路由中继节点,核心板电路主体部分如图3所示。CC2530的P1.1、P1.2连接RFX2401收、发使能端;P0.0、P0.1、P0.2用于连接模拟输出传感器(光照度,土壤温、湿度);P2.1、P2.2连接数字输出传感器(空气温、湿度);P1.4、P1.5用于串口通信;P1.6、P1.7、P2.0用于通信测试。
2.3 底板电路设计
底板电路连接核心板与传感器,可将核心板控制命令传递给各个传感器,还能将传感器输出的模拟或数字信号送入CC2530芯片进行AD转换或直接读取。底板上含串行通信插座,指示网络连接状态的LED指示灯和测试按键,可用于程序调试和协调器与上位机通信。系统供电由底板输入,采用可充电电池,经1117M3电压转换芯片获得3.3 V电压给CC2530和RFX2401模块供电。
2.4 传感器模块设计
茶园种植区内每个路由监测节点需要采集空气温湿度、土壤温湿度、光照度、供电电压和核心板温度共7个参数,共采用4种传感器,其中核心板温度和供电电压由CC2530内部直接接入AD转换器,无需外部接口;路由中继节点只采集电池供电电压和核心板温度;协调器节点位于控制室内只检测核心板温度。由于各路由节点均为电池供电,传感器选择都遵循低功耗、低供电电压原则。4种传感器的输出信号分为两类:模拟输出和数字输出。模拟输出传感器连接到CC2530的AD 输入端P0.0、P0.1、P0.2,空气温湿度是数字输出传感器连接到CC2530的I/O P2.1、P2.2上。传感器模块电路如图4所示,限于图幅大小,图中仅给出检测与处理电路。
空气温湿度传感器采用SHT71,该传感器供电电压低,功耗低,适用于电池供电系统,可同时测量空气温度和湿度,输出为数字信号,共4个引脚,分别为SCK(串行时钟线)、DATA(串行数据线)及电源和地,CC2530使用P2.1、P2.2分别连接SHT71的DATA和SCK引脚读取空气温、湿度的值。此处DATA信号为开漏输出需接10 kΩ上拉电阻。土壤湿度检测采用TDSWR2传感器,可埋入土壤中对土壤水分进行定点长期监测。相对测量范围0~100%,输出0~2.5 V模拟信号,供电电压可低至2.7 V。电缆标准长度5 m,TD 图3 CC2530核心原理
图4 空气温湿度、土壤温湿度、光照传感器电路原理示意
SWR2测得的土壤湿度模拟量经运放LF356同相比例变换进入CC2530的AD端P0.0脚。土壤温度传感器采用ST100,该传感器耐腐蚀,功耗低,密封性好,0~1 030 mV模拟信号,测量范围-30~70 ℃,0 ℃以上精度为0.1 ℃,其输出的模拟信号也经运放同相比例变换后接入CC2530的AD输入端P0.1脚。使用运放进行同相比例变换是为了把传感器模拟信号输出范围转换到CC2530参考电压范围内(该设计参考电压由CC2530 AVDD5脚输入,为3.3 V)。光照度传感器选用硅光电池,由于硅光电池输出为微弱的电流信号,需经后级运放放大,第1个运放用于将光电池输出的微弱电流信号转换为电压信号,第2个运放作用与前面相同就是将输出电压信号转换到0~3.3 V参考电压范围内,图4中的50、150 kΩ电位器是为了方便调节电压放大倍数。此外,传感器模块还检测CC250工作电压和芯片温度,这两个模拟量输入端已集成在CC2530的AD输入端内,只需软件设置就可检测工作电压和芯片温度。
3 应用软件设计
3.1 Zstack协议栈用户编程概述
采用CC2530构建的ZigBee无线网络,其软件系统是建立在TI公司开发的Zstack协议栈上的。Zstack协议栈本质上是ZigBee协议的具体实现形式,同时也是ZigBee协议和用户之间接口,用户通过使用协议栈来实现协议。按照现代软件分层设计的思想,TI在Zstack协议栈中实现了ZigBee协议物理层,MAC层和网络层,但实现代码不公开,用户程序则在应用层上开发,需要使用底层时可调用Zstack协议栈提供的API函数。
在Zstack协议栈中,用户只需实现应用程序框架,应用程序框架最多包含240个应用程序对象,每个应用程序对象就是一个任务,每个任务又可以响应1个系统事件和15个用户事件,可见应用程序框架包含一个支持多任务的资源分配机制,因此ZStack协议栈提供一个OSAL(操作系统抽象层)来调度程序,OSAL实现了操作系统才具备的以多任务为核心的任务调度及系统资源管理。因此CC2530与常规单片机编程方式完全不同,必须通过创建OSAL任务来运行应用程序,而且用户程序设计就是通过对例程代码修改、增删而实现的。
安徽农业科学 2014年
3.2 用户任务工作流程
该项目设计的用户任务在Zstack协议栈中的工作流程如图5所示。其中“系统初始化”由函数osal_init_system()实现,该函数内又包含6个初始化函数,其中任务初始化函数osalInitTasks()是用户程序必须修改的,该设计在该函数最后增加用户任务初始化函数SampleApp_Init(taskID ),该函数内部分配任务号,初始化串行口,设置周期信息广播地址和周期信息单播地址。周期信息广播目标地址为0xFFFF,用于协调器向所有路由节点广播信息;周期信息单播地址为0x0000,用于路由节点向协调器发送信息。运行操作系统由函数osal_start_system()实现,该函数是任务系统轮询函数,永远不会返回,它负责查找发生的事件,然后调用相应任务对该发生事件的处理函数,该函数中核心语句“events= tasksEvents[idx];”用来提取需要处理的任务事件,另一核心语句“events =(tasksArr[idx])(idx,events);”通过指针调用相应事件的任务处理函数。如果没有事件发生,CC2530 会自动进入省电模式。
图5 用户任务工作流程
3.3 节点软件设计
3.3.1 串口通信程序设计。
串口在用户程序开发中有着非
常重要的作用,它是Zstack协议栈与上位机的通信接口,可把ZigBee各节点数据传入计算机,也可接收上位计算机数据包再转发给网络上各个节点,主要用在协调器与上位机双向通信,另一重要用途则是作为节点程序调试接口。在CC2530中使用串口与普通单片机不同,需要在Zstack协议栈中加入串口功能,使其纳入OSAL统一管理中。
串口使用前需要两个初始化步骤:①串口初始化(设置波特率,是否使用流控制等),②登记任务号,如图5所示这两个步骤是在用户任务初始化函数SampleApp_Init(TaskID)进行的。由于串口已经封装在协议栈中,节点向串口发送数据包只需调用函数HalUARTWrite(uint8 port,uint8 *buf,uint16 len),其中port指串口号,该设计使用串口0;*buf是数组缓冲区指针,节点上传的数据需提前写入这个缓冲区中;len指字节为单位的数据长度。上位机下发数据包到节点可由用户设定通信帧格式,该设计采用的帧格式为:“帧头+地址+命令字+数据长度+数据包+校验+帧尾”,然后将串口数据接收函数“MT_UartProcessZToolData(…)”根据自定义帧格式修改为有限状态机方式接收模式,实现过程如图6所示,其中,正确接收帧尾,调用函数osal_msg_send(...)将数据包发送到OSAL层非常重要,调用该函数后,会产生触发用户任务的事件,响应触发事件时,协调器就可以调用AF_DataRequest(…)函数把串口接收的数据包发给路由节点了。
图6 有限状态机实现串口数据帧接收
3.3.2 协调器通信程序设计
该项目中协调器可以通過串口收发上位机数据,还可接收路由节点上传的监测信息,而且协调器能以广播方式发数据包给路由节点,主要实现两个广播功能:①上位机通过协调器设置各路由监测节点周期采集监测信息的周期值,一经设置路由监测节点就按新的监测周期采集数据然后以单播方式上传协调器,协调器收到监测数据后立刻上传上位计算机进行显示和处理。②上位机通过协调器获取路由监测节点是否正常连接在网络上,这是通过发送广播命令获取各路由节点设备号(用户程序定义的节点编号)实现的,每个收到该命令的路由节点以单播方式发送各自的节点编号给协调器。协调器程序实现流程如图7所示。 3.3.3 路由节点通信程序设计。
路由节点采用单播(点对点)方式定时向协调器传送监测数据。定时时间由协调器设定。因此二者程序代码完全类似,只是目标地址不同。此外,所有节点都要实现串口通信,数据包的收、发,各参量的监测,模数转换及协调器与上位机通信都要使用串口进行调试。下面给出核心函数处理过程。节点应用软件运行流程如图8所示。由图7、8可知,无论单播通信还是广播通信都使用函数AF_DataRequest( afAddrType_t *dstAddr,endPointDesc_t *srcEP,uint16 cID,uint16 len,uint8 *buf,int8 *transID,uint8 options,uint8 radius ),单播与广播方式由第1参数(目的地址)、第3个参数(传输编号)决定,单播时路由节点发送监测数据到协调器,目的地址=0x0000;广播时协调器发送信息给所有路由节点,目的地址=0xFFFF。传输编号由用户程序定义,只需单播与广播定义不同的传输编号。
图7 协调器用户软件运行流程
图8 路由节点用户软件运行流程
4 结语
该研究完成了山区茶园基于ZigBee技术的无线监控网络设计,实现了茶叶种植区内空气温湿度、土壤温湿度及光照参数、CC2530供电电压和工作温度的周期采集和传输。在Zstack协议栈应用层编写了基于事件处理的用户程序,实现的主要功能包括:协调器及路由节点与上位计算机双向通信;协调器与路由节点(路由监测节点,路由中继节点)的广播通信;路由节点与协调器的周期单播通信。系统经实际运行已证实:无线监测网路可靠性高,系统工作稳定,而且无须支付通信费,整体性能达到预期设计目标。
参考文献
[1] 裴素萍,吴必瑞.基于物联网的土壤含水率监测及灌溉系统[J].农机化研究,2013,35(7):106-109.
[2] 杨信廷,吴滔,孙传恒,等.基于WMSN的作物环境与长势远程监测系统[J].农业机械学报,2013,44(1):167-173.
[3] 谢忠兵,武佩,韩国栋,等.基于ZigBee技术的土壤温度无线检测系统研究[J].農机化研究,2013,35(2):189-191,196.
[4] 樊静,王建明.基于CC2530的博物馆状况无线监测系统设计[J].电子测量技术,2011,34(6):105-109.
关键词 ZigBee;ZStack协议栈;CC2530;中继
中图分类号 S24 文献标识码 A 文章编号 0517-6611(2014)32-11588-05
Design of Wireless Network Monitoring System for Guangxi Mountain Tea Plantation
ZHUGE Tianqiu1, LUO Yuexin1, ZHANG Biao2 et al
(1. Tea Research Institute of Guilin, Guilin, Guangxi 541004; 2. School of Information Science & Engineering, Guilin University of Technology, Guilin, Guangxi 541004)
Abstract The paper designs ZigBee wireless network for tea plantation in Guangxi mountain area, which has features of selforganization, selfestablishing and no communication fees. The network can obtain data regularly that contain temperature and relative humidity of ambient and soil, intensity of illumination. The all node of system adopts routing node except coordinator. In order to improving reliability of monitoring systems, the tea plantation is divided into several cellular areas, and the center of each cellular has one routing node for gathering abovementioned parameters. Between tea plantation and monitor center some routing nodes are arranged so that data from tea plantation can relay transmit to coordinator which is in the monitor center. The hardware is consist of core board and baseboard. Module of sensor signal process, power module and debugging interface are equipped in the baseboard. Programming method about Zstack protocol which is based on event process of multitask architecture was analyzed deeply. Stability and reliability of the whole system are confirmed by running actually.
Key words ZigBee; Zstack protocol stack; CC2530; Relay
基金項目 广西区科技计划项目(桂科攻12220112D);广西区教育厅科技项目(桂教科研[2006]26号);广西自然科学基金项目(2013GXNSFBA019277);桂林市科技攻关项目(201101095);桂林市科技攻关项目(20130110112)。
作者简介 诸葛天秋(1974-),女,广西富川人,高级农业经济师,从事茶叶种质资源与农业信息化工作。
收稿日期 20141011
为了提高广西山区茶园的茶叶品质,需要对其环境参数进行有效感知,以便及时采取有效措施来实现高效的生产管理。但山区茶园距离远,环境参数的获取依靠传统的人工方式显然不能满足要求。针对山区有机茶园的监测现状,必须采用无线远程监控方式来实现。无线方式分为两类,一类利用移动通信网络实现数据收发,如3G、GSM、GPRS等,这种方式必须支付通信费用,使成本增加。另一类则是利用无线传感网来实现,其中ZigBee网络无需申请许可证即可使用免费2.4 G频段。对于山区茶园,使用ZigBee网络不仅可以克服偏远地区移动通信网信号不稳定的缺点,更重要的是无需支付任何通信费用。由于茶树喜欢温暖、潮湿、阴蔽的环境,其生长需要适当的温度、水分、光照和土壤条件,确定采集参量共5个,分别为土壤温度、土壤湿度、空气温度、空气湿度和光照度。 1 系统结构设计
针对山区茶园监测要求,设计了一个组网方便且可采集多种参量的监测系统,系统结构如图1所示。对于茶叶种植区域按蜂窝划分,每个路由监测节点位于一个蜂窝的中心,均采集空气及土壤温、湿度和光照度参数,系统依靠节点的自组织特性自动组建成ZigBee无线网络。路由中继节点不实现采集任务,但增加了射频功率放大(PA)模块,使无线信号传输距离超过1 km,通过多次中继后采集数据可以传送到距茶园较远,且安装在监控中心内的协调器,协调器再经串口将所有检测数据发送到上位计算机进行显示和处理。
系统结构的核心是ZigBee节点,ZigBee标准中定义的节点具有通用性,每个节点都具备参数采集、路由和协调器功能,具体成为何种节点只需软件配置,一旦节点配置为终端节点,该节点就丧失了路由功能。当配置为路由节点或协调器节点时仍可实现参数采集功能,这是由用户编写的软件代码决定的。由于每个ZigBee子网只能有一个协调器节点,因此该项目除配置一个协调器节点外,其他全部为路由节点,没有使用终端节点,这样即使发生多个节点故障也不会造成采集系统失效,可显著提高监测网络的可靠性。但路由节点需对其他节点发来的信息存储、融合和转发,会使其数据吞吐量增加,不过茶园监测数据量小,监测间隔时间较长,这样实现完全可行。
该项目最终确定茶叶种植区内配置为路由节点,兼有参量采集和路由功能,故此称为路由监测节点,用于采集土壤温度、湿度及空气温度、湿度和光照共5个参数;采集间隔时间为20 min。由于山区茶叶种植区距离监控中心较远,约有数公里,因此还配置了另一类路由节点,在此命名为路由中继节点,该类节点不具备参数采集功能,实现电路上增加功率放大模块,实现茶园采集数据接力传输至远端协调器。
图1 系统结构框图
2 硬件电路设计
2.1 节点硬件结构设计
系统硬件的核心是ZigBee节点,为提高节点硬件通用性并降低印刷电路板开模成本,每个节点都包含两块印制板:核心板和底板。高频部分,即ZigBee模块CC2530和射频功放模块RFX2401单独设计成核心板,该核心板有两种,协调器和路由中继节点使用带射频功放模块RFX2401,路由采集节点的核心板不带射频功放模块。底板是所有节点通用的,对于路由中继节点和协调器则不连接传感器模块。
该系统ZigBee节点硬件结构如图2所示,每个节点由CC2530、射频功率放大模块RFX2401、传感器模块、串行接口及电源模块组成。传感器模块负责采集监测区域的信息;CC2530是整个节点的中枢,主要负责建立,维护通信网络,实现无线信号传输;传感器数据采集、处理、转发和识别控制信息并进行控制等功能;射频功放模块实现无线信号远距离双向传输;串行接口对协调器实现节点与上位机通信,对路由节点则用于硬件测试;电源模块负责节点供电。
2.2 核心板电路设计
CC2530是一款SOC芯片,符合ZigBee标准。CCC2530具有较宽的工作电压(2.0~3.6 V),功
图2 节点硬件结构
耗低,适合电池供电,它片內集成了射频收发模块、增强型51内核、8路12位ADC、2个多功能串行口、21个I/O。CC2530内置的射频收发模块通信距离有限,在空旷区域可达100 m,有障碍区域只有50~60 m,使用RFX2401模块可使通信距离增加到600 m,若再配合高增益的9 dBi天线则通信距离超过1 km。该设计将CC2530+RFX2401模块用作路由中继节点,核心板电路主体部分如图3所示。CC2530的P1.1、P1.2连接RFX2401收、发使能端;P0.0、P0.1、P0.2用于连接模拟输出传感器(光照度,土壤温、湿度);P2.1、P2.2连接数字输出传感器(空气温、湿度);P1.4、P1.5用于串口通信;P1.6、P1.7、P2.0用于通信测试。
2.3 底板电路设计
底板电路连接核心板与传感器,可将核心板控制命令传递给各个传感器,还能将传感器输出的模拟或数字信号送入CC2530芯片进行AD转换或直接读取。底板上含串行通信插座,指示网络连接状态的LED指示灯和测试按键,可用于程序调试和协调器与上位机通信。系统供电由底板输入,采用可充电电池,经1117M3电压转换芯片获得3.3 V电压给CC2530和RFX2401模块供电。
2.4 传感器模块设计
茶园种植区内每个路由监测节点需要采集空气温湿度、土壤温湿度、光照度、供电电压和核心板温度共7个参数,共采用4种传感器,其中核心板温度和供电电压由CC2530内部直接接入AD转换器,无需外部接口;路由中继节点只采集电池供电电压和核心板温度;协调器节点位于控制室内只检测核心板温度。由于各路由节点均为电池供电,传感器选择都遵循低功耗、低供电电压原则。4种传感器的输出信号分为两类:模拟输出和数字输出。模拟输出传感器连接到CC2530的AD 输入端P0.0、P0.1、P0.2,空气温湿度是数字输出传感器连接到CC2530的I/O P2.1、P2.2上。传感器模块电路如图4所示,限于图幅大小,图中仅给出检测与处理电路。
空气温湿度传感器采用SHT71,该传感器供电电压低,功耗低,适用于电池供电系统,可同时测量空气温度和湿度,输出为数字信号,共4个引脚,分别为SCK(串行时钟线)、DATA(串行数据线)及电源和地,CC2530使用P2.1、P2.2分别连接SHT71的DATA和SCK引脚读取空气温、湿度的值。此处DATA信号为开漏输出需接10 kΩ上拉电阻。土壤湿度检测采用TDSWR2传感器,可埋入土壤中对土壤水分进行定点长期监测。相对测量范围0~100%,输出0~2.5 V模拟信号,供电电压可低至2.7 V。电缆标准长度5 m,TD 图3 CC2530核心原理
图4 空气温湿度、土壤温湿度、光照传感器电路原理示意
SWR2测得的土壤湿度模拟量经运放LF356同相比例变换进入CC2530的AD端P0.0脚。土壤温度传感器采用ST100,该传感器耐腐蚀,功耗低,密封性好,0~1 030 mV模拟信号,测量范围-30~70 ℃,0 ℃以上精度为0.1 ℃,其输出的模拟信号也经运放同相比例变换后接入CC2530的AD输入端P0.1脚。使用运放进行同相比例变换是为了把传感器模拟信号输出范围转换到CC2530参考电压范围内(该设计参考电压由CC2530 AVDD5脚输入,为3.3 V)。光照度传感器选用硅光电池,由于硅光电池输出为微弱的电流信号,需经后级运放放大,第1个运放用于将光电池输出的微弱电流信号转换为电压信号,第2个运放作用与前面相同就是将输出电压信号转换到0~3.3 V参考电压范围内,图4中的50、150 kΩ电位器是为了方便调节电压放大倍数。此外,传感器模块还检测CC250工作电压和芯片温度,这两个模拟量输入端已集成在CC2530的AD输入端内,只需软件设置就可检测工作电压和芯片温度。
3 应用软件设计
3.1 Zstack协议栈用户编程概述
采用CC2530构建的ZigBee无线网络,其软件系统是建立在TI公司开发的Zstack协议栈上的。Zstack协议栈本质上是ZigBee协议的具体实现形式,同时也是ZigBee协议和用户之间接口,用户通过使用协议栈来实现协议。按照现代软件分层设计的思想,TI在Zstack协议栈中实现了ZigBee协议物理层,MAC层和网络层,但实现代码不公开,用户程序则在应用层上开发,需要使用底层时可调用Zstack协议栈提供的API函数。
在Zstack协议栈中,用户只需实现应用程序框架,应用程序框架最多包含240个应用程序对象,每个应用程序对象就是一个任务,每个任务又可以响应1个系统事件和15个用户事件,可见应用程序框架包含一个支持多任务的资源分配机制,因此ZStack协议栈提供一个OSAL(操作系统抽象层)来调度程序,OSAL实现了操作系统才具备的以多任务为核心的任务调度及系统资源管理。因此CC2530与常规单片机编程方式完全不同,必须通过创建OSAL任务来运行应用程序,而且用户程序设计就是通过对例程代码修改、增删而实现的。
安徽农业科学 2014年
3.2 用户任务工作流程
该项目设计的用户任务在Zstack协议栈中的工作流程如图5所示。其中“系统初始化”由函数osal_init_system()实现,该函数内又包含6个初始化函数,其中任务初始化函数osalInitTasks()是用户程序必须修改的,该设计在该函数最后增加用户任务初始化函数SampleApp_Init(taskID ),该函数内部分配任务号,初始化串行口,设置周期信息广播地址和周期信息单播地址。周期信息广播目标地址为0xFFFF,用于协调器向所有路由节点广播信息;周期信息单播地址为0x0000,用于路由节点向协调器发送信息。运行操作系统由函数osal_start_system()实现,该函数是任务系统轮询函数,永远不会返回,它负责查找发生的事件,然后调用相应任务对该发生事件的处理函数,该函数中核心语句“events= tasksEvents[idx];”用来提取需要处理的任务事件,另一核心语句“events =(tasksArr[idx])(idx,events);”通过指针调用相应事件的任务处理函数。如果没有事件发生,CC2530 会自动进入省电模式。
图5 用户任务工作流程
3.3 节点软件设计
3.3.1 串口通信程序设计。
串口在用户程序开发中有着非
常重要的作用,它是Zstack协议栈与上位机的通信接口,可把ZigBee各节点数据传入计算机,也可接收上位计算机数据包再转发给网络上各个节点,主要用在协调器与上位机双向通信,另一重要用途则是作为节点程序调试接口。在CC2530中使用串口与普通单片机不同,需要在Zstack协议栈中加入串口功能,使其纳入OSAL统一管理中。
串口使用前需要两个初始化步骤:①串口初始化(设置波特率,是否使用流控制等),②登记任务号,如图5所示这两个步骤是在用户任务初始化函数SampleApp_Init(TaskID)进行的。由于串口已经封装在协议栈中,节点向串口发送数据包只需调用函数HalUARTWrite(uint8 port,uint8 *buf,uint16 len),其中port指串口号,该设计使用串口0;*buf是数组缓冲区指针,节点上传的数据需提前写入这个缓冲区中;len指字节为单位的数据长度。上位机下发数据包到节点可由用户设定通信帧格式,该设计采用的帧格式为:“帧头+地址+命令字+数据长度+数据包+校验+帧尾”,然后将串口数据接收函数“MT_UartProcessZToolData(…)”根据自定义帧格式修改为有限状态机方式接收模式,实现过程如图6所示,其中,正确接收帧尾,调用函数osal_msg_send(...)将数据包发送到OSAL层非常重要,调用该函数后,会产生触发用户任务的事件,响应触发事件时,协调器就可以调用AF_DataRequest(…)函数把串口接收的数据包发给路由节点了。
图6 有限状态机实现串口数据帧接收
3.3.2 协调器通信程序设计
该项目中协调器可以通過串口收发上位机数据,还可接收路由节点上传的监测信息,而且协调器能以广播方式发数据包给路由节点,主要实现两个广播功能:①上位机通过协调器设置各路由监测节点周期采集监测信息的周期值,一经设置路由监测节点就按新的监测周期采集数据然后以单播方式上传协调器,协调器收到监测数据后立刻上传上位计算机进行显示和处理。②上位机通过协调器获取路由监测节点是否正常连接在网络上,这是通过发送广播命令获取各路由节点设备号(用户程序定义的节点编号)实现的,每个收到该命令的路由节点以单播方式发送各自的节点编号给协调器。协调器程序实现流程如图7所示。 3.3.3 路由节点通信程序设计。
路由节点采用单播(点对点)方式定时向协调器传送监测数据。定时时间由协调器设定。因此二者程序代码完全类似,只是目标地址不同。此外,所有节点都要实现串口通信,数据包的收、发,各参量的监测,模数转换及协调器与上位机通信都要使用串口进行调试。下面给出核心函数处理过程。节点应用软件运行流程如图8所示。由图7、8可知,无论单播通信还是广播通信都使用函数AF_DataRequest( afAddrType_t *dstAddr,endPointDesc_t *srcEP,uint16 cID,uint16 len,uint8 *buf,int8 *transID,uint8 options,uint8 radius ),单播与广播方式由第1参数(目的地址)、第3个参数(传输编号)决定,单播时路由节点发送监测数据到协调器,目的地址=0x0000;广播时协调器发送信息给所有路由节点,目的地址=0xFFFF。传输编号由用户程序定义,只需单播与广播定义不同的传输编号。
图7 协调器用户软件运行流程
图8 路由节点用户软件运行流程
4 结语
该研究完成了山区茶园基于ZigBee技术的无线监控网络设计,实现了茶叶种植区内空气温湿度、土壤温湿度及光照参数、CC2530供电电压和工作温度的周期采集和传输。在Zstack协议栈应用层编写了基于事件处理的用户程序,实现的主要功能包括:协调器及路由节点与上位计算机双向通信;协调器与路由节点(路由监测节点,路由中继节点)的广播通信;路由节点与协调器的周期单播通信。系统经实际运行已证实:无线监测网路可靠性高,系统工作稳定,而且无须支付通信费,整体性能达到预期设计目标。
参考文献
[1] 裴素萍,吴必瑞.基于物联网的土壤含水率监测及灌溉系统[J].农机化研究,2013,35(7):106-109.
[2] 杨信廷,吴滔,孙传恒,等.基于WMSN的作物环境与长势远程监测系统[J].农业机械学报,2013,44(1):167-173.
[3] 谢忠兵,武佩,韩国栋,等.基于ZigBee技术的土壤温度无线检测系统研究[J].農机化研究,2013,35(2):189-191,196.
[4] 樊静,王建明.基于CC2530的博物馆状况无线监测系统设计[J].电子测量技术,2011,34(6):105-109.