无线传感网技术及应用 课件 项目20 Z-Stack协议栈点播通信_第1页
无线传感网技术及应用 课件 项目20 Z-Stack协议栈点播通信_第2页
无线传感网技术及应用 课件 项目20 Z-Stack协议栈点播通信_第3页
无线传感网技术及应用 课件 项目20 Z-Stack协议栈点播通信_第4页
无线传感网技术及应用 课件 项目20 Z-Stack协议栈点播通信_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目二十

Z-Stack协议栈点播通信01项目导入项目导入

ZigBee是基于IEEE802.15.4标准的低功耗局域网协议。其特点是近距离、低复杂度、自组网、低功耗、低数据速率。主要适合用于自动控制和远程控制领域,可以嵌入各种设备。当采用广播通信方式时,ZigBee网络内的任何一个节点设备发送出广播数据,网络中的任何设备都可以接收到所发送的数据。通常情况下终端节点间是无法确定对方的16bit短地址的,也就无法了解对方的身份,相互间通信就失去了意义。ZigBee网络一般采用的方式是由终端节点采集数据,统一发送到协调器进行汇总,这种通信方式就称为点播通信。本项目通过2个CC2530模块的组网及点播通信,让大家能够了解CC2530模块点播通信的原理和整个过程。02项目分析项目分析

本项目需要使用2个以上的CC2530模块。首先二者需要组成一个小型的个域网,当组网成功后二者可以进行点播通信。在本项目中CC2530模块组网成功后模块A(终端节点)发送点播数据,模块B(协调器)接收到数据后让LED闪烁,从而提示二者已组网并通信成功。【项目要求】1.使用2个以上的CC2530模块实现组网。2.2个以上的CC2530模块间实现点播通信。03项目目标项目目标01了解ZigBee网络的PAN_ID概念。02掌握Z-Stack协议栈组网的工作原理。03学会使用Z-Stack协议栈进行点播通信。04知识储备知识储备CC2530模块间的通信采用的是ZigBee协议,要实现模块间的组网及点播通信,我们首先要ZigBee网络PAN_ID概念,其次要掌握基于Z-Stack协议栈点播通信的工作原理、代码编写及应用开发。ZigBee的PAN_ID(网络号)

在一个环境复杂的小区或者是工业现场中,存在各种用途的ZigBee设备。有些ZigBee设备分属不同功能网络。为避免设备相互间的干扰,需要使用PAN_ID给不同网络编号。ZigBee协议使用一个16位的个域网标志符(PAN_ID)来标识一个网络。Z-Stack协议栈允许用两种方式配置PAN_ID。

在Tools下的f8wConfig.cfg文件中配置PAN_ID时,默认设置ZDAPP_CONFIG_PAN_ID为0xFFFF,协调器将根据自身的IEEE地址建立一个随机的PAN_ID(0~0x3FFF)。路由器和终端设备则会在自己的默认信道上随机选择一个网路加入,加入之后协调器的PAN_ID即为自己的PAN_ID。固定PAN_ID

当ZDAPP_CONFIG_PAN_ID不采用默认设置,设定为0x0001-0xfffe之间。那么协调器建立网络或路由和终端设备加入网络的PAN_ID就由这个设定值决定。如果协调器在建立网络的时候发现默认信道内该PAN_ID已经被占用,那么协调器会继续搜索其他的PAN_ID使用。带来的问题是,终端和路由器并不知道协调器换了PAN_ID,还会加入到原来设定的PAN_ID中去。ZigBee点对点通信

