zigbee设备启动分析资料
- 格式:doc
- 大小:351.50 KB
- 文档页数:47
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是基于IEEE802.15.4标准的低功耗个域网协议。
根据这个协议规定的技术是一种短距离、低功耗的无线通信技术。
这一名称来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和“嗡嗡”(zig)地抖动翅膀的“舞蹈”来与同伴传递花粉所在方位信息,也就是说蜜蜂依靠这样的方式构成了群体中的通信网络。
其特点是近距离、低复杂度、自组织、低功耗、高数据速率、低成本。
主要适合用于自动控制和远程控制领域,可以嵌入各种设备。
简而言之,ZigBee就是一种便宜的,低功耗的近距离无线组网通讯技术。
ZigBee在整个智能家居系统中,承担着非常重要的作用,即对用户家中所有可联网物品进行联网。
联网后通过Linux网关进行数据的传递,最终达到传感数据的采集和可控设备的控制。
二、功能分析:基本结构:控制节点:主要实现对家电和设备的控制,调节和监测,例如:灯光、电动窗帘、防盗报警、灯光面板、电视、空调、电源插座、紧急报警等。
采集节点:主要采集室内外温湿度、光照、厨房燃气、人体红外、等传感信息图1.1 Texas instruments2.1灯光控制1)吊灯可调光:吊灯可调光是对调灯亮度进行调节,控制器接线分为单火和零火。
初期先实现零火控制器,后期再实现单火控制器。
零火可调光控制器实现方案:开关驱动部分使用晶闸管或功率三级管通过PWM占空比控制亮度,供电部分使用原边反馈型开关电源或阻容降压可使控制器体积小型化。
单火控制器:开关驱动部分和零火一样,电源部分需先实测吊灯点亮电流,依据该电流参考值设计单火取电电路。
单火取电实现原理为:吊灯点亮前由高压微电流开关稳压电源降压供电,该电流不足以点亮吊灯,吊灯点亮后由稳压器件稳压供电。
控制方式上除可通过ZigBee控制外,还有两个手动控制按键及按键指示灯。
2)开关面板:开关面板实现对无需调光灯的控制,包括一个物理开关按键和ZigBee控制。
ZigBee控制也分为单火取电与零火取电方式,实现方式同吊灯可调光。
ZigBee技术介绍精简功能设备(RFD):RFD只能传送信息给FFD或从FFD接收信息。
附带有限的功能来控制成本和复杂性,在⽹络中通常⽤作终端设备。
ZigBee⽹络定义了三种节点类型:协调器和路由器必须是全功能器件(FFD: Full function device),终端设备可以是全功能器件,也可以是简约器件(RFD: reduce function device)。
协调点是⼀个特殊的FFD,它具有较强的功能,是整个⽹络的主要控制者,它根据⽹络的最⼤深度(nwkMaxDepth),每个路由器能最多连接⼦设备的数⽬(nwkMaxChildren),每个路由器能最多连接⼦路由器的数⽬(nwkMaxRouters)等参数建⽴新的⽹络、収送⽹络信标、管理⽹络中的节点以及存储⽹络信息等。
RFD的应⽤相对简单,例如在传感器⽹络中,它们只负责将采集的数据信息収送给它的协调点,不具备数据转収、路由収现和路由维护等功能。
RFD占⽤资源少,需要的存储容量也⼩,在不収射和接收数据时处于休眠状态,因此成本⽐较低,功耗低。
FFD除具有RFD功能外,还需要具有路由功能,可以实现路由収现、路由选择,并转収数据分组。
⼀个FFD可以和另⼀个FFD或RFD通信,⽽RFD只能和FFD通信,RFD之间是⽆法通信的。
⼀旦⽹络启动,新的路由器和终端设备可以通过路由収现、设备収现等功能加⼊⽹络。
当路由器或终端设备加⼊ZigBee ⽹络时,设备间的⽗⼦关系(或说从属关系)即形成,新加⼊的设备为⼦,允许加⼊的设备为⽗。
⼀个简单的ZigBee⽹络⽗⼦关系如图3-a中的A、B。
ZigBee中每个协调点最多可连接255个节点,⼀个ZigBee⽹络最多可容纳65535个节点。
3.2 ⽹络拓扑ZigBee⽹络的拓扑结构主要有三种,星型⽹、⽹状(mesh)⽹和混合⽹,见图3。
星型⽹(图3-c)是由⼀个协调点和⼀个或多个终端节点组成的。
协调点必须是FFD,它负责収起建⽴和管理整个⽹络,其它的节点(终端节点)⼀般为RFD,分布在协调点的覆盖范围内,直接与协调点迚⾏通信。
Zigbee入门指导(二)——运行Zigbee例程在Zigbee入门指导(一)中讲解了基于CC2430的Zigbee 开发环境的搭建,安装完Ti的协议栈后,里面有多个例程,帮助用户入门及作为自己工程的基本框架。
在Zigbee入门指导(二)中,我们将通过演示执行相关的例程,了解Zigbee应用的启动流程(不是Zigbee网络的启动流程),了解运行一个自定义Zigbee工程所要作的软件方面的改动和工程选项的配置。
所用的开发套件为无线龙的套件。
一、修改HALHAL及所谓的Hardware Abstration Layer,通俗的了解即为开发板的硬件驱动,由于所用的是无线龙的开发板,与Ti的原装开发板有差异,需要对协议栈自带的HAL进行修改。
HAL文件存放在目录<Components/hal>中,里面有<common>、<include>、<target>三个目录,<common>中定义的与外设无关的硬件操作,<include>存放的是头文件,而<target>存放的是目标文件,里面根据目标板的不同分为<CC2430BB>、<CC2430DB>、<CC2430EB>。
所用的无线龙的开发板和CC2430EB最为相似,故修改<CC2430EB>中的内容。
按键操作几乎在每个例程中都会用到,故此处以按键驱动的修改为例,演示HAL的修改。
先了解下Ti和无线龙扩展板的不同之处。
Ti的CC2430EB 原理图在Ti文档SWRU133.pdf(位于SWRU133.zip中)。
Page29是按键电路的原理图,如图1图1(左上角是元件图)CC2430EB的按键其实是摇杆,上下左右四个方向和电阻网络相连,通过放大电路送到CC2430的P0.6脚,经AD采样后判断摇杆摆向哪个方向,按键编号为SW1~SW4摇杆也可像普通按键一样按下,产生一个直流电平变化,接到P0.5脚,按键编号为SW5。
zigbee技术介绍ZigBee作为用于个人网络的短距离无线通信协议,已变得越来越知名。
Zigbee是一种适用于短距离无线通信的低成本,低功耗,低速的新技术,可以嵌入各种电子设备中。
该技术主要设计用于低速通信网络。
它的最大特点是低功耗和联网功能,尤其是具有路由功能的联网功能。
从理论上讲,ZigBee覆盖的通信领域可以无限扩展。
ZigBe包含3种节点类型,即:协调器,路由节点和终端节点。
●协调器——启动网络和维护网络●路由节点——转发数据包●终端节点——发送和接收数据。
在实际的Zigbee网络中,仅支持两种无线设备:全功能设备和简化功能设备。
FFD可以提供所有IEEE802.15.4协议服务,不仅可以发送和接收数据,还可以具有路由功能;最终节点负责收集数据,然后将其发送到协调点或路由节点进行处理。
这三种类型的节点使ZigBee支持三种网络拓扑:星形结构,树形结构和网状结构Zigbee协议无线通信技术的特点:●低速率:数据传输速率在10Kb/s〜250Kb/s之间●低功耗:在低功耗待机模式下,两节普通5号电池可以使用6到24个月●成本低:Zigbee数据传输速率低,协议简单,大大降低了成本●网络容量大:网络可容纳65,000个设备●短延迟:典型的搜索设备延迟为30ms,睡眠激活延迟为15ms,活动设备通道访问延迟为15ms。
数据安全性:Zigbee提供数据完整性检查和声音功能,采用AES-128加密算法,并且每个应用程序都可以灵活确定其安全属性基于ZigBee技术的应用数字家庭ZigBee模块可以安装在电视,门禁系统,空调系统和其他家用电器中。
通过ZigBee终端设备,可以收集各种家庭信息并将其传输到中央控制设备,或者可以使用远程控制来实现远程控制的目的,从而提供家庭生活自动化,联网和智能化。
自动抄表读数通过ZigBee网络直接发送到提供天然气,水和电的公司。
利用ZigBee技术,天然气或水电公司可以直接向用户发送用水、用电、用气等信息,十分方便。
摘要:ZigBee是一种新兴的短距离、低速率无线网络技术,是一种基于IEEE 802.15.4的无线通信协议,是无线传感器网络实现的一种工具。
本文将就ZigBee技术的简介和应用,以及ZigBee技术的发展方向这几个方面对于ZigBee技术进行探讨。
关键词:ZigBee技术;家庭无线网络;全功能设备;精简功能设备1. 前言蜜蜂在发现花丛后会通过一种特殊的肢体语言来告知同伴新发现的食物源位置等信息,这种肢体语言就是ZigZag行舞蹈,是蜜蜂之间一种简单传达信息的方式。
借此意义ZigBee作为新一代无线通讯技术的命名。
在此之前ZigBee也被称为“HomeRF Lite”、“RF- EasyLink”或“fireFly”无线电技术,目前统称为ZigBee。
ZigBee技术最初是由13家通信及传感器领域的知名厂商于2004年底共同发起制定的。
同时成立了ZigBee联盟以避免标准混乱带来的内部争斗。
简而言之,ZigBee就是一种便宜的,低功耗的近距离无线组网通讯技术。
ZigBee, 在中国被译为""紫蜂"",它与蓝牙相类似.是一种新兴的短距离无线技术。
2. ZigBee技术2.1 ZigBee技术综合简介a. ZigBee的IEEE相关ZigBee 采取了IEEE 802.15.4 强有力的无线物理层所规定的全部优点,因而要想弄清楚ZigBee,就要了解IEEE 802.15.4,它就是ZigBee物理层和MAC层的模板IEEE802.15.4网络是指使用相同无线信道并通过IEEE 802.15.4标准相互通信的一组设备的集合。
在这个网络中,根据设备所具有的通信的能力,可以分为全功能设备,和精简功能设备。
全功能设备之间以及全功能设备与精简功能设备之间都可以通信,与精简功能设备相关的全功能设备通常称之为协调器。
IEEE802.15.4定义了两种拓扑结构,分别为星状拓扑(理论上一个协调器和多达255个子设备)和点对点模式。
Zigbee技术简介Zigbee是一种新兴的短距离、低速率、低功耗无线网络技术,它是一种介于无线标记技术和蓝牙之间的技术提案。
它此前被称作“HomeRF Lite”或“FireFly”无线技术,主要用于近距离无线连接。
它有自己的无线电标准,在数千个微小的传感器之间相互协调实现通信。
这些传感器只需要很低的功耗,以接力的方式通过无线电波将数据从一个传感器传到另一个传感器,因此它们的通信效率非常高。
最后,这些数据就可以进入计算机用于分析或者被另外一种无线技术如WiMax收集。
Zigbee的基础是IEEE802.15.4这是IEEE无线个人区域网(Personal Area Network,PAN)工作组的一项标准,被称作IEEE802.15.4(Zigbee)技术标准。
Zigbee不仅只是802.15.4的名字。
IEEE仅处理低级MAC层和物理层协议,因此Zigbee联盟对其网络层协议和API进行了标准化(如下图2所示)。
完全协议用于一次可直接连接到一个设备的基本节点的4K字节或者作为Hub或路由器的协调器的32K字节。
每个协调器可连接多达255个节点,而几个协调器则可形成一个网络,对路由传输的数目则没有限制。
Zigbee联盟还开发了安全层,以保证这种便携设备不会意外泄漏其标识,而且这种利用网络的远距离传输不会被其它节点获得。
Zigbee技术的主要特点包括以下几个部分:*数据传输速率低:一般在10kbps~250kbps,传输速率低,专注于低传输应用;*功耗低: 工作状态下平局功耗在几十毫瓦,休眠状态1μw。
在低耗电待机模式下,两节普通5号干电池可使用6个月到2年,免去了充电或者频繁更换电池的麻烦。
这也是Zigbee的支持者所一直引以为豪的独特优势;*成本低:因为Zigbee数据传输速率低,协议简单,所以大大降低了成本。
且Zigbee协议免收专利费。
*时延短:通常时延都在15毫秒至30毫秒之间;*安全:Zigbee提供了数据完整性检查和鉴权功能,加密算法采用AES-128,同时可以灵活确定其安全属性;*网络容量大:每个Zigbee网络最多可支持255个设备(最大节点数达6万以上),也就是说,每个Zigbee设备可以与另外254台设备相连接;*优良的网络拓扑能力:ZigBee具有星、树和丛网络结构的能力。
Zigbee详细介绍在蓝牙技术的使用过程中,人们发现蓝牙技术尽管有许多优点,但仍存在许多缺陷。
对工业,家庭自动化控制和遥测遥控领域而言,蓝牙技术显得太复杂,功耗大,距离近,组网规模太小等,而工业自动化对无线通信的需求越来越强烈。
Zigbee是什么?Zigbee 是一个由可多到65000个无线数传模块组成的一个无线数传网络平台,十分类似现有的移动通信的CDMA网或GSM网,每一个Zigbee网络数传模块类似移动网络的一个基站,在整个网络范围内,它们之间可以进行相互通信;每个网络节点间的距离可以从标准的 75 米,到扩展后的几百米,甚至几公里;另外整个 Zigbee 网络还可以与现有的其它的各种网络连接。
例如,你可以通过互联网在北京监控云南某地的一个Zigbee 控制网络。
不同的是,Zigbee网络主要是为自动化控制数据传输而建立,而移动通信网主要是为语音通信而建立;每个移动基站价值一般都在百万元人民币以上,而每个Zigbee基站却不到1000元人民币;每个Zigbee网络节点不仅本身可以与监控对对象,例如传感器连接直接进行数据采集和监控,它还可以自动中转别的网络节点传过来的数据资料;除此之外,每一个Zigbee网络节FFD还可在自己信号覆盖的范围内,和多个不承担网络信息中转任务的孤立的子节点RFD 无线连接。
每个 Zigbee 网络节点(FFD 和 RFD)可以可支持多到31个的传感器和受控设备,每一个传感器和受控设备终可以有8种不同的接口方式。
可以采集和传输数字量和模拟量。
Zigbee技术的应用领域Zigbee技术的目标就是针对工业,家庭自动化,遥测遥控,汽车自动化、农业自动化和医疗护理等,例如灯光自动化控制,传感器的无线数据采集和监控、油田、电力、矿山和物流管理等应用领域。
另外它还可以对局部区域内移动目标:例如城市中的车辆进行定位。
通常,符合如下条件之一的应用,就可以考虑采用 Zigbee 技术做无线传输:1.需要数据采集或监控的网点多;2.要求传输的数据量不大,而要求设备成本低;3.要求数据传输可性高,安全性高;4.设备体积很小,不便放置较大的充电电池或者电源模块;5.电池供电;6.地形复杂,监测点多,需要较大的网络覆盖;7.现有移动网络的覆盖盲区;8.使用现存移动网络进行低数据量传输的遥测遥控系统。
ZigBee协议栈初始化网络启动流程图ZigBee协议栈初始化网络启动流程ZigBee的基本流程:由协调器的组网(创建PAN ID),终端设备和路由设备发现网络以及加入网络。
基本流程:main()->osal_init_system()->osalInitT asks()->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和ARM9的智能家居系统的研究与设计二、基于ZigBee技术家居环境改善系统研究三、ZigBee技术在矿井人员管理系统中的应用四、基于CC2530的ZigBee协调器节点设计五、基于ZigBee技术的智能家居控制系统的研究与实现六、基于3G和ZigBee的智能家居无线传感网络系统设计与实现七、基于ZigBee协议的无线传感器网络关键技术的研究和实现八、基于ZigBee技术的无线传感器网络设计研究九、基于ZigBee的移动智能终端在物联网智能家具中的应用基于Zigbee和ARM9的智能家居系统的研究与设计智能家居系统的发展迅速,已经成为家庭自动化和物联网领域的研究热点。
本文将研究并设计一种基于Zigbee和ARM9技术的智能家居系统,旨在实现家居设备的远程控制、智能管理以及节能减排。
在系统设计方面,我们采用Zigbee和ARM9技术相结合的方式,构建了一套智能家居系统。
该系统由Zigbee无线通信模块和ARM9处理模块组成,实现家居设备间的无线通信与数据传输。
系统还配备了上位机软件,方便用户对家居设备进行远程监控和管理。
在功能模块方面,本系统主要包括以下三个模块:1、Zigbee模块:该模块负责家居设备间的无线通信与数据传输,支持多种传感器和执行器的接入,如温度传感器、湿度传感器、门窗传感器、灯光控制器等。
2、ARM9模块:该模块作为系统的核心处理器,负责处理Zigbee模块传输的数据,并对家居设备进行控制和管理。
同时,它还负责与上位机软件进行通信,实现远程监控和管理功能。
3、协作关系:Zigbee模块与ARM9模块之间通过无线通信方式进行数据传输和控制指令的发送。
上位机软件则可以通过网络与ARM9模块相连,实现远程监控和管理家居设备的功能。
在实际应用方面,本系统具有稳定性高、安全性好、节能效果显著等优点。
首先,Zigbee模块采用低功耗设计,可保证系统在持续工作的情况下具有较长的续航时间。
Zigbee技术简介及应用摘要二十一世纪初,信息技术的迅猛发展使人们的生活水平和工作效率极大地提高。
近距离内各种设备的无线通讯成为一个研究热点。
目前也有着几种发展比较成熟的无线通讯技术。
本文介绍的是目前一种比较流行的短距离无线通讯接入技术——Zigbee。
这种技术将使短距离无线通讯技术广泛地应用于生产生活中成为可能。
介绍完该技术后,通过特定的一个例子SampleApp工程对该技术进行进一步说明,该例子是现的功能是:A、B两个节点,当按下A(或B)节点的按键1时,点亮或熄灭B(或A)节点的LED1灯。
关键词:Zigbee技术;无线通讯技术1 Zigbee技术概述及其特征1.1 Zigbee技术概述ZigBee的名称源于蜜蜂的舞蹈,蜜蜂通过跳ZigZag形状的舞蹈交换各种信息。
故将新一代无线通信技术命名为ZigBee。
ZigBee过去又称为"HomeRF Lite"、"RF-EasyLink"或"FireFly"无线电技术,目前统称为ZigBee技术。
ZigBee是在2004年底才由Zigbee联盟正式发布的一种无线传输协议。
2006年12月,该联盟正式推出Zigbee的升级规范——Zigbee2006,也称为“增强型”Zigbee。
Zigbee技术是一种可以实现短距离内双向无线通讯的技术。
Zigbee技术以其复杂程度低、能耗低、成本低取胜于其余的短距离无线通讯技术。
其主要应用于短距离内,传输速度要求不高的电子通讯设备之间的数据传输和典型的有周期性、间歇性和地反应时间的数据的传输。
Zigbee是IEEE802.15.4技术的商业名称,该技术的核心由其制定。
能够在三个不同的频段上通讯。
全球通用的频段是2.4-2.484GHz,欧洲采用的频段是868.0-868.66MHz,美国采用的频段是902-928MHz。
该技术的高层应用和市场推广由Zigbee联盟负责。
zi gbee 网络建立过程简介( G1)星形网络和树型网络可以看成是网状网络的一个特殊子集,所以接下来分析如何组建一个Zigbee网状网络。
组建一个完整的Zigbee网络分为两步:第一步是协调器初始化一个网络;第二步是路由器或终端加入网络。
加入网络又有两种方法,一种是子设备通过使用MAC层的连接进程加入网络,另一种是子设备通过与一个先前指定的父设备直接加入网络。
一、协调器初始化网络协调器建立一个新网络的流程如图1所示。
WliE-N ETWORK-FORW MION 啲TMJ^E-SCAN requestMLWE-SDAK confamMLME-SCAN.requestMLWE-SCAN contfni畝外站it PM ID.MUML-5C.1「eqestHL ME ShT cenfinnMLK1E-5TAr(T requestmiE-STARTanfirmNLM:'. NETWCftK-rORMMlON infirmAPL NWK MAC图1协调器建立一个新网络1、检测协调器建立一个新的网络是通过原语NLME_NETWORK_FORMATION.reqi发起的,但发起NLME_NETWORK_FORMATION.reqi原语的节点必须具备两个条件,一是这个节点具有ZigBee协调器功能,二是这个节点没有加入到其它网络中。
任何不满足这两个条件的节点发起建立一个新网络的进程都会被网络层管理实体终止,网络层管理实体将通过参数值为INVALID_REQUES的NLME_NETWORK_FORMATION.con的原语来通知上层这是一个非法请求。
2、信道扫描协调器发起建立一个新网络的进程后,网络层管理实体将请求MAC子层对信道进行扫描。
信道扫描包括能量扫描和主动扫描两个过程。
首先对用户指定的信道或物理层所有默认的信道进行一个能量扫描,以排除干扰。
网络层管理实体将根据信道能量测量值对信道进行一个递增排序,并且抛弃能量值超过了可允许能量值的信道,保留可允许能量值内的信道等待进一步处理。
ZigBee无线通讯技术介绍一、ZigBee技术的起源ZigBee是一种新兴的近距离、低功耗、低数据速率、低成本、低复杂度的无线传感器网络的新技术,它是一种介于无线标记技术和蓝牙之间的技术提案。
主要用于近距离无线连接,面向无线传感和工业控制应用领域。
它依据802.15.4标准,在数千个微小的传感器之间相互协调实现通信。
这些传感器只需要很少的能量,以接力的方式通过无线电波将数据从一个传感器传到另一个传感器,所以它们的通信效率非常高。
ZigBee一词源自蜜蜂群在发现花粉位置时,通过跳ZigZag形舞蹈来告知同伴,达到交换信息的目的。
可以说是一种小的动物通过简捷的方式实现“无线”的沟通。
人们借此称呼一种专注于低功耗、低成本、低复杂度、低速率的近程无线网络通信技术,亦包含此寓意。
一般而言,随着通信距离的增大,设备的复杂度、功耗以及系统成本都在增加。
相对于现有的各种无线通信技术,ZigBee技术将是最低功耗和成本的技术。
ZigBee联盟成立于2001年8月,2002年下半年,英国Invensys公司、日本三菱电气公司、美国摩托罗拉公司以及荷兰飞利浦半导体公司等四大公司加盟ZigBee联盟,这一事件成为ZigBee技术的里程碑。
到目前为止,加盟ZigBee 联盟的不仅仅只有当初的四大公司,而是涵盖了IT领域以及其它行业的150多家企业。
ZigBee是一组基于IEEE 802.15.4无线标准研制开发的、有关组网、安全和应用软件方面的技术,IEEE 802.15.4仅处理MAC层和物理层协议,ZigBee 联盟对其网络层协议和API进行了标准化。
ZigBee是由ZigBee Alliance所主导的标准,定义了网络层(Network Layer)、安全层(Security Layer)、应用层(Application Layer)、以及各种应用产品的资料(Profile);而由国际电子电机工程协会(IEEE)所制订的802.15.4标准,则是定义了物理层(PHY Layer)及媒体存取层(Media Access ControlLayer;MAC Layer)二、技术特点:★功耗低ZigBee 技术采用了多种节电的工作模式,在休眠状态下耗电量仅仅只有1μW,通信距离短的情况下工作状态的耗电为30mW,在低耗电待机模式下,两节普通5号干电池可使用6个月以上;★通信可靠ZigBee采用了CSMA-CA的碰撞避免机制,同时为需要固定带宽的通信业务预留了专用时隙,避免了发送数据时的竞争和冲突;MAC层采用了完全确认的数据传输机制,每个发送的数据包都必须等待接收方的确认信息;★网络的自组织、自愈能力强ZigBee的自组织功能:无需人工干预,网络节点能够感知其他节点的存在,并确定连接关系,组成结构化的网络;ZigBee自愈功能:增加或者删除一个节点,节点位置发生变动,节点发生故障等等,网络都能够自我修复,并对网络拓扑结构进行相应地调整,无需人工干预,保证整个系统仍然能正常工作;★成本低设备的复杂程度低,且ZigBee协议是免专利费的,这些可以有效地降低设备成本;ZigBee 的工作频段为免执照频段的2.4GHz,是免使用费的无线通信信道;★网络容量大每个ZigBee网络最多可支持65000个节点,也就是说每个ZigBee节点可以与数万节点相连接。
3 ZigBee网络无线传感器3.1 什么是ZigBeeZigBee 是一种无线网络技术标准。
ZigBee 是一种新兴的短距离、低速率无线网络技术,它是一种介于无线标记技术和蓝牙之间的技术提案。
它此前被称作“HomeRF Lite”或“FireFly”无线技术,主要用于近距离无线连接。
它有自己的无线电标准,在数千个微小的传感器之间相互协调实现通信。
这些传感器只需要很少的能量,以接力的方式通过无线电波将数据从一个传感器传到另一个传感器,所以它们的通信效率非常高。
最后,这些数据就可以进入计算机用于分析或者被另外一种无线技术如WiMax收集。
ZigBee 基础是IEEE 802.15.4,它是IEEE无线个人区域网(Personal Area Network,PAN)工作组的一项标准,被称作IEEE 802.15.4(ZigBee)技术标准。
ZigBee 不只是802.15.4 的名字。
因为IEEE802.15.4 仅规范了低级MAC 层和物理层协议,但ZigBee 联盟对其网络层协议和API 进行了标准化。
ZigBee 完全协议用于一次可直接连接到一个设备的基本节点的4K字节或者作为Hub 或路由器的协调器的32K 字节。
每个协调器可连接多达255 个节点,而几个协调器则可形成一个网络,对路由传输的数目则没有限制。
ZigBee 联盟还开发了安全层,以保证这种便携设备不会意外泄漏其标识,而且这种利用网络的远距离传输不会被其它节点获得。
ZigBee 联盟成立于2001年8 月。
2002 年下半年,英国Invensys公司、日本三菱电气公司、美国摩托罗拉公司以及荷兰飞利浦半导体公司四大巨头共同宣布,它们将加盟“ZigBee 联盟”,以研发名为“ZigBee”的下一代无线通信标准,这一事件成为该项技术发展过程中的里程碑。
到目前为止,除了TI(德州仪器)、Invensys、Ember、三菱电子、摩托罗拉、飞思卡尔和飞利浦等国际知名的大公司外,该联盟已有200 多家成员企业,并在迅速发展壮大。
设备启动准备一、设备类型选择:通过Workspace下拉框选择设备的类型:图1:协调器图2:路由器图3:终端节点协议栈设备类型:#define ZG_DEVICETYPE_COORDINATOR 0x00#define ZG_DEVICETYPE_ROUTER 0x01#define ZG_DEVICETYPE_ENDDEVICE 0x02#define ZG_DEVICETYPE_SOFT 0x03ZG_DEVICETYPE_SOFT说明:可选设备类型。
可以成为路由器、也可以成为协调器,由后面的程序决定。
初始化:对于DEVICE_LOGICAL_TYPE的值各逻辑类型设备初始化如下:// Device Logical Type//zgDeviceLogicalType = DEVICE_LOGICAL_TYPE在ZGlobals.h文件中设备逻辑类型进行了初始化:#if defined ( SOFT_START )#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_SOFT //可选择类型#elif defined( ZDO_COORDINATOR )#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_COORDINATOR //协调器#elif defined (RTR_NWK)#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_ROUTER //路由器#else#define DEVICE_LOGICAL_TYPE ZG_DEVICETYPE_ENDDEVICE //终端#endif说明:如果编译了SOFT_START,则初始化设备逻辑类型(DEVICE_LOGICAL_TYPE)为可选择类型(ZG_DEVICETYPE_SOFT)即设备可以作为协调器启动创建一个网络或者作为路由器加入一个已经存在的网络。
如果没有编译SOFT_START但编译了ZDO_COORDINATOR,则初始化设备逻辑类型(DEVICE_LOGICAL_TYPE)为协调器(ZG_DEVICETYPE_COORDINATOR),即设备作为路由器启动并创建一个网络。
如果没有编译SOFT_START和ZDO_COORDINATOR,但编译了RTR_NWK,则初始化设备的逻辑类型为路由器,即设备作为路由器启动并加入网络。
其他情况则初始化为终端节点并加入网络。
SOFT-START说明:SOFT_START is a compile option that allows the device to start as a coordinator if one isn't found.设备启动模式(devStartMode)、设备状态(devState)启动模式:表示了设备是以何种方式启动typedef enum{MODE_JOIN, //加入MODE_RESUME, //恢复//MODE_SOFT, //暂不支持MODE_HARD, //创建网络MODE_REJOIN //重新加入} devStartModes_t;说明:MODE_JOIN和MODE_REJOIN 是路由器和终端使用的选项,用来加入或者重新加入网络。
而MODE_HARD是协调器使用的选项。
用来创建一个网络。
而MODE_RESUME 是恢复设备原来的状态。
设备状态标识了设备此时的状态:typedef enum{DEV_HOLD, // Initialized - not started automaticallyDEV_INIT, // Initialized - not connected to anythingDEV_NWK_DISC, // Discovering PAN's to joinDEV_NWK_JOINING, // Joining a PANDEV_NWK_REJOIN, // ReJoining a PAN, only for end devicesDEV_END_DEVICE_UNAUTH, // Joined but not yet authenticated by trust centerDEV_END_DEVICE, // Started as device after authenticationDEV_ROUTER, // Device joined, authenticated and is a routerDEV_COORD_STARTING, // Started as Zigbee CoordinatorDEV_ZB_COORD, // Started as Zigbee CoordinatorDEV_NWK_ORPHAN // Device has lost information about its parent..} devStates_t;初始化(以协调器为例)devStartMode和devState的初始化,ZDApp.c中启动模式(devStartModes_t)#if defined( ZDO_COORDINATOR ) && !defined( SOFT_START )// Set the default to coodinatordevStartModes_t devStartMode = MODE_HARD;#else// Assume joiningdevStartModes_t devStartMode = MODE_JOIN;#endif说明:如果编译了ZDO_COORDINATOR并且没有编译SOFT_START,则初始化设备启动模式(devStartMode)为MODE_HARD,即协调器创建网络。
其他情况初始化设备启动模式(devStartMode)为MODE_JOIN,即设备加入网络。
.以上可以看出,如果编译了SOFT_START。
首先并不是创建网络,而是先加入网络。
如果网络加入失败,则考虑创建一个网络。
设备状态(devState):#if defined( HOLD_AUTO_START )devStates_t devState = DEV_HOLD;// Initialized - not started automatically#elsedevStates_t devState = DEV_INIT;// Initialized - not connected to anything#endif说明:如果编译了HOLD_AUTO_START,则设备状态(devState)为DEV_HOLD;否则设备状态(devState)为DEV_INIT。
Hold Auto Start说明:A device will automatically start trying to form or join a network . If the device should wait on a timer or other external event before joining, thenHOLD_AUTO_START must be defined. In order to manually start the join process at a later time.3、有两种方式来设置非自动启动模式:Hold Auto Start(1)、手工方式:在ZDApp_Init()函数中有个ZDAppCheckForHoldKey();(// Check for manual(手工的) "Hold Auto Start").void ZDAppCheckForHoldKey( void ){//如果检测到按键SW_BYPASS_START被按下,则将设备的状态置为DEV_HOLD#if (defined HAL_KEY) && (HAL_KEY == TRUE)if ( HalKeyRead () == SW_BYPASS_START){devState = DEV_HOLD;}#endif}(2)、预编译方式:project->options->c/c++compiler->preprocessor->defined symbols下编译选项:HOLD_AUTO_START在ZDApp.c中:#if defined( HOLD_AUTO_START )devStates_t devState = DEV_HOLD;#elsedevStates_t devState = DEV_INIT;#endif把devState初始化为DEV_HOLD.以上两种方式最终都会设置devState = DEV_HOLD // Initialized - not started automatically预编译选项:什么是预编译选项:Compile options are used to select between features that are provided in the source files. Most compile options act as on/off switches for specific sections within source programs. Some options are used to provide a user-defined编译选项是将源程序里提供的特性选择应用。
大多数编译选项是充当“开关”作用。
直接通过编译选项来决定是否应用某一特性。
编译选项配置的两种方式:A:TOOL文件夹下的三个配置文件在Tools文件夹下查看f8wCoord.cfg、f8wRouter.cfg、f8wEdev.cfg三个配置文件信息。
协调器:f8wCoord.cfg配置文件中同时编译了路由功能RTR_NWK和协调器功能ZDO_COORDINATOR/* Coordinator Settings */-DZDO_COORDINATOR // Coordinator Functions-DRTR_NWK // Router Functions路由器:f8wRouter.cfg配置文件中编译了路由功能RTR_NWK/* Router Settings */-DRTR_NWK // Router Functions终端:f8wEdev.cfg配置文件中没有编译这两个功能./* */通过配置文件我们也可以看出协调器不仅具有协调器的作用还可以充当路由器,这就是我们所说的如果当协调器创建完网络后就可以认为协调器就变成了路由器了。