当前位置:文档之家› 无线网络技术论文

无线网络技术论文

XX大学计算机与电子信息学院课程论文(2011-2012学年第二学期)课程名称:无线网络技术论文名称:姓名:学号:班级:指导教师:2012 年 6 月 28 日结合IT-Stack协议栈例程介绍Zigbee自组网摘要:之前介绍了“基于Zigbee无线传感网络的校园火灾系统”的设计与实现,现在结合IT-Stack协议栈例程提供的一个传感例程来说下zigbee无线自组网络的设计与实现。

简要阐述传感器网络节点的基本体系结构,介绍Zstack协议的工作机制和原理,以及各硬件节点的设计。

关键字:Zigbee IT-Stack 自组网前言随着半导体技术、通信技术和计算机技术的飞速发展,无线传感器网络的研究和应用正在世界各地蓬勃地展开,具有成本低、体积小、功耗低的ZigBee技术无疑成为无线传感器网络的首选技术之一。

同时,ZigBee的特点也决定它是无线智能家居,自动抄表系统,无线防盗系统和环境监测等领域的理想解决方案幢。

ZigBee联盟成立于2001年8月,目前其成员已经超过200余家。

2004年12月,ZigBee联盟制定了ZigBee SpecificationVl.0,并于2006年11月推出了ZigBee—Pro Specification增强版。

世界各知名芯片提供商如:TI、FreeScale等纷纷推出ZigBee芯片和各自的ZigBee协议栈。

目前,国内外陆续出现了基于ZigBee技术的智能照明系统、自动抄表系统和无线防盗系统,并且正在形成产业化。

ZigBee技术的研究具有深远的理论价值,ZigBce网络节点的设计及整体网络的实现具有广阔的工程应用前景。

本文的ZigBee网络节点的设计及整体网络是基于FreeScale公司的ZigBee 解决方案来实现的。

1 相关概念介绍1.1 无线传感网络无线传感器网络是大量的静止或移动的传感器以自组织和多跳的方式构成的无线网络,其目的是协作地感知、采集、处理和传输网络覆盖地理区域内感知对象的监测信息,并报告给用户。

它的英文是Wireless Sensor Network, 简称WSN。

大量的传感器节点将探测数据,通过汇聚节点经其它网络发送给了用户。

因为节点的数量巨大,而且还处在随时变化的环境中,这就使它有着不同于普通传感器网络的独特“个性”。

首先是无中心和自组网特性。

在无线传感器网络中,所有节点的地位都是平等的,没有预先指定的中心,各节点通过分布式算法来相互协调,在无人值守的情况下,节点就能自动组织起一个测量网络。

而正因为没有中心,网络便不会因为单个节点的脱离而受到损害。

1.2 Zigbee技术及Zstack协议1.2.1Zigbee技术简介ZigBee是一种低速短距离传输的无线网络协定,底层是采用IEEE802.15.4标准规范的媒体存取层与实体层。

主要特色有低速、低耗电、低成本、支援大量网络节点、支援多种网络拓扑、低复杂度、快速、可靠、安全。

ZigBee协定层从下到上分别为实体层(PHY)、媒体存取层(MAC)、网络层(NWK)、应用层(APL)等。

网络装置的角色可分为ZigBeeCoordinator、ZigBeeRouter、ZigBeeEndDevice等三种。

1.2.2 Zigbee协议ZigBee协议与其他网络通信协议一样采用了分层模型,对各层所实现的功能和在整个协议中所起的作用做出了明确的划分。

ZigBee协议套件由高层应用规范、应用会聚层、网络层、数据链路层和物理层组成。

如下图所示。

ZigBee规范规定了协调器、路由器和终端设备3种网络节点。

协调器负责创建一个ZigBce网络,允许网络中其它节点的加入,保存网络中的绑定表和路由表等信息。

它是一种FFI)设备,采用市电供电。

路由器负责传递网络中的数据报,起到通信路由的作用。

上电后,路由器会自动寻找已经存在的网络并加入,同时可以作为父节点,允许网络中其它的路由器或者终端节点的加入。

路由器电是FFI)设备,采用市电供电。

ZigBee 网络中的路由器能够消除实际布网中障碍物的影响,或者扩大网络的地理覆盖范围。

终端节点不能传递数据报,上电后寻找已经存在的网络,加入网络中的协调器或者路由器。

终端节点不允许其它节点的加入,只能定期轮询它的父节点,获取其它节点发送给它的数据,或者主动给其它节点发送数据。

终端节点是一种RFD设备,一般采用电池供电,它是ZigBee网络中为数最多的节点。

ZigBee网络层支持星型网、树型网和网状网3种网络拓扑结构。

1.2.2.1 ZStack协议ZStack是由Zigbee组织认证通过的“Golden unit”Zigbee平台,或者叫Zigbee中的“明星工程”。

TI ZStack 协议栈只是Zigbee 协议的一种实现方式。

●Z-Stack轮询结构函数工作方式及顺序下图是轮询结构工作流程图。

进入轮询结构后,Z-Stack开始根据处理任务的优先级一级级向下查询是否有任务要执行,如果需要,就调用该任务的子函数,如果没有就继续询问,最后再循环。

这就是轮转查询结构。

●TI ZStack各层文件意义(1)APP:应用层目录,即我们需要开发修改的部分。