ZigBee网络拓扑结构虽然理论上有星型、树型和网状网三种,根据实际网络地址分配算法可以看出Z-Stack协议采用的树形结构。当网络拓扑结构发生变化时,节点分配的短地址也相应改变,因此任意两节点间的通信不可能使用短地址,也没有必要。一般采用的是协调器与路由或终端节点间的点对点通信。05代码修改5.1修改项目的PAN_ID项目实施前必须先准备好相应的设备和资源。用IAR打开项目文档。修改项目Tools下f8wConfig.cfg文件中DZDAPP_CONFIG_PAN_ID参数。5.2新建点播的结构体实例在SampleApp.c文件中系统默认建了结构体afAddrType_t的广播实例SampleApp_Periodic_DstAddr和组播实例SampleApp_Flash_DstAddr。这里我们新建结构体的点播实例SampleApp_P2P_DstAddr。结构体afAddrType_t

查看结构体afAddrType_t,可以看到结构体afAddrType_t构成:包括短地址、IEEE地址、地址模式、端点号、网络号。typedefstruct{union{uint16shortAddr;//16位短地址ZLongAddr_textAddr;//64位IEEE地址}addr;afAddrMode_taddrMode;//地址模式uint8endPoint;//端点号uint16panId;//网络号}afAddrType_t;枚举类型afAddrMode_t

这个结构体中包含了枚举类型afAddrMode_t,查看其内容可以看到ZigBee组网发送信息时对方的地址为以下几种类型之一,ZigBee网络中通常采用的是16bit短地址。typedefenum{

afAddrNotPresent=AddrNotPresent,//地址不存在

afAddr16Bit=Addr16Bit,//按16位地址发送信息

afAddr64Bit=Addr64Bit,//按64位地址发送信息

afAddrGroup=AddrGroup,//按组号发送信息

afAddrBroadcast=AddrBroadcast//广播发送信息}afAddrMode_t;结构体SampleApp_P2P_DstAddr赋值

为结构体SampleApp_P2P_DstAddr赋值,可直接复制前面广播的配置进行修改,增加后如下。SampleApp_P2P_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;//接收方为16位短地址SampleApp_P2P_DstAddr.endPoint=SAMPLEAPP_ENDPOINT;SampleApp_P2P_DstAddr.addr.shortAddr=0x0000;//信息发送给协调器(协调器短地址固定为0000)5.3新建点播信息的发送函数自定义点播类型参数#defineSAMPLEAPP_P2P_CLUSTERID3新增点播信息的发送函数自定义点播数据发送函数SampleApp_Send_P2P_Message()voidSampleApp_Send_P2P_Message(void){uint8data[11]="0123456789";if(AF_DataRequest(&SampleApp_P2P_DstAddr,&SampleApp_epDesc,SAMPLEAPP_P2P_CLUSTERID,//接收方地址、端口、自定义包类型10,//发送的字节长度data,//发送的数据&SampleApp_TransID,//任务ID号AF_DISCV_ROUTE,

//传送跳数AF_DEFAULT_RADIUS)==afStatus_SUCCESS)}5.4修改点播信息的发送函数

系统事件处理函数SampleApp_ProcessEvent()中定义了当网络状态发生改变时,启动周期事件。修改代码当周期事件发生时调用函数SampleApp_SendP2PMessage()发送点播包。if(events&SAMPLEAPP_SEND_PERIODIC_MSG_EVT){

//SampleApp_SendPeriodicMessage();

SampleApp_SendP2PMessage();//发送点播信息函数......5.5协调器收到信息后的处理

SampleApp_ProcessEvent()中可以看到,当系统收到信息包时,则调用处理函数SampleApp_MessageMSGCB(),同时将信息参数赋值到结构体afIncomingMSGPacket_t。voidSampleApp_MessageMSGCB(afIncomingMSGPacket_t*pkt){uint16flashTime;switch(pkt->clusterId){caseSAMPLEAPP_P2P_CLUSTERID:

HalUARTWrite(0,pkt->cmd.Data,pkt->cmd.DataLength);//将收到的数据信息从串口输出

break;

caseSAMPLEAPP_PERIODIC_CLUSTERID://如果收到广播包break;//直接忽略

}}06项目实施下载程序到CC2530模块项目实施前必须先准备好相应的设备和资源。用IAR打开项目文档。修改项目代码。选择目录树上方的下拉菜单选择Cood

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论