何蕴良,耿淑琴,汪金辉
(北京工业大学电子信息与控制工程学院,北京100022)
摘要:设计了一种基于ZigBee无线传感的空气温湿度监测系统。其由一个协调器和多个路由器、终端设备形成Zig?Bee无线网络,把传感器采集数据处理后发送到协调器节点,协调器节点通过串口发送到PC进行显示。利用IAR集成开发环境和TI公司Zstack协议栈进行软件系统的设计,TI公司的CC2530芯片作为硬件系统的处理器,实现了对于空气温湿度的随时观测。设计从系统架构、硬件、软件3个方面进行思考和设计,成功建立了ZigBee无线传感网络。系统移植能力强,可扩展连接其他传感器,应用到其他领域。
教育期刊网 http://www.jyqkw.com
关键词 : ZigBee;无线传感;空气温湿度监测;监测系统
中图分类号:TN92?34;TP277 文献标识码:A 文章编号:1004?373X(2015)18?0133?04
收稿日期:2015?03?04
基金项目:国家自然科学基金(61204040;60976028);教育部博士点基金(20121103120018);北京市教育委员会科技计划面上项目(JC002999201301);北京市自然科学基金(4152004)
随着空气温度和湿度对生产生活的影响日益显著,人们对空气温度和湿度的关注程度也越来越高。与传统的空气温湿度监测系统相比,无线传感网络是当前国际上备受关注的、涉及多学科高度交叉、知识高度集成的前沿热点研究领域。他综合了传感器、嵌入式计算、现代网络及无线通信和分布式信息处理等技术,能够通过各类集成化的微型传感器协同完成对各种环境或检测对象的信息实时监测、感知和采集,这些信息通过无线方式被发送,并且以自组多跳的网络方式传送到用户终端,从而实现物理世界、计算机世界以及人类社会这三元世界的连通[1]。近年来,无线网络得到了快速的发展,出现了各种无线网络数据传输标准,如Wi?Fi、蓝牙、Wireless USB、ZigBee等。
传感器和自组织网络为代表的无线应用不需要较高的传输带宽,但却需要较低的传输延时和极低的功率消耗。因此,迫切需要一种符合传感器特点,低端的、面向控制和应用简单的专用标准,ZigBee 协议的特点满足了上述需求,它可与无线传感器网络完美地结合在一起[2]。因此,本文设计了一种基于ZigBee无线传感网络的空气温湿度监测系统。
1 ZigBee 无线传感网络
1.1 ZigBee技术
ZigBee是一种近距离、低复杂度、低功耗、低成本的双向无线通信技术,主要用于距离短、功耗低、且传输速率不高的各种电子设备之间的数据传输(包括典型的周期性数据、间歇性数据和低反应时间数据)[3]。ZigBee作为一种被广泛应用的通信技术,有完善的协议架构,ZigBee协议架构建立在IEEE 802.15.4标准的基础之上[4],协议架构如图1所示。协议采用分层实现的思想,主要分为物理层、介质访问控制层、网络层和应用层。其中物理层和介质访问控制层有IEEE 802.15.4 标准定义,其他层有ZigBee联盟定义。不同的层负责实现不同的功能,数据只能在相邻的层之间流动。
ZigBee协议可支持自组网技术。自组网相对常规通信网络而言,最大的区别就是可以在任何时刻、任何地点不需要现有信息基础网络设施的支持,快速构建起一个移动通信网络[5]。在无线传感器网络应用时,节点通常被放置在没有基础设施的地方,节点位置不能预先知道,节点之间邻居关系也不知道,一般通过随机布散的方式放置终端设备。这就要求无线传感系统具有自组织能力,能够自动进行配置和管理,自动形成网络系统。
1.2 ZigBee网络组成
构成网络的基本成员称为设备。根据设备所具有的通信能力,可以分为全功能设备(Full?Function De?vice,FFD)和精简功能设备(Reduced?Function Device,RFD)[6]。按照设备在网络中功能的不同可以分为协调器,路由器和终端设备,如图2所示。协调器和路由器是FFD,而终端设备是RFD。全功能设备具备完整的协议栈,可以在网络中作为协调器建立网络或者路由器实现路由组织功能。简化功能的设备只能用作终端设备加入已有的网络,并且只能与而网络中的全功能设备通信。协调器是整个网络的中心,它的功能包括建立、维持和管理网络,分配网络地址等,在整个网络启动完成以后,它的功能就相当于路由器的功能。路由器主要负责路由发现、消息传输、允许其他节点加入所在网络。在距离远的时候,路由器也可以作为数据的“跳板”或者是“接力棒”,使得传输距离可以大大加长。终端设备主要负责数据的采集和控制功能,然后将获得的信息发送给路由器或者协调器节点。
2 系统硬件设计
2.1 系统核心芯片
硬件设计主要包括终端设备设计、路由器设计和协调器设计。设计均采用TI公司的CC2530F256芯片,它结合了TI业界领先的ZigBee协议栈Zstack,提供了一个强大的解决方案。CC2530 芯片上系统(SoC)是高度集成的解决方案,可支持快速、廉价的ZigBee 节点的构建[7]。这比以往所用的CC2430芯片有了性能上的提高。它的内部模块大致分为3种类型CPU 与内存相关模块、射频相关模块、外设、时钟和电源管理模块。CC2530芯片集成了2.4 GHz的射频收发器、增强型工业标准的8051 MCU、最大256 KB可编程FLASH、8 KB的RAM,并提供有一套广泛的外设(包括2个USART、12位ADC和21个通用GPIO)[8]。
2.2 终端设备设计
协调器主要是建立和启动整个网络,路由器主要是传输数据,而系统连接的各类传感器和整个系统的数据的来源,都取决于终端设备的设计。因此终端设备的设计几乎代表了整个系统的主要作用与功能,在此着重说明终端设备的设计。
图3 为终端设备的电路原理图,由于CC2530 内部集成功能强大的外设资源,所以它在片外所需的电路设计大大精简。电源VDD采用3.3 V直流供电,复位电路为低电平复位。温湿度传感器DHT11 采集温湿度的信息,然后通过芯片I/O 口P0_6 传送给CC2530 芯片。DHT11 的输出是数字信号,因此可以配置端口为普通I/O口,方向为输入。值得提出的是,这个芯片内部集成了ADC 转换电路模块,使得一些模拟传感器的信号端也可以直接连接到芯片的I/O 引脚上,配置AD 对应的端口即可完成模/数转换,因而省去了外接ADC的电路复杂度。晶振有32 MHz和32.765 kHz两种,可支持系统有不同的工作模式。终端设备电路可以处于工作或休眠状态,当终端设备不需要实时采集数据时,系统可以休眠。休眠时候的功耗很低,因此终端设备可以通过电池供电,方便了它的可移动性。协调器和路由器的电路结构和大部分终端设备相同,增加了UART传输部分构成,而没有传感器部分。因为协调器和路由器的工作量和工作时间要比终端设备要大得多,要具有实时性,所以不宜采用电池供电。
3 系统软件设计
3.1 软件开发概述
软件设计包括终端设备软件设计、路由器节点软件设计和协调器节点软件设计。系统软件设计所用的工具包括瑞典公司的IAR System集成开发环境和TI公司开发的Zstack 协议栈。TI 在推出其CC2530 芯片的同时,也向用户推出了自己的ZigBee 协议栈软件Zstack,Zstack功能强大,它为用户提供了许多必要的应用函数接口,用户可以直接调用这些函数来实现特定功能。本文在Zstack的基础之上,利用其已有的软件架构,开发出了空气温湿度监测软件系统。
3.2 OSAL运行机制
从ZigBee 2006 协议栈开始,ZigBee 协议栈内加入了实时操作系统,称为OSAL(Operating System Abstrac?tion Layer)。OSAL 作为一种资源管理机制,可以为多个任务分配资源,实现了类似操作系统的某些功能但其实质与真正意义上的操作系统还是有一定区别[9]。OSAL作为一种支持多任务运行的系统资源分配机制,是整个Zstack 协议栈的核心,在开发过程中需要创建OSAL任务来开发应用程序,每一个任务只有一个任务ID 号。OSAL 中有3 个重要的变量tasksCnt,taskEvents和taskArr。其中tasksCnt是无符号整形变量,保存了任务的总个数;taskEvents是一个指针变量,指向了事件表首地址;taskArr 是一个数组,该数组的每一项都一个函数指针,指向对应任务处理函数地址,如图4所示。
OSAL的工作原理如下:通过taskEvents指针访问事件表的每一项,如果有事件发生,则查找函数表找到事件处理函数进行处理,处理完后,继续访问事件表,查看是否有事件发生,无限循环[10]。协议栈中的每一层都设计了一个事件处理函数,用来处理这一层操作相关的各种事件。利用Zstack 中已被定义好的层,重新定义和编写用户自定义层,加入了实现设计中特定功能的代码。
3.3 数据流与代码实现
终端设备上的传感器采集数据信息,传递给其CPU,CPU负责对接收到的数据进行读取并经过处理后保存。然后通过终端设备的射频发送模块无线发送这些数据到该节点的父节点。一般父节点是路由器,经过转发,数据最终汇聚到协调器。协调器处理和保存数据,并通过UART 端口输到PC 显示。由于终端设备连接有传感器,在终端设备的程序代码中包括了传感器的编程。编写温湿度传感器DHT11 的数值读取函数为DHT11_Read(),定义一个数组str[8]。编写温湿度读取函数readRH(),把DHT11_Read()的返回值保存到str[8]中。
编写函数MyApp_SendTheMessage(),先调用readRH()读取数据,之后配置地址、方式等信息,再调用AF_DataRequest()就可以实现数据发送,AF_DataRe?quest()的具体实现过程在协议栈已经定义,只需要在调用时传递所需的实参。传感器数据会被封装成消息,然后被发送到了协调器路由器。同理,可在该函数中调用采集其他传感器数据的函数,得到其他传感器采集的数据,一起发往协调器或者路由器,实现多种数据的采集和发送。路由器在数据流中实现的是数据的转发功能,统一转发给协调器节点,由协调器再进行串口传输。编写协调器接收数据的函数,根据任务ID号识别含有待接收数据的消息,调用协议栈函数osal_memcpy()从消息包中读取出终端设备传递来的数据之后,再调用HalUARTWrite()函数发给串口,即可在串口调试工具中实现观测数据。
4 测试结果
通过串口调试工具AccessPort,可以协调器传输过来的数据显示出来。现在需要配置串口调试工具选项。设置串口为COM5,由于软件UART配置的时候设置的波特率为115 200 b/s,所以在此处必须和配置的波特率一致,同为115 200 b/s,无校验位,数据为8,停止位为1。配置好之后点击确定打开串口。
开打串口,硬件初始化完成后,由终端设备发送到协调器的实验数据可以显示出来,如图5所示。当前温度为28 ℃,湿度为33%,经过多种环境和实地验证,实验结果正确。由此证明整个硬件系统和软件系统运转正常。
5 结语
设计实现了利用ZigBee无线传感技术对空气温湿度的实时监测,成功地把ZigBee无线通信技术与传感器相结合,实现了传感器数据的无线传输。整个ZigBee无线传感器网络成功建立起来,可在终端设备连接若干个不同类型的传感器,实现多种传感器数据的同时测量。与传统的传感器数据采集和传输相比,利用ZigBee进行无线数据传输,大大减少了布线的复杂度和成本,监测范围和可移动性更广,使得数据采集和传输变得更加灵活与便捷。作为一种新型的网络,ZigBee无线传感网在军事、工业、农业、交通、医疗和家庭办公自动化等领域有着广泛的用途,其在国家安全和经济发展等方面发挥了巨大作用。随着无线传感器网络不断的快速发展,它还将被扩展到越来越多新的应用领域。
教育期刊网 http://www.jyqkw.com
参考文献
[1] 姜仲,刘丹.ZigBee 技术与实训教程[M].北京:清华大学出版社,2014.
[2] 彭燕.基于ZigBee 的无线传感器网络研究[J].现代电子技术,2011,34(5):49?51.
[3] 青岛东合信息技术有限公司.ZigBee 开发技术及实践[M].西安:西安电子科技大学出版社,2014.
[4] LANMAN Standards Committee. IEEE Std 802.15.4 ? 2003.
Wireless medium access control (MAC) and physical layer (PHY)specifications for low ? rate wireless personal area net?works(LR?WPANs)[S]. New Jersey:IEEE Computer Society,2003.
[5] SCHILLER J H. Mobile communications [M]. 2nd ed. NewYork:Addison?Wesley,2000.
[6] 孙彩云.基于ZigBee的无线组网技术研究[D].太原:中北大学,2011.
[7] 樊娜.基于ZigBee的智能粮仓温度监测系统研究与设[J].微型机与应用,2015,34(5):70?72.
[8] 徐健,杨珊珊.基于CC2530的ZigBee协调器节点设计[J].物联网技术,2012(5):55?57.
[9] 廖小琴.基于CC2430的ZigBee协议栈的研究与应用[D].南昌:南昌大学,2013.
[10] 王小强,欧阳俊,黄宁淋.ZigBee无线传感器网络设计与实现[M].北京:化学工业出版社,2012.
作者简介:何蕴良(1991—),男,河北秦皇岛人,硕士研究生。研究方向为集成电路设计与系统。
耿淑琴(1970—),女,山西运城人,博士。研究方向集成电路设计与系统、无线传感网络等。
汪金辉(1982—),男,河北唐山人,博士,副教授。研究方向集成电路设计、嵌入式系统等。