(2)HAL:硬件层目录。

(3)MAC:MAC 层目录。

(4)MT:监控调试层目录。

(5)NWK:网络层目录。

(6)OSAL:协议栈的操作系统。

(7)Profile:AF层目录。

(8)Security:安全层目录。

(9)Services:设备地址处理函数目录。

(10)Tools:工程配置目录。

(11)ZDO:ZigBee设备对象。

(12)ZMac:Z-Stack MAC导出层接口文件。

(13)ZMain:项目入口函数,对外控制接口函数。

(14)Output:输出文件目录。

2 节点设计结合上次介绍的“基于Zigbee无线传感网络的校园火灾系统”来介绍Enddevice、Coordinator 和Router节点。

2.1 Enddevice温湿度监测节点硬件主要由MQ-2烟雾传感器和LM35温度传感器、无线收发器CC2530 和锂电池组成,如下图所示。

温度传感器、烟雾传感器采集的物理信息被直接转换成二进制数据通过I2C 串口传给CC2530发射出去。

CC2530 内部集成了8051 单片机和R F 射频收发器,集成度高、体积小、重量轻。

本设计方案遵循IEEE 802.15.4 标准,无线信号调制中心频率为2.4GHz。

2.2 Coordinator 和RouterZigBee终端都直接与数据服务器终端连接需要太多的连线和接口,因此需要在各楼设置ZigBee汇聚节点。

各楼ZigBee终端将监测数据发送至ZigBee汇聚节点,由汇聚节点将数据通过ZigBee与Ethernet局域网网关发送至本楼的数据服务器终端。

3 自组网系统程序分析3.1通过IT提供的一个简单自组网例程来介绍Zigbee自组网。

例程在启动后,自动组织建立一个Zigbee网络(我们以一个协调器和终端节点组成的简单网络进行讲解),网络中的设备间通过“绑定”与“按条件搜索”两种方式,建立连接。

成功之后互相发送字符信息。

在自动启动网络成功后,Coordinator与Enddevice均将执行如下代码,进行信息发送:UINT16 GenericApp_ProcessEvent( byte task_id, UINT16 events ){case ZDO_STATE_CHANGE: GenericApp_NwkState = (devStates_t)(MSGpkt->hdr.status);if ( (GenericApp_NwkState == DEV_ZB_COORD)|| (GenericApp_NwkState == DEV_ROUTER)|| (GenericApp_NwkState == DEV_END_DEVICE) ){// Start sending "the" message in a regular interval.osal_start_timerEx( GenericApp_TaskID, GENERICAPP_SEND_MSG_EVT, GENERICAPP_SEND_MSG_TIMEOUT ); }并且由下面代码实现重复发送,每5秒种一次if ( events & GENERICAPP_SEND_MSG_EVT ){// Send "the" messageGenericApp_SendTheMessage();// Setup to send message againosal_start_timerEx( GenericApp_TaskID, GENERICAPP_SEND_MSG_EVT, GENERICAPP_SEND_MSG_TIMEOUT );// return unprocessed eventsreturn (events ^ GENERICAPP_SEND_MSG_EVT);}但此时的发送地址并不明确目标。

须要如下建立连接的过程,才可将信息发送至某设备:3.2 绑定方式3.2.1按JoyStick右键发送绑定请求:if ( keys & HAL_KEY_SW_2 ){HalLedSet ( HAL_LED_4, HAL_LED_MODE_OFF );// Initiate an End Device Bind Request for the mandatory endpointdstAddr.addrMode = Addr16Bit;dstAddr.addr.shortAddr = 0x0000; // CoordinatorZDP_EndDeviceBindReq( &dstAddr, NLME_GetShortAddr(),GenericApp_epDesc.endPoint, GENERICAPP_PROFID,GENERICAPP_MAX_CLUSTERS, (cId_t *)GenericApp_ClusterList, GENERICAPP_MAX_CLUSTERS, (cId_t *)GenericApp_ClusterList,FALSE );}3.2.2 另外一个节点在规定时间内按JoyStick右键进行响应,则双方完成绑定,并将先后收到End_Device_Bind_rsp,即绑定响应信号,以表示对方成功进行了应答,可以互相通讯,此时双方红色LED1先后亮起,互送“Hello, world”字符。

voidGenericApp_ProcessZDOMsgs( zdoIncoming Msg_t *inMsg ) {switch ( inMsg->clusterID ){case End_Device_Bind_rsp:if ( ZDO_ParseBindRsp( inMsg ) == ZSuccess ){// Light LEDHalLedSet( HAL_LED_4, HAL_LED_MODE_ON );}3.3 “条件搜索”的方式3.3.1 Enddevice按下Joystick左键发起搜索if ( keys & HAL_KEY_SW_4 ){HalLedSet ( HAL_LED_4, HAL_LED_MODE_OFF );// Initiate a Match Description Request (Service Discovery)dstAddr.addrMode = AddrBroadcast; dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR;ZDP_MatchDescReq( &dstAddr, NWK_BROADCAST_SHORTADDR, GENERICAPP_PROFID,GENERICAPP_MAX_CLUSTERS, (cId_t *)GenericApp_ClusterList, GENERICAPP_MAX_CLUSTERS, (cId_t *)GenericApp_ClusterList,FALSE );}其要求条件见ZDP_MatchDescReq函数的参数。

相关主题