ZigBee协议栈初始化网络启动流程图
ZigBee协议栈中文说明
Zigbee协议栈中文说明1.概述1.1解析ZigBee堆栈架构ZigBee堆栈是在IEEE802.15.4标准基础上建立的,定义了协议的MAC和PHY 层。
ZigBee设备应该包括IEEE802.15.4(该标准定义了RF射频以及与相邻设备之间的通信)的PHY和MAC层,以及ZigBee堆栈层:网络层(NWK)、应用层和安全服务提供层。
图1-1给出了这些组件的概况。
ZigBee堆栈层1.1.11.1.1ZigBee每个ZigBee设备都与一个特定模板有关,可能是公共模板或私有模板。
这些模板定义了设备的应用环境、设备类型以及用于设备间通信的簇。
公共模板可以确保不同供应商的设备在相同应用领域中的互操作性。
设备是由模板定义的,并以应用对象(ApplicationObjects)的形式实现(见图1-1)。
每个应用对象通过一个端点连接到ZigBee堆栈的余下部分,它们都是器件中可寻址的组件图1-1zigbe堆栈框架从应用角度看,通信的本质就是端点到端点的连接(例如,一个带开关组件的设备与带一个或多个灯组件的远端设备进行通信,目的是将这些灯点亮)。
端点之间的通信是通过称之为簇的数据结构实现的。
这些簇是应用对象之间共享信息所需的全部属性的容器,在特殊应用中使用的簇在模板中有定义。
图1-1-2就是设备及其接口的一个例子:图1-1-2每个接口都能接收(用于输入)或发送(用于输出)簇格式的数据。
一共有二个特殊的端点,即端点0和端点255。
端点0用于整个ZigBee设备的配置和管理。
应用程序可以通过端点0与ZigBee堆栈的其它层通信,从而实现对这些层的初始化和配置。
附属在端点0的对象被称为ZigBee设备对象(ZD0)。
端点255用于向所有端点的广播。
端点241到254是保留端点。
所有端点都使用应用支持子层(APS)提供的服务。
APS通过网络层和安全服务提供层与端点相接,并为数据传送、安全和绑定提供服务,因此能够适配不同但兼容的设备,比如带灯的开关。
Zigbee建网和入网过程实验
6.2 Zigbee建网和入网过程实验本实验通过Sample App这个例子实现数据在ZigBee网络中的简单传输。
要求掌握网络组建及协议分析仪的使用方法。
6.2.1 实验目的与器材1)实验目的◆熟悉zigbee协议的三种设备建网时所担任的角色;◆学习Z-Stack2007/PRO协议栈中协调器如何建立网络;◆学习Z-Stack2007/PRO协议栈中路由和终端如何加入网络;◆学习TI官方提供的抓包工具(Sniffer)的应用及协议分析。
2)实验器材◆3个CC2530开发套件(1个协调器模块,2个路由器模块);6.2.2 实验原理与步骤1)硬件介绍CC2530开发套件如实验一中的硬件介绍,这里就不再陈述。
2)实验原理1 设备的分类ZigBee网络只支持两种设备:1)全功能设备(FFD Full Function Device)2)精简功能设备(也叫半功能设备 Reduced Function Device)两者的比较:其中FFD设备能够提供MAC层的所有服务,可充当任何ZigBee节点,不仅可以接收发送数据,还具有路由功能,因此可以接收子节点;而RFD只能提供部分的MAC层服务,只能充当子节点,只负责将采集到的数据发送给协调器和路由器节点,本身并不具有路由功能,因此不能接收子节点信息,RFD之间的通信只能通过FFD来完成。
ZigBee标准在此基础上定义了三种节点:ZigBee协调器(Coordinator)、ZigBee路由器(Routers)、ZigBee终端(End Device)2 所使用的设备所用的ZigBee设备都具有连接网络和断块网路的功能。
ZigBee协调器和路由器都具有以下附加功能:1)允许设备以如下方式连接网路:① MAC(Medium Access Control)层的连接命令。
②应用层的连接请求2)允许设备以如下方式断开网络;① MAC层的断开命令②应用层的断开命令③对逻辑网络地址的分配④维护邻居设备3 组建网络组建一个网状的ZigBee网络包括两个步骤:网络的初始化和节点加入网络;而节点加入网络又有两个步骤:通过协调器加入网络和通过已有节点入网。
zigbee无线通信模块通信流程
zigbee无线通信模块通信流程下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor.I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!Zigbee无线通信模块的通信流程详解Zigbee,一种基于IEEE 802.15.4标准的低功耗、短距离、无线通信技术,广泛应用于物联网、智能家居等领域。
实验三ZigBee协议实验
实验三ZigBee协议实验实验三ZigBee协议实验【实验目的】1、了解ZigBee 2007 协议栈操作系统的工作机制2、了解ZigBee 2007 协议栈应用程序框架的工作机制3、了解ZigBee 广播通信的原理4、掌握在ZigBee 网络中进行广播通信的方法5、了解ZigBee 组播通信的原理6、掌握在ZigBee 网络中进行组播通信的方法【实验设备】1、装有IAR 开发环境的PC 机一台2、物联网开发设计平台所配备的基础实验套件一套3、下载器一个【实验要求】1、广播通信实验要求:在GenericApp 应用程序框架下,编写程序,使得协调器周期性以广播的形式向终端节点发送数据“Coord Broadcast”(每隔5s广播一次),终端节点收到数据后,使开发板上的LED红灯状态翻转(如果LED原来是亮,则熄灭LED;如果LED原来是灭的,则点亮LED),同时向协调器发送字符串“EndDevice received!”,协调器收到终端节点发回的数据后,通过串口输出到PC机,用户可以通过串口调试助手查看该信息。
设备:一个协调器,二个终端2、组播通信实验要求:在GenericApp 应用程序框架下,编写程序,使得协调器周期性的以组播的形式向路由器发送数据“Group1”(每隔5s发送组播数据一次),组内的路由器收到数据后,使开发板上的红色LED状态翻转(如果LED原来是亮,则熄灭LED;如果LED原来是灭的,则点亮LED),同时向协调器发送自己的网络短地址和字符串“Router received!”,协调器收到路由器发回的数据后,通过串口输出到PC 机,用户可以通过串口调试助手查看该信息。
设备:一个协调器,三个路由器,其中两个加入组,一个不加入组。
【实验原理】1.无线数据传输模式: 组播和广播(1)组播:主机之间“一对一组”的通讯模式,也就是加入了同一个组的主机可以接受到此组内的所有数据,网络中的交换机和路由器只向有需求者复制并转发其所需数据。
第六章 zigbee协议栈详解
ZigBee回顾
ZigBee协议栈建立在IEEE802.15.4的PHY层和MAC子层规范之 上。
它实现了网络层(networklayer,NWK)和应用层( applicationlayer,APL)。
在应用层内提供了应用支持子层(applicationsupportsub-layer, APS)和 ZigBee 设备对象(ZigBee Device Object,ZDO)。
学时:4
ZigBee协议栈详解
目标: 本章在向学员介绍物联网体系中传输层所使用 的相关技术,通过本课的学习,学员应该掌握 如下知识: IP协议栈的应用 WLAN无线网络应用
大纲
协议栈内部结构 IEEE802.15.4 标准和 ZigBee 协议 协议栈软件总体设计 网络层(NWK)设计 应用层 MAC 层设计 物理层(PHY)设计
ZigBee协议栈的实时性要求并不高,因此在设计任务调度程序时 ,OSAL只采用了轮询任务调度队列的方法来进行任务调度管理。
这个轮询就存在于osal_start_system( )函数中 重视优先级的调度方式
do { if (tasksEvents[idx]) // Task is highest priority that is ready. { break; }
目前 TinyOS 系统支持的平台只有 ATMEL 公司的 AVR 系列、TI 公司的 MSP430系列。由于TinyOS操作系统还没有对Chipcon公司提供CC2430开发平 台提供支持,因此,要在 CC2530 开发平台上使用 TinyOS 系统来开发 ZigBee 协议栈软件,就必须首先对 TinyOS 进行移植。
协议栈主要流程
见Zmain.c中的main函数
zigbee协议栈flash操作
z-stack的flash驱动。
在分析flash驱动之前,需要熟读cc2530的datasheet关于flash controller那一章节!我们先从hal_flash.c文件中的HalFlashRead函数开始:void HalFlashRead(uint8 pg, uint16 offset, uint8 *buf, uint16 cnt) {// Calculate the offset into the containing flash bank as it gets mapped into XDATA.uint8 *ptr = (uint8 *)(offset + HAL_FLASH_PAGE_MAP) +((pg % HAL_FLASH_PAGE_PER_BANK) *HAL_FLASH_PAGE_SIZE);uint8 memctr = MEMCTR; // Save to restore.#if !defined HAL_OAD_BOOT_CODEhalIntState_t is;#endifpg /= HAL_FLASH_PAGE_PER_BANK; // Calculate the flash bank from the flash page.#if !defined HAL_OAD_BOOT_CODEHAL_ENTER_CRITICAL_SECTION(is);#endif// Calculate and map the containing flash bank into XDATA. MEMCTR = (MEMCTR & 0xF8) | pg;while (cnt--){*buf++ = *ptr++;}MEMCTR = memctr;#if !defined HAL_OAD_BOOT_CODEHAL_EXIT_CRITICAL_SECTION(is);#endif}在讲解这个函数之前,先说一下z-stack中对flash的布局。
ZigBee自组网的网间串扰和通信解决方案
ZigBee自组网的网间串扰和通信解决方案钟小磊;陈赜;代祖浩;王云阳;孙文静【摘要】当同一个区域存在多个ZigBee无线传感网络时,为了解决这些子网间传递信息相互干扰、协调器建网参数异常以及节点入网无序等网间串扰问题,文章探索出一种ZigBee子网间规范通信的方法.以CC2530为硬件平台,采用Z-Stack协议栈作为实现ZigBee技术的软件平台,通过对Z-Stack协议栈中节点类型、个域网标识符、信道切换以及网络状态存储等多项技术的研究改进,并在不同类型的节点上烧录与其匹配的Z-Stack协议栈,解决了网间串扰和网间通信问题.在实践测试中采用若干CC2530节点组成多个ZigBee子网,验证了方案的可行性.【期刊名称】《光通信研究》【年(卷),期】2017(000)004【总页数】4页(P70-73)【关键词】ZigBee无线传感网络;网间串扰;网间通信;Z-Stack协议【作者】钟小磊;陈赜;代祖浩;王云阳;孙文静【作者单位】云南大学滇池学院,昆明 650228;华中科技大学,武汉 430074;武汉盛德物联科技有限公司,武汉 430074;云南大学滇池学院,昆明 650228;云南大学滇池学院,昆明 650228【正文语种】中文【中图分类】TN929.5ZigBee[1]是一种短距离、低功耗的无线通信技术,其具有低成本、短时延、高容量和高安全等特点,同时具备灵活可靠的自组织构建网络能力,因此在农业种植、林业监测、智能家居、现代交通和工业控制等领域中得到广泛应用[2]。
尽管ZigBee具有良好的自组网特性和网络自愈能力,支持多种网络拓扑结构,但在组网、节点重启和子网共存等方面还存在一系列问题。
文献[3]提出了一种简单、实用的家庭组网方法,可在网络建立时保证节点按规定加入指定网络,但无法在节点掉电重启后保证协调器和节点还能正确地加入规定网络。
文献[4]提出了一种大容量的Mesh组网方案,但由于其组建的只有一个个域网(Personal Area Network, PAN),因此网络中节点规模势必会受到限制,无法满足大规模部署的要求。
2、自己理解zigbee有关的数据的发送和接收
哎呀研究这个数据的发送和收发研究了2天了。
今天终于把困扰我很久的一个问题给解决了。
问题:终端节点启动会为什么会自动的发送数据呢?解决过程:这个过程可是异常的艰辛。
要解决这个问题。
咱们先聊聊这个整个zigbee协议栈的工作流程。
程序肯定都是从main函数开始的,这个肯定也不例外。
大家查看一下main函数主要就是关闭中断,检查电源电压是否够高,还有就是初始化了,什么物理层,mac层等等。
而我们在这里关注2个函数就好了。
第一个是:osal_init_system();第二个:osal_start_system();第一个osal_init_system()函数就是初始化与系统运行相关的一些东西如:初始化内存分配系统,初始化消息队列,初始化定时器,初始化电源管理系统,初始化第一块堆,最后一个就是我们要讲的一个非常重要的函数:osalInitTasks();初始化任务函数void osalInitTasks( void )//系统任务初始化函数{uint8 taskID = 0;//这个指针指向了所有任务空间的首地址tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt);//这个tasksEvents指针总共有多少个数据空间,其实总共有多少任务就有多少个空间。
osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt));macTaskInit( taskID++ ); //mac层的任务是0nwk_init( taskID++ ); //网络层的任务是1Hal_Init( taskID++ ); //物理层的任务号是2#if defined( MT_TASK )MT_TaskInit( taskID++ );//串口的任务#endifAPS_Init( taskID++ );#if defined ( ZIGBEE_FRAGMENTATION )APSF_Init( taskID++ );#endifZDApp_Init( taskID++ );#if defined ( ZIGBEE_FREQ_AGILITY ) || defined ( ZIGBEE_PANID_CONFLICT )ZDNwkMgr_Init( taskID++ );#endifGenericApp_Init( taskID );//应用程序的初始化。
zigbee简介
物理层和MAC层 物理层和MAC层——IEEE802.15.4 MAC IEEE802.15.4
IEEE802.15.4支持星型和点对点两种网络拓扑结构 支持星型和点对点两种网络拓扑结构 设备发送数据给协调器、协调器发送数据给设备、 设备发送数据给协调器、协调器发送数据给设备、对等设备 之间的数据传输( 之间的数据传输(星型拓扑网络中只存在前两种数据传输方 因为数据只在协调器和设备之间交换; 式,因为数据只在协调器和设备之间交换;而在点对点拓扑 网络中,三种数据传输方式都存在) 网络中,三种数据传输方式都存在) 点对点网络的形成
MAC子层 子层
MAC层帧结构的设计目标是用最低复杂度实现数据可靠传输 层帧结构的设计目标是用最低复杂度实现数据可靠传输 子层的帧都由帧头、 每个 MAC子层的帧都由帧头、负载和帧尾三部分组成 子层的帧都由帧头 # 帧头由帧控制信息、帧序列号和地址信息组成 帧头由帧控制信息、 # 负载(数据)具有可变长度,具体内容由帧类型决定 负载(数据)具有可变长度, # 帧尾是帧头和负载数据的 位CRC校验序列 帧尾是帧头和负载数据的16位 校验序列
• • • • • •
ZigBee芯片 无线单片机的普及 为短距离无线通讯带来的全新变化 • 高度集成SOC,简化了高频设计,使开发 无线应用设计转移到以软件代码为中心; • 大量低价格,直观显示为特点的无线开发、 测试工具的诞生,使无线应用开发成本大 大降低; 在家建立自己的无线开发平台不 是梦想; • 无线SOC得到了非常广泛应用,特别是无 线鼠标,键盘和游戏摇杆等方面。
物理层和MAC层 物理层和MAC层——IEEE802.15.4 MAC IEEE802.15.4
IEEE 802.15.4描述了低速率无线个人局 域网的物理层和媒体接入控制协议
Zigbee网络
Zigbee网络优点:1)低功耗:在非工作状态下,ZigBee 节点会处于休眠模式,耗能很低,两节五号干电池可以支持一个节点工作 6-24 个月,甚至更久;在工作模式下,由于ZigBee 技术的数据传输速率低,传输的数据量很小,因此信号作用的时间很短。
再加上设备的休眠激活、搜索和信道接入时延都比较短,这使得 ZigBee 节点更加省电[1]。
2)延时短:ZigBee 的响应速度很快,通信时从休眠状态转换到激活的时延都非常短,一般只需 15ms,节点连接进入网络所需要的时间仅为 30ms,进一步减少了能源消耗[2]。
3)低成本:因为ZigBee网络的数据传输速率低,协议简单,所以大大降低了硬件开发成本,并且 ZigBee 协议免收专利费用和免执照频段[2]。
4)安全性高:ZigBee 提供了数据完整性检查和鉴权功能,在数据传输中提供了三级安全性。
第一级实际是无安全方式,对于某种应用,如果安全并不重要或者上层已经提供足够的安全保护,器件就可以选择这种方式来转移数据。
对于第二级安全级别,器件可以使用接入控制清单(ACL)来防止非法器件获取数据,在这一级不采取加密措施。
第三级安全级别在数据转移中采用属于高级加密标准(AES)的对称密码。
AES可以用来保护数据净荷(一帧中传输的用户数据部分)和防止攻击者冒充合法器件[3]。
5)网络容量大:一个星型结构的 ZigBee 网络最多可以容纳 254 个从设备和一个主设备,网络构成灵活,在一个单独的 ZigBee 网络内可以支持超过 65000 个ZigBee网络节点[2]。
6)免执照频率:ZigBee 技术有三种传输频率段,分别为 868MHz(欧洲1个信道,数据传输速率为20kb/s),915MHz(美国10个信道,数据传输速率为40kb/s)和2.4GHz(16个信道,全球统一无需申请的ISM频段,有助于ZigBee设备的推广和生产成本的降低)频率段为全球免费使用频段,传输速率达到250KB/s。
物联网ZigBee协议栈解析(加入网络)
开发平台:AR EW8051 7.51A 驱动软件: CP210x驱动包 例 程:文件包GenericApp
GenericApp
• “..\Samples CC2530\GenericApp\SX2530
不可更改或者移出 任务
代码分析2
不可移出任 务
• OS信息处理。 • 异常任务处理。
查看函数
组装系统
修改通道
• 为了方便大家集中学习,我们已经在每 套学习系统中标明了相关的通道与PanId 请各位严格使用自己的通道与PanId
修改PanId
• 为了方便大家集中学习,我们已经在每 套学习系统中标明了相关的通道与PanId 请各位严格使用自己的通道与PanId
GenericApp 形成或者加入一个网络
本章利用简单应用程序 GenericApp 实现ZigBee相关功能例程的讲解 在指定通道和pan上形成一个网络 设备加入指定特定参数的网络
实验准备
硬件清单
C51FF-PS-F V21仿真器一块 SMBD-V1.2 底板一块 SMBD-V11-1底板两块 RF-2530无线模块三块 Mini USB线2条 AAA电池8只
ZigBee工程
子工程
配置文件
链接配置文件
全局配置文
件
• ZigBee的大部分配置都放在相关的配置
节点设备文的件中
配置文件
协调器的配置 文件
路由器配置 文件
配置通道
通道选择
通道全 局变量
f8wConfig.cfg中配置PAN ID
• 如果 PAN_ID = 0xFFFF 设备类型是协调者
• 设备将使用物理地址最后两个字节作为PAN_ID
zigbee工程子工程配置文件zigbee的大部分配置都放在相关的配置文件中链接配置文件全局配置文协调器的配置文件节点设备的配置文件路由器配置文件配置通道通道全局变量通道选择f8wconfigcfg中配置panid0xffff设备类型是协调者0xffff设备类型是路由器或者终端节点设备0xffff设备类型是协调者0xffff设备类型是路由器或者终端节点设备设备将只能加入该panid指定的网络genericapp形成或者加入一个网络本章利用简单应用程序genericapp实现zigbee相关功能例程的讲解在指定通道和pan上形成一个网络设备加入指定特定参数的网络实验准备硬件清单c51ffpsfv21仿真器一块smbdv12底板一块smbdv111底板两块rf2530无线模块三块miniusb线2条aaa电池8只软件清单开发平台
基于ZigBee技术的智能家居系统内部组网
首先,终端设备通过 NLME_NETWORK_DISCOV-
ERY. request 原语,启动加入网络流程。网络层随后发
送 MLME_SCAN. request,要求 MAC 层执行信道扫描。
当 MAC 完成扫描后就会向网络层管理实体回馈扫描
信息。网络层管理实体随后发送网络发现确认原语,
Smart Home System Internal Network Based on Zigbee Technology
WANG Bo ( School of Electronic Engineering,Xidian University,Xi'an 710071,China) Abstract In order to enhance the rapid deployment of the intelligent household system and to reduce the cost of construction,this paper presents a design scheme of the intelligent household system,in which the Zigbee wireless networking technology has been used to construct the basic internal network. On the basis of CC2430 radio chip and in virtue of some peripheral circuits,the scheme designs the hardware circuit of the terminal device and the Center Coordinator; according to the Zigbee stack,C language is used to design the communication application software for the terminal device and the Center Coordinator. Keywords ZigBee stack; CC2430; center coordinator; intelligent household system
Zigbee设备入网过程
Zigbee设备加入网络过程---关联加入在一个zigbee协调器设备建立网络后,路由器设备或者终端设备(end device),可以加入协调器建立的网络,具体加入网络有两种方式,一种是通过关联(association)方式,就是待加入的设备发起加入网络,具体实现方式后面讨论,另一中是直接(direct)方式,就是待加入的设备具体加入到那个设备下,作为该设备的子节点,由以前网络中的设备,想待加入的设备作为其子设备决定。
下面重点讨论第一种方式,也是实际中用的最多的方式通过关联方式加入一个网络:加入一个设备,是两个设备的事,即子设备和待定父设备对于子设备,首先子设备调用NLME-NETWORK-DISCOVERY.request 原语,设定待扫描的信道,以及每个信道扫描的时间,网络层收到这个原语,将要求MAC层执行被动或主动扫描。
具体发送到设备外的是一个becon request 帧,当在这个信道中的设备收到该帧,将会发送becon帧,这是子设备通过BEACON-NOTIFY.indication 原语,告知该设备的MAC 层,该becon帧包含了发送该帧的地址信息,以及是否允许其他设备以其子节点的方式加入。
待加入的设备,在网络层,将检查该becon帧协议 ID是否是zigbee ID 。
如果不是,将忽略;如果是,该设备将复制收到每个becon帧的相关信息到其关联表中(neighbor tabl e)。
一旦MAC层完成了扫描,将发送 MLME-SCAN.confirm 原语,告知网络层,网络层将发送NLME-NETWORK-DISCOVERY.confirm 原语,告知应用层。
应用层收到该原语,应用层将根据情况,要么重新要求扫描,或者从关联表中选择所发现的网络加入。
调用NLME-JOIN.request 原语,原语中各个参数的设置参看协议(可以在本站下载栏找到)非常容易。
如果在关联表中找不到合适的准父节点,将调用原语告知应用层,如果由多个设备可以满足要求,将选择到协调器节点深度最低的设备,如果有几个设备的深度相同,且都是最小深度,将从中随机选择一个。
基于Zigbee 的无线温度监测系统的设计与实现
基于Zigbee 的无线温度监测系统的设计与实现摘要:随着传感器技术和无线通信技术的发展,zigbee技术得到广泛应用,在数据实时监测与采集等方面,其应用优势更为显著。
该文设计并实现的基于zigbee的无线温度监测系统使用多个cc2430模块,一个作为zigbee协调器,其余作为温度数据采集端。
温度数据采集端采集温度数据并通过zigbee协议上传至zigbee协调器,zigbee协调器通过串口将数据汇集到上位机中,从而实现数据的实时监测。
本系统的完成有助于改变传统人工的收集数据方式,实现数据的实时收集,适用环境监测,智能家居,工业监测等领域。
关键词:zigbee;cc2430; ds18b20;无线传感网络;温度监测中图分类号:tp368.2 文献标识码:a 文章编号:1009-3044(2013)15-3545-051 概述近年来,得益于无线通信技术、计算机技术和传感器技术的不断进步,无线传感器网络已从理论研究逐渐步入生产应用。
环境数据的实时采集是无线传感器网络在环境监测领域应用中实现的一个重要功能。
由于,环境温度数据指标对于能源消耗、设备安全、生物生命体征、生活舒适度等方面均是较重要的参考指标,因此设计一种低成本、可靠高效的温度采集系统对于工农业生产效率的提高与社会生活环境的改善具有一定的辅助作用。
在传统的温度采集系统中,节点一般采用有线连接方式,布线繁琐,扩展性和可移植性不高[6]。
文献[5]中使用的是基于wifi的温度监测的方法,但wifi技术功耗较高,影响了温度检测网络的使用寿命。
zigbee[1]作为一种新兴的短距离无线通信网络技术,凭借其低成本、低功耗的优势,成为无线传感器网络中主要的通信协议之一。
该文设计并实现了一个基于cc2430的zigbee无线温度监测网络。
该网络通过zigbee协议栈将多个节点设备组建成星型网络,将各个节点的采集的温度数据实时发送到协调器并又协调器在汇聚到上位机中,从而实现温度数据的实时采集。
ZigBee协议栈初始化网络启动流程
ZigBee协议栈初始化网络启动流程ZigBee的基本流程:由协调器的组网(创建PAN ID),终端设备和路由设备发现网络以及加入网络。
基本流程:main()->osal_init_system()->osalInitTasks()->ZDApp_Init(),进协议栈初始化函数ZDApp_Init()。
1.1 进入程序入口main()。
ZMain.c中C++ Codeint main( void ){// Turn off interruptsosal_int_disable( INTS_ALL );// Initialization for board related stuff such as LEDsHAL_BOARD_INIT();// Make sure supply voltage is high enough to runzmain_vdd_check();// Initialize board I/OInitBoard( OB_COLD );// Initialze HAL driversHalDriverInit();// Initialize NV Systemosal_nv_init( NULL );// Initialize the MACZMacInit();// Determine the extended addresszmain_ext_addr();// Initialize basic NV itemszgInit();#ifndef NONWK// Since the AF isn't a task, call it's initialization routine afInit();#endif// Initialize the operating systemosal_init_system();// Allow interruptsosal_int_enable( INTS_ALL );// Final board initializationInitBoard( OB_READY );// Display information about this devicezmain_dev_info();/* Display the device info on the LCD */#ifdef LCD_SUPPORTEDzmain_lcd_init();#endif#ifdef WDT_IN_PM1/* If WDT is used, this is a good place to enable it. */ WatchDogEnable( WDTIMX );#endifosal_start_system(); // No Return from herereturn 0; // Shouldn't get here.} // main()1.2 给任务添加IDsapi.c中C++ Codevoid osalInitTasks( void ) //为各自进程添加ID 用于任务的查找{uint8 taskID = 0;tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt);osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt));macTaskInit( taskID++ );nwk_init( taskID++ );Hal_Init( taskID++ );//硬件抽象层初始化#if defined( MT_TASK )MT_TaskInit( taskID++ );#endifAPS_Init( taskID++ );ZDApp_Init( taskID++ );//判断如果协调器节点建立网络、如果终端节点加入网络SAPI_Init( taskID );}1.3 初始化ZigBee协议栈网络ZDApp.cC++ Codevoid ZDApp_Init( uint8 task_id ){// Save the task ID// Initialize the ZDO global device short address storageZDAppNwkAddr.addrMode = Addr16Bit;ZDAppNwkAddr.addr.shortAddr = INVALID_NODE_ADDR;(void)NLME_GetExtAddr(); // Load the saveExtAddr pointer.// Check for manual "Hold Auto Start"//检测到有手工设置HAL_KEY_SW_1则会设置devState = DEV_HOLD,从而避开网络初始化ZDAppCheckForHoldKey();// Initialize ZDO items and setup the device - type of device to create.ZDO_Init(); //通过判断预编译来开启一些函数功能// Register the endpoint description with the AF// This task doesn't have a Simple description, but we still need// to register the endpoint.afRegister( (endPointDesc_t *)&ZDApp_epDesc );#if defined( ZDO_USERDESC_RESPONSE )ZDApp_InitUserDesc();#endif // ZDO_USERDESC_RESPONSE// Start the device?if ( devState != DEV_HOLD ){ZDOInitDevice( 0 );}else{// Blink LED to indicate HOLD_STARTHalLedBlink ( HAL_LED_4, 0, 50, 500 );}} /* ZDApp_Init() */如果设置devState为DEV_HOLD,则不会执行ZDOInitDevice;反之,系统会调用此函数是设备组网或者入网。
zigbee无线通信协议程序流程
zigbee无线通信协议程序流程关键信息项:合同双方信息项目名称及描述协议目的及范围Zigbee协议技术要求项目实施计划及时间表合同金额及支付方式风险管理及保障措施变更及调整条款违约责任及处理措施保密条款知识产权归属争议解决方式合同的有效期及终止条件其他条款签署日期及地点1. 合同双方信息1.1 委托方(购买方)名称:____________________________1.2 委托方法定代表人或授权代表姓名:____________________________1.3 委托方联系地址:____________________________1.4 承包方(服务提供方)名称:____________________________1.5 承包方法定代表人或授权代表姓名:____________________________1.6 承包方联系地址:____________________________2. 项目名称及描述2.1 项目名称:____________________________2.2 项目描述及范围:____________________________2.3 项目实施地点:____________________________3. 协议目的及范围3.1 协议目的:确定Zigbee无线通信协议的应用及实施细节,确保双方对协议的理解和执行一致。
3.2 协议范围:包括Zigbee协议的技术实现、系统集成、测试及维护等方面的内容。
4. Zigbee协议技术要求4.1 Zigbee协议版本:____________________________4.2 技术规格和标准:____________________________4.3 设备兼容性要求:____________________________4.4 数据传输要求及网络安全标准:____________________________5. 项目实施计划及时间表5.1 实施计划:____________________________5.2 关键时间节点及里程碑:____________________________5.3 各阶段完成时间及验收时间:____________________________6. 合同金额及支付方式6.1 合同总金额:____________________________6.2 支付方式(如银行转账、支票等):____________________________6.3 支付时间及安排:____________________________6.4 其他费用及支付安排:____________________________7. 风险管理及保障措施7.1 风险识别与评估:____________________________7.2 风险管理计划及措施:____________________________7.3 履约保证金及其使用条件:____________________________7.4 意外情况处理及紧急预案:____________________________8. 变更及调整条款8.1 项目范围及技术要求变更的条件:____________________________8.2 变更申请及审批程序:____________________________8.3 变更导致的费用调整及时间安排:____________________________9. 违约责任及处理措施9.1 委托方违约责任:若委托方未按合同规定付款或提供必要的支持,承包方有权要求赔偿违约损失。
ZigBee协议栈-Z-Stack API介绍(ZDO网络启动)
Z-Stack API
10
ZigBee 设备对象(ZDO
返回值:这个函数将返回下面值之一:
Z-Stack API
7
ZigBee 设备对象(ZDO)
网络管理服务提供了检索设备管理信息的功能,包括网络发现结果、 路由表内容、到周边节点的链路质量以及绑定表内容。它还提供了 通过断开与个人区域网络设备的联系来控制网络联系的功能。网络 管理服务主要是针对用户或调试工具而设计,用来管理网络。
以上三种功能的API将在下面分别讨论。
ZDP描述了ZDO内部一般性的ZigBee 设备功能是如何实现的。它定义了使用命令和 响应对的设备描述和簇。通过定义命令结构体的信息,ZDP为ZDO和应用程序提供了 如下功能:
• 设备网络启动 • 设备和服务发现 • 终端设备绑定、绑定和取消绑定服务 • 网络管理服务
Z-Stack API
5
ZigBee 设备对象(ZDO)
Z-Stack API
6
ZigBee 设备对象(ZDO)
典型的绑定用于网络配置期间,即当用户需要将控制设备绑定到被控制设 备(比如开关和灯光)时。特别地,终端设备绑定支持一个简化的绑定方 法,即使用用户的输入来识别控制或被控制的设备对。绑定和取消绑定服 务提供了创建和删除绑定表条目的功能,其中绑定表的功能是记录控制信 息及其各自的目的地。
Z-Stack API
3
层次)的API 提供一般性的支持服务,能同时用 于ZDO 层和制造商定义的应用对象 NWK 层 ZigBee 网络层(NWK)为更高层次的(应用层)组件提供管理 和数据服务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ZigBee协议栈初始化网络启动流程ZigBee的基本流程:由协调器的组网(创建PAN ID),终端设备和路由设备发现网络以及加入网络。
基本流程:main()->osal_init_system()->osalInitTasks()->ZDApp_Init(),进协议栈初始化函数ZDApp_Init()。
1.1 进入程序入口main()。
ZMain.c中C++ Codeint main( void ){// Turn off interruptsosal_int_disable( INTS_ALL );// Initialization for board related stuff such as LEDsHAL_BOARD_INIT();// Make sure supply voltage is high enough to runzmain_vdd_check();// Initialize board I/OInitBoard( OB_COLD );// Initialze HAL driversHalDriverInit();// Initialize NV Systemosal_nv_init( NULL );// Initialize the MACZMacInit();// Determine the extended addresszmain_ext_addr();// Initialize basic NV itemszgInit();#ifndef NONWK// Since the AF isn't a task, call it's initialization routine afInit();#endif// Initialize the operating systemosal_init_system();// Allow interruptsosal_int_enable( INTS_ALL );// Final board initializationInitBoard( OB_READY );// Display information about this devicezmain_dev_info();/* Display the device info on the LCD */#ifdef LCD_SUPPORTEDzmain_lcd_init();#endif#ifdef WDT_IN_PM1/* If WDT is used, this is a good place to enable it. */ WatchDogEnable( WDTIMX );#endifosal_start_system(); // No Return from herereturn 0; // Shouldn't get here.} // main()1.2 给任务添加IDsapi.c中C++ Codevoid osalInitTasks( void ) //为各自进程添加ID 用于任务的查找{uint8 taskID = 0;tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt);osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt));macTaskInit( taskID++ );nwk_init( taskID++ );Hal_Init( taskID++ );//硬件抽象层初始化#if defined( MT_TASK )MT_TaskInit( taskID++ );#endifAPS_Init( taskID++ );ZDApp_Init( taskID++ );//判断如果协调器节点建立网络、如果终端节点加入网络SAPI_Init( taskID );}1.3 初始化ZigBee协议栈网络ZDApp.cC++ Codevoid ZDApp_Init( uint8 task_id ){// Save the task ID// Initialize the ZDO global device short address storageZDAppNwkAddr.addrMode = Addr16Bit;ZDAppNwkAddr.addr.shortAddr = INVALID_NODE_ADDR;(void)NLME_GetExtAddr(); // Load the saveExtAddr pointer.// Check for manual "Hold Auto Start"//检测到有手工设置HAL_KEY_SW_1则会设置devState = DEV_HOLD,从而避开网络初始化ZDAppCheckForHoldKey();// Initialize ZDO items and setup the device - type of device to create.ZDO_Init(); //通过判断预编译来开启一些函数功能// Register the endpoint description with the AF// This task doesn't have a Simple description, but we still need// to register the endpoint.afRegister( (endPointDesc_t *)&ZDApp_epDesc );#if defined( ZDO_USERDESC_RESPONSE )ZDApp_InitUserDesc();#endif // ZDO_USERDESC_RESPONSE// Start the device?if ( devState != DEV_HOLD ){ZDOInitDevice( 0 );}else{// Blink LED to indicate HOLD_STARTHalLedBlink ( HAL_LED_4, 0, 50, 500 );}} /* ZDApp_Init() */如果设置devState为DEV_HOLD,则不会执行ZDOInitDevice;反之,系统会调用此函数是设备组网或者入网。
看下这个函数完成的功能是什么样子的。
ZDOInitDevice是设备在网络中启动。
它会读取NV中的ZCD_NV_STARTUP_OPTION选项决定是否恢复网络状态。
如果应用层强制进行新的join操作,它应该在调用这个函数之前设置ZCD_NV_STARTUP_OPTION中的ZCD_STARTOPT_DEFAULT_NETWORK_STATE位。
可以调用zgWrieStartupOptions()函数完成这些设置。
1.4 初始化设备(启动网络和设置网络类型)ZDApp.cC++ Codeuint8 ZDOInitDevice( uint16 startDelay ){uint8 networkStateNV = ZDO_INITDEV_NEW_NETWORK_STATE;uint16 extendedDelay = 0;if ( devState == DEV_HOLD ){// Initialize the RAM items table, in case an NV item has been updated. zgInitItems( FALSE );}ZDConfig_InitDescriptors();//devtag.071807.todo - fix this temporary solution_NIB.CapabilityInfo = ZDO_Config_Node_Descriptor.CapabilityFlags;devState = DEV_INIT; // Remove the Hold state// 函数读取NV项目ZCD_NV_LEAVE_CTRL的值,ZDApp_LeaveCtrl指向这个值// Initialize leave control logic// Check leave control reset settings//设备的断开会造成DEV_HOLD状态 ZDApp_LeaveCtrlStartup( &devState, &startDelay );// Leave may make the hold state come backif ( devState == DEV_HOLD ){//设置启动选项// Set the NV startup option to force a "new" join.zgWriteStartupOptions( ZG_STARTUP_SET,ZCD_STARTOPT_DEFAULT_NETWORK_STATE );//通知应用层触发事件// Notify the applicationsosal_set_event( ZDAppTaskID, ZDO_STATE_CHANGE_EVT );return ( ZDO_INITDEV_LEAVE_NOT_STARTED ); // Don't join - (one time).}#if defined ( NV_RESTORE )// Get Keypad directly to see if a reset nv is needed.// Hold down the SW_BYPASS_NV key (defined in OnBoard.h)// while booting to skip past NV Restore.if ( HalKeyRead() == SW_BYPASS_NV )networkStateNV = ZDO_INITDEV_NEW_NETWORK_STATE;else{// 通过读取ZCD_NV_STARTUP_OPTION选项决定是否进行网络恢复 // Determine if NV should be restorednetworkStateNV = ZDApp_ReadNetworkRestoreState();}if ( networkStateNV == ZDO_INITDEV_RESTORED_NETWORK_STATE ){networkStateNV = ZDApp_RestoreNetworkState();}else{// Wipe out the network state in NVNLME_InitNV();NLME_SetDefaultNV();}#endifif ( networkStateNV == ZDO_INITDEV_NEW_NETWORK_STATE )//如果是要启动新的网络{ZDAppDetermineDeviceType();//根据选项设置设备的网络类型,默认路由类型// Only delay if joining network - not restoring network stateextendedDelay = (uint16)((NWK_START_DELAY + startDelay)+ (osal_rand() & EXTENDED_JOINING_RANDOM_MASK));}// Initialize the security for type of deviceZDApp_SecInit( networkStateNV );// 触发启动网络// Trigger the network startZDApp_NetworkInit( extendedDelay );// set broadcast address mask to support broadcast filtering 用于处理合法的广播地址NLME_SetBroadcastFilter( ZDO_Config_Node_Descriptor.CapabilityFlags );return ( networkStateNV );}这个函数注意功能:初始化设备配置,ZDAppDetermineDeviceType()设置网络类型(协调、路由、终端),ZDApp_NetworkInit( extendedDelay )初始化网络并开启或加入网络。