资源描述
河南科技学院
2015-2016学年第二学期期终考试
无线传感器网络
题目:基于ZigBee技术的智能家居环境监测系统
专业班级: 信工(通信)131
成 员: 20131524109 郑浩
教 师: 曲培新
完成时间: 2016-6-29
目录
1.需求分析 1
2.总体设计 2
2.1 系统结构 2
2.2 系统功能定义 2
2.3 系统设计要求 3
3.主要软件设计 4
3.1 软件部分总体介绍 4
3.1.1 软件设计整体流程 4
3.1.2 协调器的自动组网流程 5
3.2 协调器节点软件实现 7
3.3 传感器节点软件设计 9
3.4 本章小结 10
4.总结 10
5.参考文献 11
1.需求分析
随着计算机软硬件技术、网络技术和工业综合自动化系统整合水平的不断发展,对监控数据传输的实时性、数据接口的开放性以及数据链接的安全性的要求越来越高,有线控制网络的局限性也越来越突出,无线的优势也越来越明显。其中ZigBee短程无线网技术以其数据传输安全可靠、组网简易灵活、设备成本低、电池寿命长等优势,在工业控制领域中展现了深厚的发展潜力。
ZigBee技术填补了低成本、低功耗和低速率无线通信市场的空白,其使用的便捷性是该技术成功的关键,它适用于短距离小范围的基于无线通信的控制领域,必将在工业自动化等领域得到广泛的应用。
数据采集技术已经相对成熟,将它重新构建于ZigBee网络平台之上,将成熟技术的稳定性和新技术的便捷性充分结合起来,这种结合对于工业现场十分必要。减少了在某些场所有线网络布线以及工人人工采集数据的不便,同时可以方便的于各种传感器搭配用于不同的场合。
无线环境监测系统拥有全面、可靠的环境信息采集分析能力。为了实现环境信息监测的精确性、全面性并且方便使用,本文的环境监测系统应具有以下各种特点:
(1) 多对象监测
环境监测系统需要检测多种环境信息,如:温度、湿度、有害气体浓度、光照强度等。这样才能为用户提供全面的环境信息参考。
(2) 多点监测
需要对同一环境参数在不同地点和不同时间分别进行测量,这是因为环境中各种环境信息不同的时间和空间上分布不具有均匀性,由此实现监测的全面性和高精度性,甚至有时需要对同一环境参数在多点进行测量。
(3) 系统灵活
当有新的环境参数被要求测量时,系统的可扩展性要求灵活,方便增加节点,以降低成本。
传统的工业数据采集与控制系统,其数据传输一般以工业控制总线作为介质,以致大都局限于本地的近距离范围之内应用。随着国民经济发展,企业及机构的管理规模不断扩大,其需要管理与控制的对象更趋多样性,甚至具有流动性,分布的范围也涉及到不同的地域。为了对这些分散的对象进行有效的集中管理,对远程及移动数据采集与控制的需求也就日益迫切。
基于Zigbee技术的物联网智能家居系统与以前的主机式集中控制系统的最大区别是采用基于Zigbee组网通信方式,省去了复杂、困难的布线工作,降低了成本,实现了家居的智能化。
2.总体设计
2.1 系统结构
本论文是基于ZigBee技术的无线传感器网络环境监测系统,所以根据ZigBee技术的标准和特点设计了由多传感器节点,协调器节点和PC组成的该系统。其中,传感器节点通过ZigBee无线技术与协调器进行信息的交换,协调器则通过串口RS-232与PC进行相连通信。本文设计的系统结构如图2-1所示
PC
协调器
传感器节点
传感器节点
传感器节点
图2-1 系统结构图
由图2-1可知,本系统中传感器节点主要负责的是环境信息的采集与发送,协调器节点主要负责的是网络的建立、终端节点管理、数据处理和对PC端的数据通信。当然在实践过程中可以根据家庭居住环境的大小和所需监测的内容,来增加或减少传感器节点。当监测区域较大时,可用增加传感器节点的方法来保证网络的连通性,相反区域较小时可以根据情况减少路由器节点的设置以节省系统资源,降低成本。在本设计的实践环节,本人只是用了一个温度传感器做了演示。
2.2 系统功能定义
为了实现基于ZigBee技术的家居环境监测系统的设计,现对系统的各种功能作出以下定义:
(1) 管理中心(PC):实时显示家庭中各种的环境信息,并且用户可通过PC实现对网络中各个节点设置与管理,如:管理网络各个节点的节点信息,发送数据采集命令,发送休眠指令,设置传感器节点采集环境信息的周期的长短;
(2) 协调器节点:组建并初始化ZigBee无线网络,管理各传感器节点终端,发送与接收网络数据与指令,同时与管理中心(PC)进行通信;
(3) 传感器节点:对周围环境信息进行实时采集,并通过ZigBee无线网络实时将环境信息发送到协调器节点。
本文设计的环境监测系统主要是获取家庭环境中的一些环境参数,以实现对环境信息的全面监控,从而为用户的决策提供有利的参考。以下是对各种参数的介绍:
(1) 温度
人体对温度的变化甚为敏感,在环境温度高于36摄氏度后,每增加一度对人体的负面影响都是几何级的增加,故此系统中最重要也是最基本的就是环境中温度的采集。温度传感器可以在用户设定的频率下采集区域的温度信息,并将其发送到协调器节点进行处理,再由协调器将处理结果数据通过串口发送到PC,此时,PC可按之前用户设置好的参数和程序对空调系统进行控制,从而实现对室内温度的控制,当然这些是后续控制,不在本文讨论范围内。家庭中的每个房间可以多放几个这样的类似节点,可实现在同一个房间进行多点的温度信息采集,以提高温度测量的准确度。
(2) 湿度
人类对湿度虽然不是特别敏感,但其时时刻刻亦影响着人们的健康,尤其是老年与儿童。目前人们经常是通过普通的加湿器来调节室内湿度,此类加湿器一般只是手动操作,这样就存在着人为的主观不确定性,最终也有可能不利于环境之改善。而在本系统中,通过湿度传感器对湿度信息的采集,再经由PC的处理后,对加湿器进行控制,即可达到科学明了地控制室内的湿度。
(3) 一氧化碳气体
燃气的主要成分就是一氧化碳 当燃气发生泄漏时,空气中一氧化碳浓度达到一定时,就会对家庭人员生命带来威胁。故对一氧化碳气体浓度监测也是必不可少的一部分。当系统检测到一氧化碳气体浓度大于用户设定是初值时,PC会立即发送报警信号到报警装置或者是家庭成员的手机或直接报警,PC在启动报警装置的同时,或可以自动控制开窗,以达到室内空气流通的效果,保证家庭成员的安全。
(4) 亮度
亮度的监测可以利用分布在各个房间里的光敏传感器来实现。光敏传感器可以将感知的光线强度信息发送到协调器节点,协调器则将信息传输到PC,经过处理和判断光线强度,来控制窗帘的开关或灯的开关。当光线过强时,可以控制窗帘自动合起或电灯关闭,反之则可以控制其打开或电灯打开。
当然,本系统可以根据用户的不同需求增加或减少传感器的数量,及使用不同的传感器进行监测。
2.3 系统设计要求
本系统是在家庭环境中实现各种功能,根据此特点,可以总结出以下几种要求。分别从软硬件两个方面来得以实现。
1、硬件要求
(1) 低功耗:由于是无线传感网络,节点较多,所以只能由电池供电,故要求低功耗以延长使用,减少电池更换次数。
(2) 安全性:本系统为家居环境控制系统做前期的数据采集,若出现错误,则可导致PC判断错误,导致错误控制。如,未发生一氧化碳泄露即报警等。故要求系统的安全性
(3) 外观:由于要安装在家庭各个地点,故要求其尽量小巧,美观。
(4) 可扩展:能够根据用户的不同需求,随时增加或减少传感器节点设置。
2、软件要求
软件方面要求程序模块化设计,可以使系统升级方便以备增加节点时修改其中一个模块而其他地方无需改动;程序设计要简单,数据传输格式要统一。
3.主要软件设计
3.1 软件部分总体介绍
3.1.1 软件设计整体流程
本设计的网络拓扑结构选择树状结构,树状结构必须有路由的加入,但路由实在终端节点和协调器之间的距离超过接收不到的情况下转发协调器与终端节点所发送的数据,而本设计只设计了近距离的数据收发,所以本设计的软件部分设计只要对协调器、终端节点分别进行设计。终端节点负责采集当前的温度数据在现场实时的显示,并最终发送给协调器,协调器在接收到终端节点发送过来的温度数据后进行相应的处理,然后通过串口发送到上位机显示。下图为整个系统的流程图:
温度
终端节点
协调器节点
上位机PC
图3-1 系统整体流程
路由器
信号强
信号弱
从上图可以看出,终端节点有两种与协调器的通信方式,当终端节点检测到的协调器信号强度超过路由器时,将直接与协调器通信,相反如果检测不到协调器的信号或者信号强度比路由节点的弱,则通过路由节点将数据传送给协调器。
在TI提供的z-stack协议上,设备启动的过程都由协议栈本身做好,用户只需指定其启动身份即可。
3.1.2 协调器的自动组网流程
第一步:Z_Stack由main()函数开始执行,main()函数做两件事:一是系统初始化;二是开始执行轮询式操作系统。
第二步:进入osal_init_system(); 操作系统初始化。
第三步:进入osalInitTasks(); 执行操作系统任务初始化函数。
在这个函数中用户需要考虑的有:
Hal_Init( taskID++ ); 硬件抽象层初始化。
ZDApp_Init( taskID++ ); ZDApp层初始化。
SampleApp_Init( taskID ); 应用层SampleApp层初始化。
第四步:进入ZDApp_init()函数,执行ZDApp层初始化。
这一步中又包含了很多分支部分:
The first step:进去void ZDApp_Init( uint8 task_id ) ,对ZDApp层初始化。
The second step:执行ZDOInitDevice( 0 )。
The third step:执行ZDOInitDevice(),ZDO层初始化设备。
The fouth step:执行 ZDApp_NetWorkInit()网络初始化。
The fifth step:触发ZDO_NETWORK_INIT(网络初始化)事件,进入ZDApp_event_loop() 函数。
The sixth step:ZDO_StartDevice();启动设备,其中这函数的参数分别为:设备逻辑类型,启动模式,信标时间,超帧长度。
ZDO向网络发送一个组网请求,由于ZigBee协议栈是版开源的,网络层的具体代码无法看到,但是网络组建成功后会发送一个确认信息给ZDO层,由ZDO_NetworkFormationConfirmCB()函数来接收发送过来的确认信息。
The seventh step:进入ZDO_NetworkFormationConfirmCB(),给予ZDO层网络形成反馈信息(协调器),执行osal_set_event( ZDAppTaskID, ZDO_NETWORK_START ); 发送网络启动事件 到 ZDApp层,接着转到ZDApp_event_loop()函数,进去void ZDApp_NetworkStartEvt( void ) 处理网络启动事件;再执行osal_set_event( ZDAppTaskID, ZDO_STATE_CHANGE_EVT );,设置网络状态改变事件,发送到ZDApp层,触发ZDO_STATE_CHANGE_EVT事件。
The eighth step:执行ZDApp_event_loop()函数,找到相对应的网络改变事件。
The ninth step:执行ZDO_UpdateNwkStatus()函数, ZDO状态改变事件。
The tenth step:执行zdoSendStateChangeMsg()函数,发送状态改变消息。
The eleventh step:执行MT_ProcessIncomingCommand()函数。
The twelfth step:执行MT_ZdoStateChangeCB 自此协调器组网完毕。
整个的组网流程图如图5-2所示:
End
Main()
Osal_init_system()
Osal_start_system
Event happend?
N
Y
End
ZDApp_Init()
OsalInitTask()
Osal_init_system()
ZDO_NetWorkFormationConfirmCB()
ZDApp_event_loop()
ZDApp_NetworkInit()
ZDO_Init()
ZDOInitDevice(0)
ZDApp_event_loop()
ZDO_StartDevice()
Osal_set_event()
ZDO_UpdateNwkStatus()
Osal_set_event()
ZDApp_event_loop()
MT_ProcessIncomingCommand()
zdosendStateChangeMsg()
MT_ZdoStateChangeCB()
End
ZDApp_NetworkStartEvt()
ZDApp_Init()
图3-2 协调器组网流程
3.2 协调器节点软件实现
协调器节点主要实现ZigBee网络的建立(如图3-2),指令的发送,数据的接收、转发,与PC通信。同时,为了方便用户使用,控制中心节点也可以单独作使用,直接通过LCD显示屏观察监测数据。因此,协调器节点的软件主要由以下几个模块组成:
(1)ZigBee数据收发模块:
此模块的协议栈代码是TI公司提供的,其符合802.15.4协议,下面分别是无线发收函数的程序。
无线数据发送函数:
void zb_SendDataRequest ( uint16 destination, uint16 commandId, uint8 len, uint8 *pData, uint8 handle, uint8 txOptions, uint8 radius )
{
afStatus_t status;
afAddrType_t dstAddr;
txOptions |= AF_DISCV_ROUTE;// 分配地址
if (destination == ZB_BINDING_ADDR)
{
dstAddr.addrMode = afAddrNotPresent;//afAddrNotPresent=0}
else
{
//应用短地址
dstAddr.addr.shortAddr = destination;
dstAddr.addrMode = afAddr16Bit;//afAddr16Bit=2
if ( ADDR_NOT_BCAST != NLME_IsAddressBroadcast( destination ) )
{txOptions &= ~AF_ACK_REQUEST; }
}
// 设置结束点
dstAddr.endPoint = sapi_epDesc.simpleDesc->EndPoint;
// 发送数据
status = AF_DataRequest(&dstAddr, &sapi_epDesc, commandId, len,
pData, &handle, txOptions, radius);
if (status != afStatus_SUCCESS)
{
SAPI_SendCback( SAPICB_DATA_CNF, status, handle );
}
}[12]
//无线数据接收函数:
void SAPI_ReceiveDataIndication( uint16 source, uint16 command, uint16 len, uint8 *pData )
{
#if defined ( MT_SAPI_CB_FUNC )
if ( SAPICB_CHECK( SPI_CB_SAPI_RCV_DATA_IND ) )
{
zb_MTCallbackReceiveDataIndication( source, command, len, pData );
}
else
#endif //MT_SAPI_CB_FUNC
{
zb_ReceiveDataIndication( source, command, len, pData );
}
}[13]
(2)串口通信模块;
在ZigBee协议栈中,协调器节点的串口通信单元已经由硬件层实现了接口封装,其实现文件为hal _ uart.c和hal _ uart.h。后续开发人员在使用时,只需要对此单元进行适当的配置就可以调用此单元,实现数据的收发,故此不再赘述。
综上,协调器节点的程序流程图如图3-2所示:
开始
硬件网络初始化
初始化完成
发送指令
接收传感器信息
将信息发送给PC
否
是
是
否
图3-2 协调器程序流程图
3.3 传感器节点软件设计
传感器节点实现的是数据的采集和发送,其启动后和协调器一样开始进行网络初始化,然后开始与协调器通信,加入网络。所以其收发程序与协调器相似,具体流程如图3-3所示。
每个不同的传感器节点所测得环境信息不通,本文涉及有温度,一氧化碳、亮度等。每个传感器数据获取传输过程相似,故本文只以温度传感器做介绍,其余不做叙述。
开始
硬件网络初始化
初始化完成
发送指令
接收温度传感器信息
将信息发送给协调器
否
是
是
否
图3-3 传感器节点程序流程图
3.4 本章小结
本章先介绍了CC2530的开发环境,又主要介绍了智能家居环境监测系统各个部分的软件设计,包括协调器节点,传感器节点的数据传输流程图,都有介绍与说明,并给出了部分核心函数。
4.总结
经过一周的努力,以ZigBee无线通信技术为基础,设计了无线家居环境监测系统,给出了总体的设计方案,同时还给出了硬件、软件及上位机软件的设计。所得到的系统易用、可扩展,基本达到了设计要求。
另外,本系统还有许多可改进的地方,比如说功耗方面,可以在电源管理程序和无线发射程序方面改进,以达到更节省能源的效果;本系统中使用的是串口将信息发送到管理中心,以后还可以通过无线发送到手机客户端,以便人们无论在何处都能实时了解到环境的变化。还有报警方面做得还不够完善,有待提高。
每一个设计都是老师对于我们的谆谆教导,所以我们做程序设计必须有一个良好的态度,认真地对待,只有这样才可以学到更多的专业知识,为将来的工作做好各个方面准备。
5.参考文献
[1] 杨剑,无线风潮中看ZigBee[J].电子与电脑,2007,7:22-25.
[2] 王磊,李增荣.低能耗无线传感器网络节点的设计[J].电脑知识与技术.2009,01:22-25.
[3] 陈靖,吴景东.基于ZigBee协议的无线传感器网络技术的分析和应用[J].工业控制计算机,2010,11:5-7.
[4] 戚剑超,魏臻.ZigBee树型路由算法的改进[J].合肥工业大学学报(自然科学版).2010,04:33-36.
[5] 李战明,刘宝,骆东松.Zigbee技术规范与协议栈分析[J].信息化纵横,2009,05:12-16.
[6] 黄建华.基于ZigBee2006的无线传感器网络设计与实现[D].西安电子科技大学,2009年.
[7] 马新涛.基于Zigbee技术的无线网关设计[D].中国海洋大学,2010年.
[8] 张杰,涂巧玲,杨文刚.传感器网络节点通信模块的低功耗研究[J].传感器与微系统,2009,09:42-45.
[9] 郭栋,秦明芝,王伟敏.基于CC2430的ZigBee无线传感器网络设计与实现[J].物联网技术,2011,01:12-15.
[10] 马跃其.基于ZigBee无线通信技术的智能家居系统[D].河南理工大学,2010年.
[11] 中国智能家居网.http://www.S.
[12] 王岩;基于ZigBee协议无线传感器网络的设计与实现[D].天津大学,2007年.
[13] L.Ruiz-Garcia,J.I.Robla,and EBarreiro.Performance of ZigBee based wireless sensor
nodes for real—time monitoring of fruit logistics[J].Journal of Food Engineering,V01.87,No.3,PP.405—415,August 2008..
[14] 张亮,基于ZigBee技术的智能家居环境监测系统[D].武汉科技大学,2009.
11
展开阅读全文