基于无线传感网络的智能机房环境监控系统的设计与实现
扫描二维码
随时随地手机看文章
摘要:针对传统人工采集费时费力和有线监控布线复杂、维护困难的局限性,将传感器与ZigBee无线网络技术相结合,提出了无线传感网络的智能机房环境监控系统的设计方案,并进行了实现。该系统利用ZigBee技术实现对采集数据及信息的无线收发,通过公共网关接口CGI将数据和控制信息传送到互联网,操作人员从远距离的PC机上实时查看数据、实施控制,从而实现了真正意义的远程监控。
关键词:ZigBee;无线网络;传感器;环境控制;CGI
现有的机房监控主要采用人工监控和有线监控两种方法。传统的人工检测和控制方法费时费力;有线传输面临着布线复杂、维护和更新升级困难,而无线传感网络技术的诞生给它带来了一场全新的革命。
文中提出了一种基于ZigBee无线网络技术的智能机房环境监控系统设计方案,通过对机房的湿度、温度、光照、火警和水浸等几个重要因素进行实时的智能化监测和控制,同时还可以通过手机短信通知管理者。文中重点介绍了基于ZStack的应用程序开发,实现了对机房内多种信息的远程监测、处理和控制。
1 ZigBee无线网络技术
ZigBee是一种新兴的短距离、低速率无线网络技术。它是一种介于无线标记和蓝牙之间的技术方案。ZigBee是建立在IEEE 802.15.4标准之上的,IEEE规定了ZigBee的物理层和媒体接入控制层,网络层、应用支持子层和高层应用规范由ZigBee联盟制定。ZigBee协议规定了3个可用频段868 MHz、915 MHz和2.4GHz,分别提供:1个、10个和16个共计27个信道。其中2.4GHz为全球通用频段,传输速率达250Kb/S。 ZigBee技术采用CSMA—CA的信道接入方式,可有效避免通信的冲突。
ZigBee网络支持星状、网状和树状三种自组织无线网络类型,其连接地址分为16位短地址和64位长地址,最多一个主节点可管理254个子节点;同时主节点还可由上一层网络节点管理,可组成多达65 000个节点的大网,一个区域可以有100个ZigBee网络同时存在。
基于ZigBee技术的无线传感器网络是集信息采集、信息传输、信息处理于一体的综合智能信息系统,具有低成本、低功耗、低速率、高可靠性等特点。
2 系统总体设计
2.1 系统结构
以自动控制原理为理论基础,应用传感器与执行器件构成闭环控制系统。传感器节点配有传感器感知机房环境,控制节点配有执行器件改善机房环境。传感器节点与控制节点相互配合,共同为机房内机器运行提供适宜的环境。
本系统由无线传感器网络、网关和主控中心组成。无线传感器网络是物联网的神经末梢,负责感知环境的变化,并将数据通过网关传输到互联网。系统结构如图1所示。
2.2 网关系统结构
网关是互联网与无线传感器网络之间的数据通讯桥梁。本方案提供了3种网关接入方式:本地访问、手机访问和互联网访问。网关系统结构如图2所示。
2.3 传感器网络结构
ZigBee网络存在3种逻辑设备类型,即协调器、路由器、终端设备,并且在一个ZigBee网络中有且只有一个协调器。当协调器被激活后,它就会建立一个自己的网络。本方案采用的是星型网络,在星型网络结构中只有一个唯一的PAN主协调器,通过选择一个PAN标识符确保网络的唯一性。路由或终端都可以加入到这个网络中来。
3 硬件设计
本系统硬件主要包括3部分,其中无线传感器网络核心是基于TI公司的CC2430开发的无线模块;网关是基于ARM微处理器的嵌入式平台;主控中心是PC机。
CC2430是挪威Chipcon公司的一款真正符合IEEE802.15.4标准的片上ZigBee产品。这种解决方案能够提高性能并满足以ZigBee为基础的2.4 GHz ISM波段应用,及对低成本、低功耗的要求。CC2430无线单片机在待机时的电流消耗仅0.2μA,在32 kHz晶振下运行时的电流消耗小于1μA。因此,使用小型电池寿命可以长达10年。[!--empirenews.page--]
3.1 ZigBee协调器节点硬件设计
ZigBee协调器节点主要由无线收发器CC2430、射频天线RF、电源模块、晶振模块、串口模块和LED指示灯组成,功能模块如图3所示。RF的输入/输出是高阻和差动的,用于RF口最合适的差动负载是(115+180 Ω)。当使用不平衡天线时为了优化性能,应当使用不平衡变压器。由于CC2430的工作电压为3.3 V,所以要用电压转换模块把5 V降到3.3 V。CC2430可以同时接32 MHz和32.768 kHz的两种频率的晶振电路,以满足不同的要求。串口模块用于ZigBee协调器将无线接收的数据信息传送给网关,同时接收网关传送过来的控制命令。LED指示灯用于显示网络连接状态。
3.2 传感器节点硬件设计
无线传感器节点由各种数据采集模块、CC2430数据传输模块、电源模块和外部数据存储等功能模块组成,功能模块如图4所示。数据采集模块负责采集监测区域的温度、湿度、光照强度、火警和水浸等信息并完成数据转换;CC2430数据传输模块负责与路由节点进行无线数据交换、传输采集数据、接收控制命令。外部数据存储模块用来保存传感器节点采集的数据。电源管理模块采用两节5号干电池。LED指示灯显示加入或退出网络的状态。
路由器节点的主要任务是将不同区域的数据从传感器节点路由到协调器节点,因此电路比较简单,不再赘述。
4 软件设计
本系统采用的开发环境是IAR7,系统软件是基于TI公司的Z-Stack 2006协议栈开发。从系统结构中可以看出本系统软件设计包括3大部分:无线传感器网络基于Z-Stack的应用程序开发;网关基于Qt的应用程序开发;主控中心Web应用程序开发,本文着重实现基于Z-Stack的应用程序开发。
4.1 ZigBee协议栈
ZigBee协议栈由一组子层构成,每一层向它的上层提供数据和管理服务,分别为物理层(PHY)、媒体访问控制层(MAC)、网络层(NWK)和应用层(ADL),应用层又分为:应用支持子层(APS)、ZigBee设备对象(ZDO)和由制造商制定的应用对象。其中PHY和MAC位于最低层,且与硬件相关;除此之外的其他层建立在PHY和MAC层之上,并且完全与硬件无关。分层的结构脉络清晰、一目了然,给设计和调试带来极大的方便。
[!--empirenews.page--]
实际开发中根据需要将协议栈的层次又做了细化,Z-Stack软件的总体架构如图5所示。Z-Stack中的硬件抽象层HAL提供各种硬件模块的驱动,基于HAL之上是操作系统抽象层OSAL,OSAL实现了一个易用的操作系统平台,以实现多任务为核心的系统资源管理机制。Z-Stack采用操作系统的思想来构建,采用事件轮循机制,当各个层初始化完成后,系统将会进入低功耗模式,当有事件发生时,系统立刻被唤醒,并转而进入中断处理事件,处理完成后再次进入低功耗模式,减少功耗。OSAL把优先级放在了最重要的地位。当在处理的任务中有两个以上事件待处理,处理完一件后,也要去查询优先级更高的任务。赋予优先级高的任务最大的权利,尽可能保证高优先级任务的每一个事件都能得到最及时的处理。操作系统任务调度流程如图6所示。
开发所用协议栈目录结构如图7所示。主要用到的文件有:ZMain/ZMian.c、Tools/f8wConfig.cfg、App/OSAL_SampleApp.c和App /SampleApp.c。其中ZigBee协议栈的main函数在ZMain.c中,总体上来说它一共做了两件事,一个是系统初始化,即由启动代码来初始化硬件系统和软件架构需要的各个模块;一个是执行操作系统实体。fSwConfig.cfg为网络配置文件。App/OSAL_SampleApp.c为操作系统任务初始化和添加文件。App/SampleApp.c为应用程序核心文件。整个Z-stack的主要工作流程大致分为:系统启动,驱动初始化,OSAL初始化和启动,进入任务轮循几个阶段。
[!--empirenews.page--]
4.2 无线传感网软件平台搭建
操作系统是通过调度各项任务来使整个系统协调的运作起来的。对不同类型设备的处理作为一个任务,把新建的任务添加到系统中,操作系统便会把新任务与协议栈融合到一起,使系统具备新的功能,即完成了无线传感器网络软件平台的搭建。
1)建立任务:任务初始化函数的建立
任务初始化函数要做两件事,首先是为任务获取系统分配的任务ID,最后是初始化运行任务所需的硬件资源及变量。
任务初始化函数的格式为:
XXX_Init(unsigned char task_id)
{
XXX_TaskID=task_id;
初始化任务运行所需的硬件资源及变量。
}
其中“XXX”表示任务的名称。“XXX_TaskID”是用户自己定义的变量,用于存储任务的ID号。
2)建立任务:任务事件处理函数的建立
对模块的各种外部变化操作系统以事件的方式来处理,不同的宏定义代表不同事件,比如:KEY_CHANGE为按键事件;ZD0_STATE_CHANGE为网络状态变化事件;AF_INCOMING_MSG CMD表示接收到其他节点发送来的数据,该事件为无线处理的重要事件。
任务事件处理函数原型为:uint16 Sample_ProcessEvent(uint8 task_id,uint16 events);形参task_id为任务ID号,events为事件代号。
3)添加任务
所有的任务添加都是在应用层App/OSAL_SampleApp.c中通过osalTaskAdd()函数添加一个OSAL任务,函数原型为:
void osalTask Add(const pTaskInitFn pfninit,
const pTaskEventHandlerFn pfnEventProcessor,
const byte taskPriority)
参数1:pfnInit(指向任务初始化函数的指针);
参数2:pfnEventProcessor(指向任务事件处理函数的指针);
参数3:taskPrioritv(任务优先级)。
4.3 ZigBee网络通讯设置与组网
4.3.1 网络通讯设置
在Tools/f8wConfig.cfg配置文件中定义了工程相关的网络通讯设置。其中比较重要的是ZigBee通信相关的信道通道的设置和PAN ID的设置。用户可以通过更改该文件中的相关宏定义,来控制ZigBee网络的通道和PAN ID,以此来解决多个ZigBee网络的冲突问题。信道是数据在物理层传输时使用的通道:PIN ID为ZigBee网络的标识符,用来区别不同的网络。
除此之外在启动网络前还需要修改模块的物理地址。在ZigBee网络中,无论是协调器还是路由器或终端节点,每个模块都有自己唯一的64位物理地址。物理地址的修改有两种方式,一种是通过Zmain/Zmain.c中的zmain_ext_addr()函数设置;另一种是使用Chipeon Flash Programmer软件。默认地址0xff ff ff ff ff ff ff ff为无效的,除此之外都是有效的,且保证在网络中的唯一性即可。
4.3.2 网络组建
1)协调器格式化网络
协调器将扫描DEFAULT_CHANLIST指定的通道,最后在其中之一上形成网络。如果ZDAPP_CONFIG_PAN_ID被定义为0xFFFF,那么协调器将根据自身的IEEE地址建立一个随机的PAN ID。如果ZDAPP_CONFIG_PAN_ID没有被定义为0xFFFF,那么协调器建立网络的PAN ID将由ZDAPP_CONFIG _PAN_ID指定,通常这个值介于0~0x3FFF。
2)路由器和终端设备加入网络
路由器和终端设备启动后,将扫描DEFAULT_CHANLIST指定的频道。如果ZDAPP_CONFIG_PAN_ID没有被定义为0xFFFF,则路由器或终端将强制加入ZDAPP_CONFIG_PAN_ID定义的网络。反之随机加入网络。
4.4 数据传输
系统中涉及的数据传输方式有两种:无线收发和串口收发。其中节点向协调器发送采集信息、协调器向控制节点发送控制信息是通过无线收发实现的;协调器将采集信息传送给网关、网关向协调器发送控制命令是通过串口收发实现的。
4.4.1 无线数据收发
1)无线发送 系统中采用短地址方式发送数据,数据以帧格式传输。在发送前按照协议规定的帧形式构建数据帧,然后调用无线发送函数。函数原型为:uint8 SendData(uint8*buf,uint16 addr,uint8 Leng);buf为发送数据指针;addr为目的地址;Leng发送数据长度。
2)无线接收 对于无线接收并没有像发送一样单独的处理函数,而是在任务处理函数中通过处理无线接收数据事件来完成处理的,具体函数如下:
其中AF_INCOMING_MSG_CMD为无线接收事件宏定义,SampleApp_MessageMSGCB()函数则为具体接收事件的处理函数。
4.4.2 串口数据收发
系统中所用的串口为无线芯片CC2430自带资源,通过自定义串口收发函数来使用该资源,从而实现网关与协调器节点数据传输。
串口发送函数原型为:
void UartTX_Send_String(char*Data,int len);
串口接收函数原型为:
char UartRX_Receive_Char(void);
5 结束语
随着物联网概念的普及,基于ZigBee的无线传感器网络技术得到越来越广泛的应用。文中将ZigBee网络技术应用于机房环境监控系统中,介绍了系统总体架构,无线传感器网络部分的软、硬件设计及实现过程,重点介绍了无线网络的构建与数据传输。整个系统能实时、准确地测量并显示机房内各点的数据信息,使管理者能够及时了解机器工作环境,从而及时、有效地采取措施。如果更换采集节点的传感器,该监控系统可以应用于不同的场合,可见无线传感器网络技术具有广阔的应用前景。