李延 张发生
摘要:针对布设线缆监测室内温湿度的传统方式存在的布线复杂、成本较高、维护难及扩展性较差等不足,结合Zigbee及嵌入式开发技术,提出一种基于Zigbee协议栈的ZStack室内温湿度监测系统设计方案。系统使用射频芯片CC2530、处理器STC89C52和温湿度传感器DHT21,具有结构简单、可靠性与扩展性好、布点灵活等特点,为ZStack应用开发及智能家居环境调控的研究及实现提供重要的理论及应用基础。
关键词关键词:Zigbee;ZStack;温湿度监测;智能家居
DOIDOI:10.11907/rjdk.143967
中图分类号:TP319
文献标识码:A文章编号文章编号:16727800(2015)002009403
基金项目基金项目:
作者简介作者简介:李延(1990-),男,湖南邵阳人,中南林业科技大学计算机与信息工程学院硕士研究生,研究方向为智能检测与自动控制。
0引言
在物联网时代,智能家居发展已成为一种趋势,而温度、湿度与人们的日常生活息息相关,影响着安全、舒适的生活体验。因此,对这些环境参量进行监测和调节在智能家居生活中必不可少。采用铺设电缆的传统方式,当需要监测和控制的对象较多时,布线繁琐、维护和升级困难,成本高、灵活性差等一系列的问题就凸显出来\[13\]。
ZigBee技术是一种新兴的短距离、低复杂度的双向无线网络技术,具有能耗低、成本低、网络容量大、时延短和安全等特点\[4\]。此外,ZigBee还具备自组织网络的功能,能实现网络自我功能恢复。ZigBee技术以其经济、可靠、高效等优点在物联网中有着良好的应用前景\[5\]。
1系统总体设计方案
系统使用单片机STC89C52作为节点控制器,使用数字温湿度传感器DHT21(AM2301)构建节点传感器单元,使用TI无线射频芯片CC2530搭建无线网络节点。考虑到家庭住房较密集、面积较大等特点,以及Zigbee节点网络容量大的特性,整个系统采用星型拓扑结构的连接方式。为验证方案的可行性,本设计选用3个终端节点,分别安装在室内3个不同方位。
如图1所示,3个终端节点作为监测节点,实时检测房间内的温湿度,并将其定时传送至协调器。协调器节点通过串口与PC机相连,接收到温湿度数据后通过串口将其发送至PC机。在PC上设置好串口号、波特率等参数后,即可在串口调试窗口上显示出协调器接收到的温湿度数据。
2硬件设计
2.1终端节点硬件设计
如图2所示,终端节点由控制模块、传感器模块、无线模块和电源模块组成。控制模块采用高性能、低功耗的8位微控制器STC89C52,按照一定的时序读写数字温湿度传感器DHT21来获取区域内的温湿度,单片机获得温湿度后通过串口将具体的数据发送给射频芯片CC2530,再由射频收发器终端节点将温湿度值发送给协调器。
图2终端节点硬件
2.2协调器节点硬件设计
网络协调器承担着网络组建、网络管理以及收集监测节点的数据并上传给PC机的任务,是一个ZigBee全功能设备。在本系统中,协调器节点的硬件电路比较简单,射频芯片采用TICC2530,同时使用PL2303模块(STC下载器)连接协调器和PC机。
2.3主要模块
(1)无线模块。
本系统使用TI公司的CC2530无线射频芯片。该芯片使用的8051CPU内核是一个单周期的8051兼容内核,它有3个不同的存储器访问总线(SFR、DATA 和CODE/XDATA),以单周期访问SFR、DATA和主SRAM。它还包括一个调试接口和一个扩展中断单元。另外,CC2530具有电源管理功能,可以实现工作模式的切换,从而保证了芯片的低功耗性能。芯片内部提供了一个IEEE 802.15.4兼容的无线收发器,RF内核控制模拟无线模块,提供了MCU和无线设备之间的一个接口,可以发出命令、读取状态、自动操作和确定无线设备事件的顺序。此外,无线设备还包括一个数据包过滤及地址识别模块。
(2)传感器模块。
DHT21数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。该产品具有品质卓越、响应快、抗干扰能力强、性价比高等优点。外接3个接口分别为VCC、SDA和GND,SDA用于微处理器与DHT21之间的通讯和同步。
3软件设计
单片机STC89C52的软件开发平台选择Keil uVision4,Zigbee协议栈ZStack的应用开发平台选择IAR Embedded Workbench。其中,ZStack的应用开发需先下载并安装ZStack软件包(使用ZstackCC25302.5.1a)。
3.1ZStack协议栈
ZStack是TI公司推出的Zigbee2007协议栈,是Zigbee协议的具体实现,它相当于一个小型的操作系统,包括14个文件目录:App、HAL、MAC、MT、NWK、OSAL、Profile、Securitey、Services、Tools、ZDO、ZMAC、ZMain、Output。TI ZStack协议栈总体上由硬件抽象层HAL、操作系统抽象层OSAL和Zigbee协议层组成\[6\]。HAL层提供Timer、I/O、UART等硬件资源的API,OASL层负责任务管理。用户可以使用协议栈提供的API 进行应用程序开发,在开发过程中完全不必关心ZigBee协议的具体实现细节\[7\]。Z-Stack系统采用任务轮询的机制,各层任务初始化之后便进入查询等待的低功耗模式,如果有事件发生,系统便被唤醒,中断并处理发生的事件,处理完后再次进入低功耗模式。若几个事件同时发生,系统便根据事件的优先级依次进行处理\[7\]。协议栈工作流程如图3所示。
3.2ZStack无线收发程序设计
对于Zigbee部分软件设计,采用基于协议栈ZStack的应用开发方式,节点无线收发的程序设计按照节点种类的不同分为两类,即终端(监测节点)程序设计与协调器程序设计。两类程序的架构基本一致,由于功能实现要求不同,存在一定差异,主要表现在以下方面:
(1)通讯方式设置。
Zigbee的通讯方式主要有3种:点播、组播、广播。点播,顾名思义是点对点通信,也就是2个设备之间的通讯,不容许有第三个设备收到信息;组播就是将网络中的节点分组,组员发出的信息只有组号相同的组员才能收到;广播就是1个设备上发出的信息所有设备都能接收到。
本系统由于终端之间并不要求通讯,只是与协调器相互通信,因此将所有的终端监测节点都设置为点播方式,目标地址设置为协调器的网络地址:
SampleApp_Point_DstAddr.addrMode=
(afAddrMode_t)Addr16Bit;
SampleApp_Point_DstAddr.addr.shortAddr=0x0000;
而对于协调器来说,为便于协调和管理所有的子节点,宜采用广播的方式让所有的子节点都能收到信息,因此将地址信息设置为:
SampleApp_Periodic_DstAddr.addrMode =
(afAddrMode_t)AddrBroadcast;
SampleApp_Periodic_DstAddr.addr.shortAddr = 0xFFFF;
(2)串口通信。
串口通信的程序设计包括串口初始化、串口发送和串口接收,其中初始化部分包括配置串口号、波特率、流控、校验位等。比如,在工程配置选项中的C/C++ Compiler一栏选择preprocessor,然后在Defined symbols下的白色书写框中输入定义的符号,如果输入ZTOOL_P1,编译后系统则选择串口0进行相关的操作;若输入ZTOOL_P2,则选中串口1。在mt_uart.h文件中编写串口初始化宏参数,例如#define MT_UART_DEFAULT_BAUDRATE、HAL_UART_BR_115200,将波特率设置为115200bps。
ZStack协议栈上开发的串口应用可以分为接收部分和发送部分,接收部分是终端节点通过串口接收单片机采集到的温湿度数据,而发送部分则是协调器通过串口将数据发送给PC机,具体如下:
接收部分(见图4):终端节点的Zigbee模块通过串口接收单片机采集到的温湿度数据,并通过RF将其发送至协调器节点。
发送部分(见图5):协调器节点的Zigbee模块将监测终端传来的数据呈送给PC机,以方便用户通过PC机了解当前室内所有房间温湿度情况。
(3)事件及处理方式。
终端监测节点主要功能是将数据定时上报给协调器。终端事件来源于串口接收到的数据,将其无线发送给设置好的目标地址(协调器);协调器的事件则来源于无线接收到一帧数据,其处理方式是通过串口发送给PC机。
图4接收部分流程图5发送部分流程
3.3数据采集单元
终端监测节点数据采集单元由单片机STC89C52和数字温湿度传感器DHT21组成,单片机使用单总线的方式控制DHT21输出温度和湿度,输出数据的格式为:
40bit数据=16bit湿度+16bit温度+8bit校验
如图5所示,在获取5字节数据之后即可从中得到温度和湿度值。
for(i=0;i<5;i++)
Sensor_Data\[i\]= Read_SensorData();
其中,Sensor_Data\[0\]、Sensor_Data\[1\]存储的是湿度量,Sensor_Data\[2\]、Sensor_Data\[3\]存储的是温度量,因此,温湿度分别为:
humidity = Sensor_Data\[0\]*256+Sensor_Data\[1\];
temperature=Sensor_Data\[2\]*256+Sensor_Data;若接收到的前32bit数据为:0000000111110101_0000000100011010,那么,humidity = 1*256+245=501,temperature = 1*256+26=282,得到最终相对湿度和温度。
4结语
针对传统温湿度监测中布设线缆方式存在的布线复杂、成本高、维护不便以及扩展性能较差等不足,本文提出了一种基于ZStack的室内温湿度监测系统的设计方案,并给出了主要模块的软硬件设计框图和流程图。本设计结合了Zigbee和嵌入式技术,为Zigbee的应用开发以及智能家居的智能调控提供了理论和实践指导。
参考文献参考文献:
\[1\]新浪地产.智能家居行业的现状与困境\[EB/OL\]. http://dichan.sina.com.cn/zt/zhinengjiaju.
\[2\]NAZMIYE BALTAOZKAN, BENJAMIN BOTELER, OSCAR AMERIGHI.European smart home market development: public views on technical and economic aspects across the United Kingdom,Germany and Italy\[J\]. Energy Research&Social Science,2014(3):6577.
\[3\]姚凯旋. 基于ARM的智能家居系统的研究与设计\[D\]. 太原:太原理工大学,2012.
\[4\]NAVEEN SASTRY,DAVID WAGNER.Security considerations for IEEE 802.15. 4 networks\[C\]. In Proceedings of the 3rd ACM Workshop on Wireless Security,2004:3242.
\[5\]阚凤龙. ZigBee无线通信技术在智能家庭中的应用研究\[J\]. 科技广场,2008(8):5859.
\[6\]高守玮,吴灿阳.ZigBee 技术实践教程\[M\].北京:北京航空航天大学出版社,2009:229230.
\[7\]张奇松,尹航. ZSTACK剖析及其在无线测温网络中的应用\[J\]. 计算机系统应用,2009,18(2):103105.
责任编辑(责任编辑:陈福时)