zigbee 订阅
ZigBee,也称紫蜂,是一种低速短距离传输的无线网上协议,底层是采用IEEE 802.15.4标准规范的媒体访问层与物理层。主要特色有低速、低耗电、低成本、支持大量网上节点、支持多种网上拓扑、低复杂度、快速、可靠、安全。 展开全文
ZigBee,也称紫蜂,是一种低速短距离传输的无线网上协议,底层是采用IEEE 802.15.4标准规范的媒体访问层与物理层。主要特色有低速、低耗电、低成本、支持大量网上节点、支持多种网上拓扑、低复杂度、快速、可靠、安全。
信息
全球频段
2.4GHz(全球使用)
欧洲频段
868MHz
北美频段
915MHz
中文名
紫蜂协议
标    准
IEEE802.15.4
外文名
ZigBee
zigbee简介
ZigBee是一项新型的无线通信技术,适用于传输范围短数据传输速率低的一系列电子元器件设备之间。 ZigBee无线通信技术可于数以千计的微小传感器相互间,依托专门的无线电标准达成相互协调通信,因而该项技术常被称为Home RF Lite无线技术、FireFly无线技术。ZigBee无线通信技术还可应用于小范围的基于无线通信的控制及自动化等领域,可省去计算机设备、一系列数字设备相互间的有线电缆,更能够实现多种不同数字设备相互间的无线组网,使它们实现相互通信,或者接入因特网。 [1]  ZigBee译为"紫蜂",它与蓝牙相类似。是一种新兴的短距离无线通信技术,用于传感控制应用(Sensor and Control)。由IEEE 802.15工作组中提出,并由其TG4工作组制定规范。ZigBee无线通信技术是基于蜜蜂相互间联系的方式而研发生成的一项应用于互联网通信的网络技术。 相较于传统网络通信技术,ZigBee无线通信技术表现出更为高效、便捷的特征。作为一项近距离、低成本、低功耗的无线网络技术,ZigBee无线通信技术其关于组网、 安全及应用软件方面的技术是基于IEEE批准的802 15.4无线标准。该项技术尤为适用于数据流量偏小的业务,可尤为便捷地在一系列固定式、便携式移动终端中进行安装,与此同时,ZigBee无线通信技术还可实现GPS功能。 [1]  ZigBee技术本质上是一种速率比较低的双向无线网络技术,其由IEEE.802.15.4无线标准开发而来,拥有低复杂度和短距离以及低成本和低功耗等优点。其使用了2.4GHz频段,这个标准定义了ZigBee技术在IEEE.802.15.4标准媒体上支持的应用服务。ZigBee联盟的主要发展方向是建立一个基础构架,这个构架基于互操作平台以及配置文件,并拥有低成本和可伸缩嵌入式的优点。搭建物联网开发平台,有利于研究成果的转化和产学研对,是实现物联网的 简单途径。 [2] 
收起全文
精华内容
参与话题
问答
  • zigbee学习笔记(一)之 zigbee简介

    千次阅读 多人点赞 2017-11-30 00:45:00
    近期在学习zigbee这一方面的东西,特将自己的学习的一些过程写下来,很多都是一些自己的见解,因为初次接触这一方面,有不对的地方,还请见谅! zigbee学习笔记(一) zigbee简介 1、什么是zigbeezigbee是协议...

    近期在学习zigbee这一方面的东西,特将自己的学习的一些过程写下来,很多都是一些自己的见解,因为初次接触这一方面,有不对的地方,还请见谅!

    zigbee学习笔记(一) zigbee简介

    1、什么是zigbee?

    zigbee是协议,类似于蓝牙、WiFi等等;它是一种标准,该标准定义了短距离、低数据传输速率无线通信的所需要的一系列的通信协议。

    2、zigbee无线网络工作的三个频率 868MHZ、915MHZ、2.4GHZ

    3、不同的工作频率下有不同的数据传输速率,每个频段由分为若干个信道

    4、zigbee无线网络一共分为5层,分别是:物理层(PHY)、介质访问控制层(MAC)、网络层(NWK)、应用程序支持子层(APS)、应用层(APL)

    其中物理层和介质访问层由IEEE802.15.4规范定义 其余三层由zigbee协议定义。

    5、zigbee协议的特点:高可靠性、低成本、低功耗、高安全性、低数据速率

    6、zigbee协议和z-stack协议栈的关系:z-stack是具体实现zigbee协议的一个软件,也可以把他看成一个封装好了的函数库,他具体实现了zigbee协议。通常的应用开发

    都是基于这个协议栈进行二次开发,通过调用协议栈里面的函数,实现我们具体要实现的功能。

    7、zigbee网络中一共有三种设备:

    ①协调器:负责搭建起zigbee网络,搭建玩之后,他就和普通的路由器一样

    ②路由器:起路由功能

    ③终端节点:只负责和自己的父节点通信

    三种设备其实在硬件上是一样的,只不过是在软件烧写进去得时候,我们配置不一样的软件进去,这个我们会在后面具体介绍,在这里我们只需要有这样一个感性的认识

    就行;

    8、zigbee网络中的三种拓扑结构 分别为星形拓扑结构、树形拓扑结构和网形拓扑结构。

     

    星形拓扑结构

     

    星形网络是ZigBee的最小型网络,由一个协调器和若干个终端构成(星形结构不支持路由器)。优点是结构简单和数据传输速度快,其缺点是网络中的节点数少且通

    信距离短,一般用于构成小型网络。星形网络的最大缺点是对协调器的要求很高,一旦协调器出现故障或掉电,整个网络将瘫痪。

    树形拓扑结构

    树形网络结构是由协调器、路由器(也可承担终端的功能)和终端组成,网络结构比星形结构复杂。其优点是网络的节点数多,可组成大规模ZigBee网络,数据传输

    的速度比网形网络快,而且当网络组建完成后可不再依赖协调器,即使将协调器撤出网络仍可正常运行。其缺点是网络的安全性较差,即当一个路由器出现故障时,该路由器下

    的子节点将无法通信,协调器下的网络节点可以是路由器,也可以是终端,每个路由器下仍可以是路由器或终端,上一级节点和其下一级节点形成父子关系。

    网形拓扑结构

    网形网络结构是由协调器、路由器(也可承担终端的功能)和终端组成,其网络结构比树形网络结构复杂。其缺点是通信速度一般会低于树形网络结构,优点是网络的

    节点多,可组成大规模ZigBee网络,而且当网络组建完成后可不再依赖协调器,即使将协调器撤出,网络仍可正常运行。网形网络结构的最大优点是网络的安全性优于树形网络

    结构,即当一个路由器出现故障时可能不会影响其子节点的通信(条件是该子节点的附近有其它路由器)。

    这三种拓扑结构在网络结构上有一定的区别,特别是在后面的网内地址计算的时候需要注意

    9、zigbee网络的网络号、网内地址、Mac地址

    网络号是只某个zigbee网络的网络号,网内地址是在某个zigbee网内部,用于区分不同设备的地址,称为网络地址,也称为短地址(16位),

    Mac地址是每个芯片的硬件地址,是芯片在制作的时候就固定的全球唯一的64位地址,也称长地址。

     

    展开全文
  • ZigBee

    2020-03-01 13:41:01
    初识ZigBee ZigBee是基于IEEE802.15.4标准的低功耗局域网协议,ZigBee技术是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术 主要适合用于自动控制和远程控制领域,会出现在各种设备。非常适合...

    初识ZigBee

    1. ZigBee是基于IEEE802.15.4标准的低功耗局域网协议,ZigBee技术是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术
    2. 主要适合用于自动控制和远程控制领域,会出现在各种设备。非常适合用于有周期性数据、间歇性数据和低反应时间数据传输的应用。
    3. ZigBee又称紫蜂协议,来源于蜜蜂的八字舞(蜜蜂通过乏字形“舞蹈”与同伴传递信息)也就是说ZigBee协议可以建立类似于蜂群的通信网络.
    4. ZigBee是一-个由可多到65000个模块组成的无线网络平台,任何节点之间可以相互通信,通信距离一般在几十米左右。

    特性:

    低功耗:

    在低耗电待机模式下,2节5号干电池可支持1个节点工作6~24个月,甚至更长。相比较,蓝牙能工作数周、WiFi可工作数小时。

    低成本:

    通过大幅简化协议,降低了对通信控制器的要求,每块芯片的价格远低于蓝牙或WiFi。

    低速率:

    ZigBee分别提供250kbps (2.4GHz)40kbps (915MHz)和20kbps ( 868MHz)的原始数据吞吐率,满足低速率传输数据的应用需求。

    短时延:

    ZigBee的响应速度较快,一般从睡眠转入工作状态只需15ms,节点连接进人网络只需30ms,进一步节省了电能。相比较,蓝牙需要3~10s、WIFI需要3s

    高安全:

    ZigBee提供了三级安全模式,包括无安全设定、使用访问控制清单(ACL )防止非法获取数据以及在数据转移中采用高级加密标准(AES)的对称密码加密。

    ZigBee,蓝牙,WIFI对比图:

    在这里插入图片描述
    ZigBee的传输速率最低,同时其功耗,费用,技术复杂度都最低

    ZigBee网络角色

    • 协调器
      在ZigBee网络中,有且只能有一个协调器,它在网络中起了网络搭建和网络维护的功能。是整个网络的中心枢纽。是等级最高的父节点。
    • 路由器
      路由器在ZigBee网络中既可以充当父节点,也可以充当子节点,有信息转发和辅助协调器维护网络的功能。
    • 终端
      终端功能只能加人网络,为最末端的子节点设备。只能与其父节点进行通信,如果两个终端之间需要通信,必须经过父节点进行多跳或者单跳通信。是网络中数量最多的节点,也是低功耗的网络设备。

    在这里插入图片描述

    网络拓扑结构:

    星状网络

    星状网络包含一个协调器(中心节点)和若千个路由器和终端(附属节点)组成。
    该结构如下图所示:
    在这里插入图片描述

    该结构网络中,每个附属节点只能与中心节点通信,如果需要两个附属节点之间通信,必须经过中心节点进行数据转发。

    树状网络

    树状网络包含一个协调器,若干个路由器和终端组成。

    在这里插入图片描述
    结点之间的信息只能沿着树的路径向上传递到共同的父节点,再由共同的父节点向下转发给目的节点。

    网状网络

    网络中具有路由功能的设备之间都可以直接相互通信,在通信范围内不需要其他节点转发。
    在这里插入图片描述

    网络中每个结点具有重新选择路由的功能,所以当某个路由器出现故障时,网络可以自动重新组网,因此该组网方式良好的可靠性。

    ZigBee应用领域:

    家庭和建筑物的自动化控制:照明、空调、窗帘等家具设备的远程控制。
    消费性电子设备:电视、DVD、CD机等电器的遥控。
    PC外设:无线键盘、鼠标、游戏操纵杆等。

    ZigBee协议:

    在这里插入图片描述

    物理层(PHY )

    物理层定义了物理无线信道和MAC子层乏间的接口。
    物理层数据服务从无线物理信道上收发数据。

    MAC层

    MAC层负责处理所有的物理无线信道访问,并产生网络信号、同步信号:提供两个对等MA C实体乏间可靠的链路。

    网络层

    网络层主要实现结点加^或离开网络、接收或抛弃其他节点、路由查找及传送数据等功能,支持多种路由算法。

    应用层

    应用层包含三部分:应用框架AF、ZigBee设备对象ZD0和应用支持APS子层。它们实现了将不同的应用对象映射到ZigBee网络层

    展开全文
  • Zigbee

    千次阅读 2017-05-30 10:08:53
     在ZigBee协议中,协议本身已经定义了大部分内容。在基于ZigBee协议的应用开发中,用户只需要实现应用程序框架即可。应用程序框架中包含了最多240个应用程序对象。如果我们把一个应用程序对象看做为一个任务的话,...
    一、概述
         OSAL (Operating System Abstraction Layer),翻译为操作系统抽象层”。
       在ZigBee协议中,协议本身已经定义了大部分内容。在基于ZigBee协议的应用开发中,用户只需要实现应用程序框架即可。应用程序框架中包含了最多240个应用程序对象。如果我们把一个应用程序对象看做为一个任务的话,那么应用程序框架将包含一个支持多任务的资源分配机制。于是OSAL便有了存在的必要性,它正是Z-Stack为了实现这样一个机制而存在的。
         OSAL就是以实现多任务为核心的系统资源管理机制。所以OSAL与标准的操作系统还是有很大的区别的。
      简单而言,
    OSAL实现了类似操作系统的某些功能,但并不能称之为真正意义上的操作系统
    二、OSAL运行方式
         在GenericApp的工程的workspace里面可以看到三个文件,分别是“GenericApp.c”“GenericApp.h”“OSAL_GenericApp.c”。我们整个程序所实现的功能都在这三个文件当中。

       首先打开GenericApp.c这个文件。我们首先看到的是比较重要的两个函数:GenericApp_InitGenericApp_ProcessEvent从函数名称上我们很容易得到的信息便是,GenericApp_Init是任务的初始化函数,而GenericApp_ProcessEvent则负责处理传递给此任务的事件,此函数的主要功能是判断由参数传递的事件类型,然后执行相应的事件处理函数


      当有一个事件发生的时候,OSAL负责将此事件分配给能够处理此事件的任务,然后此任务判断事件的类型,调用相应的事件处理程序进行处理
    三、 OSAL的事件传递机制
          OSAL是如何传递事件给任务的?
    首先介绍一下tasksArr 、tasksEvents(在OSAL_GenericApp.c文件中)。
    const pTaskEventHandlerFn tasksArr[] = {
      macEventLoop,
      nwk_event_loop,
      Hal_ProcessEvent,
    #if defined( MT_TASK )
      MT_ProcessEvent,
    #endif
      APS_event_loop,
    #if defined ( ZIGBEE_FRAGMENTATION )
      APSF_ProcessEvent,
    #endif
      ZDApp_event_loop,
    #if defined ( ZIGBEE_FREQ_AGILITY ) || defined ( ZIGBEE_PANID_CONFLICT )
      ZDNwkMgr_event_loop,
    #endif
       GenericApp_ProcessEvent
    };
    const uint8 tasksCnt = sizeof( tasksArr ) / sizeof( tasksArr[0] );
    uint16 *tasksEvents;
    TaskArr这个数组里存放了所有任务的事件处理函数的地址,在这里事件处理函数就代表了任务本身,也就是说事件处理函数标识了与其对应的任务。tasksCnt这个变量保存了当前的任务个数。
    tasksEvents是一个指向数组的指针,此数组保存了当前任务的状态。osal每个任务可以有16个事件,其中SYS_EVENT_MSG定义为0x8000,为系统事件,用户可以定义剩余的15个事件。


       tasksEvents这个数组存放的是从序号为0到tasksCnt,每个任务在本次循环中是否要被运行,需要运行的任务其值非0(用橙色表示),否则为0。而tasksArr数组则存放了对应每个任务的入口地址,只有在tasksEvents中记录的需要运行的任务,在本次循环中才会被调用到。tasksEvents和tasksArr[]里的顺序是一一对应的, tasksArr[ ]中的第i个  事件处理函数对应于tasksEvents中的第i个任务的事件. 
     
    Zmain.c->osal_init_system()->osal_initTasks()中:
    void osalInitTasks( void )
    {
      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++ );
    #endif
      APS_Init( taskID++ );
    #if defined ( ZIGBEE_FRAGMENTATION )
      APSF_Init( taskID++ );
    #endif
      ZDApp_Init( taskID++ );
    #if defined ( ZIGBEE_FREQ_AGILITY ) || defined ( ZIGBEE_PANID_CONFLICT )
      ZDNwkMgr_Init( taskID++ );
    #endif
      SampleApp_Init( taskID );
    }
     tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt); 

    为当前osal中的各任务分配 缓冲区(实际上是一个数组,每个任务的大小是sizeof( uint16 )即4个字节,tasksCnt为任务数,sizeof( uint16 ) * tasksCnt为分配缓冲区的字节数),函数返回指向任务缓冲区的指针,此指针的基本类型是  uint16。
    osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt));
    把开辟的内存全部设置为0;sizeof( uint16 )是2个字节,即一个任务的长度(同样是uint16定义),乘以任务数量tasksCnt,即全部内存空间 tasksEvents 是缓冲区的首地址。

    Zmain.c->osal_start_system(),此函数为一个死循环,在这个循环中,完成了所有的事件分配。
    首先我们来看这样一段代码:
    {
            do
            {
                    if (tasksEvents[idx])
                    {
                            break;
                    }
            } while (++idx < tasksCnt);
    }
      当tasksEvents这个数组中的某个元素不为0,即代表此任务有事件需要相应,事件类型取决于这个元素的值。这个do-while循环会选出当前优先级最高的需要响应的任务,
    {
            events = (tasksArr[idx])( idx, events );
    }
      此语句调用tasksArr数组里面相应的事件处理函数来响应事件。如果我们新添加的任务有了需要响应的事件,那么此任务的事件处理程序将会被调用。
      就这样,OSAL就将需要响应的事件传递给了对应的任务处理函数进行处理。
    四、事件的捕获
        事件是如何被捕获的?直观一些来说就是,tasksEvents这个数组里的元素是什么时候被设定为非零数,来表示有事件需要处理的?
    下面以GenericApp这个例程中响应按键的过程来进行说明。
    首先,OSAL专门建立了一个任务来对硬件资源进行管理,这个任务的事件处理函数是Hal_ProcessEvent。在这个函数中通过调用osal_start_timerEx( Hal_TaskID, HAL_KEY_EVENT, 100);这个函数使得每隔100毫秒就会执行一次HalKeyPoll()函数。HalKeyPoll()获取当前按键的状态,并且通过调用OnBoard_KeyCallback函数向GenericApp任务发送一个按键消息,并且设置tasksEvents中GenericApp所对应的值为非零


     
    OSAL将硬件的管理也作为一个任务来处理。那么我们很自然的去寻找Hal_ProcessEvent这个事件处理函数,看看它究竟是如何管理硬件资源的。“HAL\Commen\ hal_drivers.c”这个文件中,我们找到了这个函数。我们直接分析与按键有关的一部分。
    {
            if (events & HAL_KEY_EVENT)
            {
                    #if (defined HAL_KEY) && (HAL_KEY == TRUE)
                    /* Check for keys */
                    HalKeyPoll();
                    /* if interrupt disabled, do next polling */
                    if (!Hal_KeyIntEnable)
                    {
                            osal_start_timerEx( Hal_TaskID, HAL_KEY_EVENT, 100);
                    }
                    #endif // HAL_KEY
                    return events ^ HAL_KEY_EVENT;
            }
    }
    在事件处理函数接收到HAL_KEY_EVENT这样一个事件后,首先执行HalKeyPoll()函数。由于这个例程的按键采用查询的方法获取,所以是禁止中断的,于是表达式(!Hal_KeyIntEnable)的值为真。那么osal_start_timerEx( Hal_TaskID, HAL_KEY_EVENT, 100)得以执行。osal_start_timerEx这是一个很常用的函数,它在这里的功能是经过100毫秒后,向Hal_TaskID这个ID所标示的任务(也就是其本身)发送一个HAL_KEY_EVENT事件。这样以来,每经过100毫秒,Hal_ProcessEvent这个事件处理函数都会至少执行一次来处理HAL_KEY_EVENT事件。也就是说每隔100毫秒都会执行HalKeyPoll()函数。
    那么我们来看看HalKeyPoll函数,在接近函数末尾的地方, keys变量(在函数起始位置定义的)获得了当前按键的状态。最后,有一个十分重要的函数调用。
    (pHalKeyProcessFunction) (keys, HAL_KEY_STATE_NORMAL);
    pHalKeyProcessFunction这个函数指针指向了void OnBoard_KeyCallback ( uint8 keys, uint8 state ),因为在HalKeyConfig函数中有一句话pHalKeyProcessFunction = cback;cback是HalKeyConfig所传进来的参数,所以,想要知道它所指向的函数,必须找到其调用的地方。经过简单的搜索我们不难找出答案。在main函数中有这样一个函数调用:InitBoard( OB_READY );此函数中做了如下调用:
      {
            HalKeyConfig( OnboardKeyIntEnable, OnBoard_KeyCallback);
      }

    在 void OnBoard_KeyCallback 函数中按键的状态信息被封装到了一个消息结构体中。最后有一个极其重要的函数被调用了。osal_msg_send( registeredKeysTaskID, (uint8 *)msgPtr );其中 registeredKeysTaskID 指的就是GenericApp。
    osal_msg_send函数中osal_set_event( destination_task, SYS_EVENT_MSG )设置了任务事件。
    通过调用osal_msg_send函数向GenericApp发送了一个消息,这个消息记录了这个事件的附加信息。在GenericApp_ProcessEvent中,通过
    {
            MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( GenericApp_TaskID );
    }
      获取了这样一个消息,然后再通过GenericApp_HandleKeys进一步处理。
    五、系统时钟
          首先介绍一下定时器,协议栈里面有两类定时器:一类是硬件定时器,对应几个Timer,硬件时钟定时器即硬件时钟。另一类是软件定时器, 通过osal_start_timerEx()添加到软定时器链表,再由系统时钟进行统一减计数。

    时间管理

    对事件进行时间管理,OSAL采用了链表的方式进行,有时发生一个要被处理的事件,就启动一个逻辑上的定时器,并将此定时器添加到链表当中。利用硬件定时器作为时间操作的基本单元。设置时间操作的最小精度为1ms,每1ms硬件定时器便产生一个时间中断,在时间中断处理程序中去更新定时器链表。每次更新,就将链表中的每一项时间计数减1,如果发现定时器链表中有某一表项时间计数已减到0,则将这个定时器从链表中删除,并设置相应的事件标志。这样任务调度程序便可以根据事件标志进行相应的事件处理。

    时间管理函数:
    extern byte osal_start_timerEx(byte task_id, uint16 event_id, uint16 timeout_value);
    这个函数为事件event_id设置超时等待时间timeout_value。一旦等待结束,便为task_id所对应的任务设置相应的事件发生标记,进行相应处理.
    这段话中的硬件定时器,即为系统时钟定时器,定时时间为“TICK_TIME—系统时间片”。

    系统时间是多少?
    在OnBoard.h中定义:
    /* OSAL timer defines */
    #define TICK_TIME 1000 // Timer per tick - in micro-sec
    1000us,即1ms,

     系统时钟什么时候初始化?

    在OnBoard.c中InitBoard():
    /***************************************
    void InitBoard( byte level )//在zmain.c中先OB_COLD启动,后OB_READY启动
    {
    if ( level == OB_COLD )//冷启动
    {
    …………
    /* Timer2 for Osal timer
    * This development board uses ATmega128 Timer/Counter3 to provide
    * system clock ticks for the OSAL scheduler. These functions perform
    * the hardware specific actions required by the OSAL_Timers module.
    */
    OnboardTimerIntEnable = FALSE;
     //对系统时钟定时器来说,默认为非中断方式 
    HalTimerConfig (OSAL_TIMER, // 8bit timer2
    HAL_TIMER_MODE_CTC, // Clear Timer on Compare
    HAL_TIMER_CHANNEL_SINGLE, // Channel 1 - default
    HAL_TIMER_CH_MODE_OUTPUT_COMPARE, // Output Compare mode
    OnboardTimerIntEnable, // FALSE
    Onboard_TimerCallBack); // Channel Mode

    }
    …………
    }
    /***************************************

      OnBoard.h中初始化
    /* OSAL Timer define */
    #define OSAL_TIMER HAL_TIMER_2
    而通过halTimerRemap()知道HAL_TIMER_2对应HW Timer 4 

    定时器非中断方式函数调用流程:
    osal_timer_activate( TRUE )开启系统时钟定时器——系统主循环函数osal_start_system()——调用Hal_ProcessPoll()轮询硬件——调用HalTimerTick()轮询定时器——定时器采用非中断方式则调用halProcessTimer()判断定时器是否溢出——溢出则调用halTimerSendCallBack()来发送消息给相应定时器的回调函数——调用各定时器的回调函数,如系统时钟定时器的Onboard_TimerCallBack()——调用osal_update_timers()来更新软件定时器链表中各定时器的计数值(每次减1ms)——如有软件定时器溢出调用osal_set_event()触发事件。
     

    总结起来就是每1ms系统时钟都会跑到软件定时器链表中去把各定时器的计数值减1. 

    看下 osalTimerUpdate()这个函数

    /*********************************************************************
    * @fn osalTimerUpdate
    *
    * @brief Update the timer structures for a timer tick.
    *
    * @param none
    *
    * @return none
    *********************************************************************/
    static void osalTimerUpdate( uint16 updateTime )
    {
    …………

    // Update the system time
    osal_systemClock += updateTime; //系统时间,1ms往上加

    // Look for open timer slot
    if ( timerHead != NULL )
    {
    // Add it to the end of the timer list
    srchTimer = timerHead;
    prevTimer = (void *)NULL;

    // Look for open timer slot
    while ( srchTimer )
    {
    // Decrease the correct amount of time
    if (srchTimer->timeout <= updateTime) //小于等于
    srchTimer->timeout = 0;
    else //大于
    srchTimer->timeout = srchTimer->timeout - updateTime; //减1ms

    // When timeout, execute the task
    if ( srchTimer->timeout == 0 )
    {
    osal_set_event( srchTimer->task_id, srchTimer->event_flag ); 
    //设置事件发生标志

    …………
    }
    …………
    }

    …………
    }

    /*********************************************************************

    osalTimerUpdate()来以ms为单位对软定时器链表中的“软定时器”减计数,溢出时,即调用osal_set_event触发事件。

    系统时钟定时器什么时候开启? 
    osalTimerInit()函数中初始化timerActive = false,因此会在osal_start_timerEx()中执行osal_timer_activate( TRUE )。 

    系统什么时候开始运行第一个osal_start_timerEx(),就什么时候开启系统时钟。即当系统的软定时器链表中添加第一个软件定时器时,就开启系统时钟。那什么时候开始运行第一个osal_start_timerEx() ?一般是在任务的ProcessEvent函数中,如SampleApp_ProcessEvent和Hal_ProcessEvent。 

    展开全文
  • zigbee

    千次阅读 2017-04-08 16:38:17
    ZigBee是基于IEEE802.15.4标准的低功耗局域网协议。根据国际标准规定,ZigBee技术是一种短距离、低功耗的无线通信技术。这一名称(又称紫蜂协议)来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和“嗡嗡”(zig)地抖动...
    ZigBee是基于IEEE802.15.4标准的低功耗局域网协议。根据国际标准规定,ZigBee技术是一种短距离、低功耗的无线通信技术。这一名称(又称紫蜂协议)来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和“嗡嗡”(zig)地抖动翅膀的“舞蹈”来与同伴传递花粉所在方位信息,也就是说蜜蜂依靠这样的方式构成了群体中的通信网络。其特点是近距离、低复杂度、自组织、低功耗、低数据速率。主要适合用于自动控制和远程控制领域,可以嵌入各种设备。简而言之,ZigBee就是一种便宜的,低功耗的近距离无线组网通讯技术。ZigBee是一种低速短距离传输的无线网络协议。ZigBee协议从下到上分别为物理层(PHY)、媒体访问控制层(MAC)、传输层(TL)、网络层(NWK)、应用层(APL)等。其中物理层媒体访问控制层遵循IEEE 802.15.4标准的规定。
    中文名
    紫蜂协议
    外文名
    ZigBee
    标    准
    IEEE802.15.4
    全球频段
    2.4GHz(全球使用)
    欧洲频段
    868MHz
    北美频段
    915MHz

    起源

    ZigBee译为"紫蜂",它与蓝牙相类似。是一种新兴的短距离无线通信技术,用于传感控制应用(Sensor and Control)。由IEEE 802.15工作组中提出,并由其TG4工作组制定规范。
    2001年8月,ZigBee Alliance成立。
    2004年,ZigBee V1.0诞生。它是Zigbee规范的第一个版本。由于推出仓促,存在一些错误。
    2006年,推出ZigBee 2006,比较完善。
    2007年底,ZigBee PRO推出。
    2009年3月,Zigbee RF4CE推出,具备更强的灵活性远程控制能力。
    2009年开始,Zigbee采用了IETF的IPv6 6Lowpan标准作为新一代智能电网Smart Energy(SEP 2.0)的标准,致力于形成全球统一的易于与互联网集成的网络,实现端到端的网络通信。随着美国及全球智能电网的建设,Zigbee将逐渐被IPv6/6Lowpan标准所取代。
    ZigBee的底层技术基于IEEE 802.15.4,即其物理层和媒体访问控制层直接使用了IEEE 802.15.4的定义。
    蓝牙技术的使用过程中,人们发现蓝牙技术尽管有许多优点,但仍存在许多缺陷。对工业,家庭自动化控制和工业遥测遥控领域而言,蓝牙技术太复杂,功耗大,距离近,组网规模太小等。而工业自动化,对无线数据通信的需求越来越强烈,而且,对于工业现场,这种无线传输必须是高可靠的,并能抵抗工业现场的各种电磁干扰。因此,经过人们长期努力,ZigBee协议在2003年正式问世。另外,Zigbee使用了在它之前所研究过的面向家庭网络通信协议Home RF Lite。
    长期以来,低价位、低速率、短距离、低功率的无线通讯市场一直存在着。蓝牙的出现,曾让工业控制、家用自动控制、玩具制造商等业者雀跃不已,
    但是蓝牙的售价一直居高不下,严重影响了这些厂商的使用意愿。如今,这些业者都参加了IEEE802.15.4小组,负责制定ZigBee的物理层和媒体介质访问层。IEEE802.15.4规范是一种经济、高效、低数据速率(<250kbps)、工作在2.4GHz和868/915MHz的无线技术,用于个人区域网和对等网络。它是ZigBee应用层和网络层协议的基础。ZigBee是一种新兴的近距离、低复杂度、低功耗、低数据速率、低成本的无线网络技术,它是一种介于无线标记技术和蓝牙之间的技术提案。主要用于近距离无线连接。它依据802.15.4标准,在数千个微小的传感器之间相互协调实现通信。这些传感器只需要很少的能量,以接力的方式通过无线电波将数据从一个网络节点传到另一个节点,所以它们的通信效率非常高。
    互联网标准化组织IETF也看到了无线传感器网络(或者物联网)的广泛应用前景,也加入到相应的标准化制定中。以前许多标准化组织和研究者认为IP技术过于复杂,不适合低功耗、资源受限的无线传感器网络,因此都是采用非IP技术。在实际应用中,如ZigBee需要接入互联网时需要复杂的应用层网关,也不能实现端到端的数据传输和控制。与此同时,与ZigBee类似的标准还有z-wave、ANT、Enocean等,相互之间不兼容,不利于产业化的发展。IETF和许多研究者发现了存在的这些问题,尤其是Cisco的工程师基于开源的uIP协议实现了轻量级的IPv6协议,证明了IPv6不仅可以运行在低功耗资源受限的设备上,而且,比ZigBee更加简单,彻底改变了大家的偏见,之后基于IPv6的无线传感器网络技术得到了迅速发展。 IETF已经完成了核心的标准规范,包括IPv6数据报文和帧头压缩规范 6Lowpan[1]  、 面向低功耗、低速率、链路动态变化的无线网络路由协议 RPL[2]  、以及面向无线传感器网络应用的应用层标准CoAP[3]  ,相关的标准规范已经发布[4]  。IETF组织成立了IPSO联盟,推动该标准的应用,并发布了一系列白皮书[5]  。 IPv6/6Lowpan已经成为许多其它标准的核心,包括智能电网ZigBee SEP2.0、工业控制标准ISA100.11a、有源RFID ISO1800-7.4(DASH) 等。IPv6/6Lowpan具有诸多优势: 可以运行在多种介质上,如低功耗无线、电力线载波、WiFi和以太网,有利于实现统一通信;IPv6可以实现端到端的通信,无需网关,降低成本;6Lowpan中采用RPL路由协议,路由器可以休眠,也可以采用电池供电,应用范围广,而ZigBee技术路由器不能休眠,应用领域受到限制。6Lowpan标准已经得到大量开源软件实现,最著名的是Contiki[6]  、TinyOS系统,已经实现完整的协议栈,全部开源,完全免费,已经在许多产品中得到应用。IPv6/6Lowpan协议将随着无线传感器网络以及物联网的广泛应用,很可能成为该领域的事实标准。

    特性

    ①低功耗。在低耗电待机模式下,2节5号干电池可支持1个节点工作6~24个月,甚至更长。这是ZigBee的突出优势。相比较,
    蓝牙能工作数周、WiFi可工作数小时。
    TI公司和德国的Micropelt公司共同推出新能源的ZigBee节点。该节点采用Micropelt公司的热电发电机给TI公司的ZigBee提供电源。
    ②低成本。通过大幅简化协议(不到蓝牙的1/10),降低了对通信控制器的要求,按预测分析,以8051的8位微控制器测算,全功能的主节点需要32KB代码,子功能节点少至4KB代码,而且ZigBee免协议专利费。每块芯片的价格大约为2美元。
    ③低速率。ZigBee工作在20~250kbps的速率,分别提供250 kbps(2.4GHz)、40kbps(915 MHz)和20kbps(868 MHz)的原始数据吞吐率,满足低速率传输数据的应用需求。
    ④近距离。传输范围一般介于10~100m之间,在增加发射功率后,亦可增加到1~3km。这指的是相邻节点间的距离。如果通过路由和节点间通信的接力,传输距离将可以更远。
    ⑤短时延。ZigBee的响应速度较快,一般从睡眠转入工作状态只需15ms,节点连接进入网络只需30ms,进一步节省了电能。相比较,蓝牙需要3~10s、WiFi 需要3 s。
    ⑥高容量。ZigBee可采用星状、片状和网状网络结构,由一个主节点管理若干子节点,最多一个主节点可管理254个子节点;同时主节点还可由上一层网络节点管理,最多可组成65000 个节点的大网。
    ⑦高安全。ZigBee提供了三级安全模式,包括无安全设定、使用访问控制清单(Access Control List, ACL) 防止非法获取数据以及采用高级加密标准(AES 128)的对称密码,以灵活确定其安全属性。
    ⑧免执照频段。使用工业科学医疗(ISM)频段,915MHz(美国), 868MHz(欧洲), 2. 4GHz(全球) , 。
    由于此三个频带物理层并不相同,其各自信道带宽也不同,分别为0.6MHz, 2MHz和5MHz。分别有1个, 10个和16个信道。
    这三个频带的扩频调制方式亦有区别。扩频都使用直接序列扩频(DSSS),但从比特到码片的变换差别较大。调制方式都用了调相技术,但868MHz和915MHz频段采用的是BPSK,而2.4GHz频段采用的是OQPSK。
    在发射功率为0dBm的情况下,蓝牙通常能有10米的作用范围。而ZigBee在室内通常能达到30-50米的作用距离,在室外空旷地带甚至可以达到400米(TI CC2530不加功率放大)。
    所以ZigBee可归为低速率的短距离无线通信技术。
    简单的说,ZigBee是一种高可靠的无线数传网络,类似于CDMAGSM网络。ZigBee数传模块类似于移动网络基站。通讯距离从标准的75m到几百米、几公里,并且支持无限扩展。
    ZigBee是一个由可多到65000个无线数传模块组成的一个无线数传网络平台,在整个网络范围内,每一个ZigBee网络数传模块之间可以相互通信,每个网络节点间的距离可以从标准的75m无限扩展。
    移动通信CDMA网或GSM网不同的是,ZigBee网络主要是为工业现场自动化控制数据传输而建立,因而,它必须具有简单,使用方便,工作可靠,价格低的特点。而移动通信网主要是为语音通信而建立,每个基站价值一般都在百万元人民币以上,而每个ZigBee“基站”却不到1000元人民币。每个ZigBee网络节点不仅本身可以作为监控对象,例如其所连接的传感器直接进行数据采集和监控,还可以自动中转别的网络节点传过来的数据资料。除此之外,每一个ZigBee网络节点(FFD)还可在自己信号覆盖的范围内,和多个不承担网络信息中转任务的孤立的子节点(RFD)无线连接。
    组网通信方式
    ZigBee技术所采用的自组织网是怎么回事?举一个简单的例子就可以说明这个问题,当一队伞兵空降后,每人持有一个ZigBee网络模块终端,降落到地面后,只要他们彼此间在网络模块的通信范围内,通过彼此自动寻找,很快就可以形成一个互联互通的ZigBee网络。而且,由于人员的移动,彼此间的联络还会发生变化。因而,模块还可以通过重新寻找通信对象,确定彼此间的联络,对原有网络进行刷新。这就是自组织网。
    ZigBee技术为什么要使用自组织网来通信?
    网状网通信实际上就是多通道通信,在实际工业现场,由于各种原因,往往并不能保证每一个无线通道都能够始终畅通,就像城市的街道一样,可能因为车祸,道路维修等,使得某条道路的交通出现暂时中断,此时由于我们有多个通道,车辆(相当于我们的控制数据)仍然可以通过其他道路到达目的地。而这一点对工业现场控制而言则非常重要。
    为什么自组织网要采用动态路由的方式?
    所谓动态路由是指网络中数据传输的路径并不是预先设定的,而是传输数据前,通过对网络当时可利用的所有路径进行搜索,分析它们的位置关系以及远近,然后选择其中的一条路径进行数据传输。在我们的网络管理软件中,路径的选择使用的是“梯度法”,即先选择路径最近的一条通道进行传输,如传不通,再使用另外一条稍远一点的通路进行传输,以此类推,直到数据送达目的地为止。在实际工业现场,预先确定的传输路径随时都可能发生变化,或者因各种原因路径被中断了,或者过于繁忙不能进行及时传送。动态路由结合网状拓扑结构,就可以很好解决这个问题,从而保证数据的可靠传输。
    ZigBee与GNU Radio
    GNU Radio是免费的软件开发工具套件。它提供信号运行和处理模块,用它可以在易制作的低成本的射频(RF)硬件和通用微处理器上实现软件定义无线电。这套套件广泛用于业余爱好者,学术机构和商业机构用来研究和构建无线通信系统。GNU Radio 的应用主要是用Python 编程语言来编写的。但是其核心信号处理模块是C++在带浮点运算的微处理器上构建的。因此,开发者能够简单快速的构建一个实时、高容量的无线通信系统。尽管其主要功用不是仿真器,GNU Radio 在没有射频RF 硬件部件的境况下支持对预先存储和(信号发生器)生成的数据进行信号处理的算法的研究。
    ZigBee网络主要特点是低功耗低成本、低速率、支持大量节点、支持多种网络拓扑、低复杂度、快速、可靠、安全。ZigBee网络中的设备可分为协调器(Coordinator)、汇聚节点(Router)、传感器节点(EndDevice)等三种角色。[7] 
    与此同时,ZigBee作为一种短距离无线通信技术,由于其网络可以便捷的为用户提供无线数据传输功能,因此在物联网领域具有非常强的可应用性。

    性能

    1.数据速率比较低,在2.4GHz的频段只有250Kb/S,而且这只是链路上的速率,除掉信道竞争应答和重传等消耗,真正能被应用所利用的速率可能不足100Kb/s,并且余下的速率可能要被邻近多个节点和同一个节点的多个应用所瓜分,因此不适合做视频之类事情。
    适合的应用领域——传感和控制
    2.在可靠性方面,ZigBee有很多方面进行保证。物理层采用了扩频技术,能够在一定程度上抵抗干扰,MAC应用层(APS部分)有应答重传功能。MAC层的CSMA机制使节点发送前先监听信道,可以起到避开干扰的作用。当ZigBee网络受到外界干扰,无法正常工作时,整个网络可以动态的切换到另一个工作信道上。
    3.时延由于ZigBee采用随机接入MAC层,且不支持时分复用的信道接入方式,因此不能很好的支持一些实时的业务。
    4.能耗特性 能耗特性是ZigBee的一个技术优势。通常ZigBee节点所承载的应用数据速率都比较低。在不需要通信时,节点可以进入很低功耗的休眠状态,此时能耗可能只有正常工作状态下的千分之一。由于一般情况下,休眠时间占总运行时间的大部分,有时正常工作的时间还不到百分之一,因此达到很高的节能效果。
    5.组网和路由性——网络层特性
    ZigBee大规模的组网能力——每个网络65000个节点,而每个蓝牙网络只有8个节点。
    因为ZigBee底层采用了直扩技术,如果采用非信标模式,网络可以扩展得很大,因为不需同步而且节点加入网络和重新加入网络的过程很快,一般可以做到1秒以内,甚至更快。蓝牙通常需要3秒。在路由方面,ZigBee支持可靠性很高的网状网的路由,所以可以布置范围很广的网络,并支持多播和广播特性,能够给丰富的应用带来有力的支持。

    学习方法

    ZigBee作为一种个人网络的短程无线通信协议,已经日益为大家所熟知,它最大的特点就是低功耗、可组网,特别是带有路由的可组网功能,理论上可以使ZigBee覆盖的通讯面积无限扩展。相对蓝牙,红外的点对点通信,和WLAN的星状通信,ZigBee的协议就要复杂得多了。那么我们究竟是该选择ZigBee芯片去自己开发协议呢,还是直接选择已经带有了ZigBee协议的模块直接应
    用呢?
    玩转芯片的代价:开发时间周期长;人力和技术储备雄厚。
    市场上的ZigBee射频收发“芯片”实际上只是一个符合物理层标准的芯片,它只负责调制解调无线通讯信号,所以必须结合单片机才能完成对数据的接收发送和协议的实现。而单芯片也只是把射频部分和单片机部分集成在了一起,不需要额外的一个单片机,它的好处是节约成本,简化设计电路,但这种单芯片也并没有包含ZigBee协议在里面。
    这两种情况都需要用户根据单片机的结构和寄存器的设置并参照物理层部分的IEEE802.15.4协议和网络层部分的ZigBee协议自己去开发所有的软件部分。这个工程量对于做实际应用的用户来讲是很大的,开发周期以及测试周期都是非常之长的,更由于是无线通讯产品,它的产品质量也不是很容易得到保障的。
    即便许多ZigBee公司都提供自家芯片的ZigBee协议栈,但这只是提供一种协议的功能,而并不代表它具有真正的可应用性和可操作性,因为它并没有提供一个对用户的数据接口的详细描述,用户怎么才能不顾及芯片内部的程序而很简单轻松的就把自己的数据通过芯片发送出去,甚至组成路由获取传送更远方产品的数据,这都不是只包括了ZigBee协议栈的芯片就能简单实现的,ZigBee协议栈只是说它有了
    协议的所有组成部分,而究竟怎么把每部分结合并有条不紊的运转起来,并怎么实现和用户自己数据的协议通讯?一个只包含了ZigBee协议栈的芯片是不可能实现得了的。
    直白点讲,这些需要用户根据完整的协议代码和自己上层的通讯协议,再去一点一点每个部分的去修改协议栈中的内容,才能完成简单的数据无线收发,而要完成一条路由,甚至整个网络的通信,那调试测试的时间则会需要更长的。那么对于做实际应用的用户来讲将会大大耽误开发周期,并且这种具有复杂协议的无线产品会具有更多的不定因素,更易受到外界环境条件的影响,在实际开发中遇到的问题将会五花八门,难于应付。
    玩转模块的代价:省去ZigBee开发周期,能在推广项目上抢到先机。
    优秀可靠的ZigBee应用“模块”具有在硬件上设计紧凑,体积小,贴片式焊盘设计,可以内置Chip或外置SMA天线,通讯距离从100米到2500米不等,还包含了ADC,DAC,比较器,多个IO,I2C等接口和用户的产品相对接。软件上包含了完整的ZigBee协议栈,并有自己的PC上的配置工具,采用串口和用户产品进行通讯,并可以对模块进行发射功率,信道等网络拓扑参数的配置,使用起来简单快捷。
    透传模块的好处在于用户不需要考虑模块中程序如何运行的,用户只需要将自己的数据通过串口发送到模块里,然后模块会自动把数据用无线发送出去,并按照预先配置好的网络结构,和网络中的目的地址节点进行收发通讯了,接收模块会进行数据校验,如数据无误即通过串口送出。不过大多数用户应用ZigBee技术,都会有自己的数据处理方式,以致每个节点设备都会拥有自己的CPU以便对数据进行处理,所以仍可以把模块当成一种已经集成射频、协议和程序的“芯片”。国内外各个ZigBee芯片厂商及模块厂商产品比对:
    各厂商及芯片型号
    Jennic
    (JN5148)
    TI (Chipcon)
    (CC2530)
    Freescal
    (MC13192)
    EMBER
    (EM260)
    ATMEL
    (LINK-23X)
    ATMEL
    (Link-212)
    工作频率(Hz)
    2.4~2.485G
    2.4~2.485G
    2.4~2.485G
    2.4~2.485G
    2.4~2.485G
    779~928M
    可用频段数(个)
    16
    16
    16
    16
    16
    4
    无线速率(Kbit/s)
    250
    250
    250
    250
    250~2000
    20~1000
    发射功率(dBm)
    +2.5
    +4.5
    +3.6
    +3
    +3
    +10
    接收灵敏度(dBm)
    -97
    -97
    -92
    -97
    -101
    -110
    最大发射电流(mA)
    15
    35
    35
    37.5
    21
    30
    最大接收电流(mA)
    18
    24
    42
    41.5
    20
    14
    休眠电流(uA)
    0.2
    1
    1
    1
    0.28
    0.5
    工作电压范围(V)
    2.0~3.6
    2.0~3.6
    2.0~3.4
    2.1~3.6
    1.8~3.6
    1.8~3.6
    硬件自动CSMA-CA
    硬件自动帧重发
    硬件自动帧确认
    硬件自动地址过渡
    硬件FCS计算功能
    硬件清除无线通道确认
    硬件RSSI计算功能
    硬件AES/DES
     
    硬件开放度
    不开放
    部分开放
    部分开放
    部分开放
    全开放
    全开放
    ZigBee厂家
    DIGI
    顺舟科技 厦门四信
    上海雍敏
    上海数传
    深圳鼎泰克
    北京云天创
    型号
    XBee模块
    SZ05
    SZ06 F8913
    UMEW20
    DT8836AA
    DRF1601
    ATZGB-780F1
    工作频率
    (GHz)
    2.4
    2.4
    2.4
    2.4
    2.4
    2.4
    2.4
    779~936M
    可用频段数(个)
    16
    16
    16 16
    16
    16
    16
    4
    无线速率
    (Kbps)
    250
    250
    250 250
    250
    1000
    250
    250
    发射功率
    (dBm)
    0
    25
    25 25
    37.5
    不详
    4
    10
    接收灵敏度(dBm)
    -92
    -108
    -108 -110
    -110
    不详
    -96
    -110
    发射电流
    (mA)
    45
    <70
    <70 40
    40
    35
    34
    29
    接收电流
    (mA)
    50
    <55
    <55 28
    42
    不详
    25
    19
    休眠电流
    (uA)
    <10
    5
    5
    <0.4
    <1
    5
    不详
    0.5
    工作电压
    (V)
    2.8~3.4
    5
    5-24
    2.0~3.6
    1.8~3.6
    1.8~3.6
    5~12
    1.8~3.6
    工作温度
    (℃)
    -40~80
    -40~85
    -40~85
    -45~80
    -20~120
    -40 ~80
    -40~80
    -40~80
    无PA室内通信距离
    (m)
    30
    200
    200 100
    100
    不详
    100
    100
    无PA室外通信距离
    (m)
    100
    2K
    2K 500
    350
    100
    400
    700
    (此对比表格都仅对于贴片式便于嵌入的模块并仅依据各厂商的产品手册提供的性能参数进行对比,但是如上海数传等厂商,本人在官网上并没法找到详细的产品手册,也有部分厂商是模棱两可的参数说明,如此表格有错误的地方,欢迎使用过的或者了解其模块的朋友可以对表格进行修改完善。)
    国内做ZigBee模块的厂商并不多,本人也只是挑选了部分个人熟知的厂商进行了一个小对比,部分厂商的产品本人也并未入手进行过测试,所以室内室外的通信距离本人并不是很清楚。有些厂商会加外部功放,有些并没有加,以至于通信距离上来说都是不同的,并且无线通信产品特别是ZigBee,环境对其的通信距离影响很大,各厂商的实测环境也各不相同(有些是置高,有些是功放较大),产品手册上的通信距离最好只是作为一个衡量标准,仅供参考之用。
    假如对这方面有兴趣的朋友,或者正想使用ZigBee进行现场应用的朋友,询问相关模块的时候最好将自己的需求进行一个较为清晰的定位,如距离、数据量、组网、应用场景等。因为ZigBee为近距离、低功耗、小数据量的技术,所以具体应用要求比较高,如在不考虑功耗的情况下,对于距离要求较高的应用,可以使用号称点对点能够传10Km~20Km远的XBEE模块;如温湿度等数据采集,需要功耗较低,数据量不大,距离近的可以使用一些公司的低功耗模块(距离远就牺牲了功耗),可以使用顺舟科技等公司的模块。值得一提的是,由于ZigBee采用随机接入MAC层,且不支持时分复用的信道接入方式,部分ZigBee模块一般会对数据进行校验,返回ACK等操作(一般射频芯片等硬件层会自带,部分公司模块会在程序上也进行相应操作),网络节点数越多,整个网络所有节点采集的数据到服务器的时间就越长,因此不能很好的支持一些实时性要求较高的业务。

    组织联盟

    ZigBee联盟是一个高速增长的非牟利业界组织,成员包括国际著名半导体生产商、技术提供者、代工生产商以及最终使用者。成员正制定一个基于IEEE802.15.4、可靠、高性价比、低功耗的网络应用规格。[8] 

    标准

    2012年4月,国际ZigBee联盟推出了ZigBeeLightLink,便意味着设定了共同标准,可有效地解决上述问题。通过全球主要照明设备制造商的共同开发,ZLL不仅定义了一种先进的灯控应用信息传递协议,而且还纳入一种简单的配置机制,使消费者可以开箱即用,系统配置就像按一下按钮一样简单。除了这些新特点外,ZigBeeLightLink具有所有ZigBee网络的固有技术优势,实现了基于IEEE802.15.4的低功率、低成本、健壮、安全的无线网络。
    与家居自动化(ZigBeeHomeAutomation)等其他ZigBee应用标准不同,ZigBeeLightLink是专门针对照明应用设计的。得益于这种优化设计,ZLL产品可轻松实现颜色设置、调光级数和亮度设置、存储情景模式和自动灯控,从而实现最大程度的便利及最高能效。设计师可以针对不同的应用场合自主决定赋予产品哪些功能。系统功能可以像开/关灯一样简单,也可以如功能齐全的家居照明方案一样复杂。无论做出什么选择,产品都具有互操作性。
    这项新标准迅速得到了飞利浦、GE等各大国际照明厂商的推崇与支持,
    的国内照明企业也都在积极的推进ZLL协议在智能照明领域的落地。上海顺舟科技率先推出了基于ZLL协议的ZigBee模块,为传统的照明灯具厂商提供一揽子的智能照明解决方案。
    通过全球主要照明设备制造商的共同开发,ZLL不仅定义了一种先进的灯控应用信息传递协议,而且还纳入一种简单的配置机制,使消费者可以开箱即用,系统配置就像按一下按钮一样简单。除了这些新特点外,ZigBeeLightLink具有所有ZigBee网络的固有技术优势,实现了基于IEEE802.15.4的低功率、低成本、健壮、安全的无线网络。[9-10] 
    ZigBeeLightLink的总体特点:
    ·家庭领域的低成本无线灯控解决方案
    ·安装简单直观、无需额外工具和专业知识
    ·系统易于扩展,产品具有互操作性
    ·可靠、稳健的网络技术,且与其它ZigBee标准与设备兼容
    ·主要照明设备制造商构建全球生态系统,为终端用户创造价值
    ·遍布全球的成熟产业链——低成本、高性能的SoC解决方案
    ·经认证的货架软件解决方案[7] 

    应用及前景

    前景

    随着国内经济的高速发展,城市的规模在不断扩大,尤其是各种交通工具的增长更迅速,从而使城市交通需求与供给的矛盾日益突出,而单靠扩大道路交通基础设施来缓解矛盾的做法已难以为继。在这种情况下,智能公交系统(AdvancedPublicTransportationSystems,APTS)也就应运而生,并且成为国内研究的热点。在智能公交系统所涉及的各种技术中,无线通信技术尤为引人注目。而ZigBee作为一种新兴的短距离、低速率的无线通信技术,更是得到了越来越广泛的关注和应用。市场上也出现了大量与ZigBee相关的各种产品,根据中国物联网校企联盟的统计分析表明:ZigBee虽然广受推崇,但是在数据中,推出ZigBee相关产品的中小型企业在2012年的发展并不可观。
      其中,比较有竞争力的ZigBee解决方案主要有下面几种:
    (1)Freescale:MC1319X平台;
    (2)Chipcon:SoC解决方案CC2530;
    (3)Ember:EM250ZigBee系统晶片及EM260网络处理器;
    (4)Jennic的JN5121芯片;
    经过市场调研,发现Freescale的MC1319X平台功耗低、价格低廉、硬件集成度高,方便二次开发,射频通信系统的稳定性高。所以,在本文的设计中选用了MaxStream公司与ZigBee兼容的以FreescaleMC1319x芯片组为核心的XBeeProRF模块。下面主要介绍XbeePro的特性、接口应用、操作模式以及在智能公交无线网络中的应用。
    在站牌处通常会有多辆公交车同时到达,一个站牌对应多辆公交车,适合使用星状网布线网络。但为了保证网络的可靠性,当公交车站牌外的通道阻塞时,可以通过其它公交车路由节点转发到站牌,本设计采用网状(Mesh)网模型。可将分布在公交线路上的电子站牌配置为协调器,而将到达的公交车配置为路由器。
    当站牌上ZigBee网络协调器选择一个信道和PANID并启动时,便建立了一个ZigBee个人局网(PAN)。一旦协调器已启动PAN,便可允许路由器和终端设备结点加入PAN。路由器加入PAN时,将收到一个16位的网络地址,并且能够发送和接收来自PAN内其他设备的数据。PAN协调器的网络地址总是0。由于站牌上ZigBee模块的网络物理地址是唯一的,可以通过物理地址向站牌发送信息。
    (5)在3.3V电源下,发送电流为215mA,接收电流为55mA:
    (6)在网络性能方面,具有DSS(直接序列扩频)功能,可以组成对等网、点对点及点对多点网络,具有12个软件可选的直接序列信道,每个信道有65000个可用网络地址。
    XBeePro模块体积小,功耗低,接口简单,容易使用,非常适用于低数据速率的短距离通信应用,尤其是无线传感网络的设计应用。XBeePro模块还提供有免费X-CTU测试软件以便能够轻松测试和配置网络。该模块还可以通过下载该公司最新的固件(Firmware),使用户在使用原有硬件模块的基础上,获得最新的功能,从而为设计提供了极大的灵活性。
    2XBeePro模块的操作模式
    XBeePro有空模式、接收模式、发送模式、睡眠模式和命令模式等5种操作模式,如图3所示。每一种操作模式都有透明方式和应用程序接口(API)方式两种操作方式。当工作在透明方式时,模块可起到替代串口线的作用,并以字节为单位来处理各种信息;当工作在API方式下,所有进出模块的数据均被包含在定义模块的操作和事件的帧结构中[11]  。

    应用实例

    ZigBee模块:
    F8913D ZigBee模块是一种物联网无线数据终端,利用ZigBee网络为用户提供无线数据传输功能。
    该产品采用高性能的工业级ZigBee方案,提供SMT与DIP接口,可直接连接TTL接口设备,实现数据透明传输功能;低功耗设计,最低功耗小于1uA;提供5路I/O,可实现数字量输入输出、脉冲输出;其中有3路I/O还可实现模拟量采集、脉冲计数等功能。
    工业级应用设计
    1.采用高性能工业级ZigBee芯片
    2.低功耗设计,支持多级休眠和唤醒模式,最大限度降低功耗
    3.电源输入(DC 2.0~3.6V)
    稳定可靠
    1.WDT看门狗设计,保证系统稳定
    2.提供UART串口。
    3.天线接口防雷保护(可选)
    标准易用
    1.采用2.0的SMA与DIP接口,特别适合于不同用户的应用需求。
    2.提供TTL接口可直接连相同电压的TTL串口设备
    3.智能型数据模块,上电即可进入数据传输状态
    4.使用方便,灵活,多种工作模式选择
    5.方便的系统配置和维护接口
    6.支持串口软件升级和远程维护
    产品性能
    通信接口:RS232/RS485/RJ45
    电 源:9V/12V-3A DC电源
    天线极化:垂直
    数据速率:最高10M bit/s
    外形尺寸:15.5cm*14cm*5.5cm
    产品重量:1kg
    外壳材料:金属材质
    产品颜色:银灰色
    安装方式:螺丝安装或者侧挂
    词条图册更多图册
    词条图片
    词条图片(12)

    自动化通讯协定

    程序自动化
     BSAP  CC-Link  CIP  CAN
     CANopen  ControlNet  DeviceNet  DF-1
     DirectNET  EtherCAT  Ethernet Global Data (EGD)  Ethernet Powerlink
     EtherNet/IP  FINS  FOUNDATION fieldbus  GE SRTP
     HART Protocol  Honeywell SDS  HostLink  INTERBUS
     MECHATROLINK  MelsecNet  Modbus  Optomux
     PieP  Profibus  PROFINET IO  SERCOS interface
     SERCOS III  Sinec H1  SynqNet  TTEthernet
     RAPIEnet      
     
    工业控制系统
     OPC DA  OPC HDA  OPC UA  MTConnect
     
    智能建筑
     1-Wire  BACnet  C-Bus  DALI
     DSI  KNX  LonTalk  Modbus
     oBIX  VSCP  X10  xAP
     ZigBee      
     
    输配电通讯协定
     IEC 60870-5  DNP3  IEC 60870-6  IEC 61850
     IEC 62351  Modbus  Profibus  
     
    智能电表
     ANSI C12.18  IEC 61107  DLMS/IEC 62056  M-Bus
     Modbus  ZigBee Smart Energy 2.0    
     
    车用通讯
     CAN  FMS  FlexRay  IEBus
     J1587  J1708  J1939  Keyword Protocol 2000
     LIN  MOST  NMEA 2000  VAN
     
    参考资料
    展开全文
  • ZigBEE

    2016-09-02 13:42:00
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • Zigbee

    2009-11-04 12:57:00
    Zigbee是IEEE 802.15.4协议的代名词。根据这个协议规定的技术是一种短距离、低功耗的无线通信技术。这一名称来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和“嗡嗡”(zig)地抖动翅膀的“舞蹈”来与同伴传递花粉所在...
  • 简单入门Zigbee

    2019-10-30 14:35:57
    简单入门Zigbee 之前一直忙于校招,没有来得及时间做,前段时间终于签约了,所以现在趁着时间空,赶紧把坑填上了,后面再献上一篇关于校招的心得。闲话不多说,开始进入正题。 先给大家基本介绍一下zigbee ZigBee译...
  • Zigbee Wireless Networking

    2017-06-29 23:14:11
    CHAPTER 4 ZIGBEE APPLICATIONS, CHAPTER 5 ZIGBEE, ZDO AND ZDP, CHAPTER 6 THE ZIGBEE CLUSTER LIBRARY, CHAPTER 7 THE ZIGBEE NETWORKING LAYER, CHAPTER 8 COMMISSIONING ZIGBEE NETWORKS, CHAPTER 9 ZIGBEE ...
  • Zigbee入门开发

    2010-07-17 00:40:29
    Zigbee入门开发 Zigbee是一种新型的短距离无线通信技术。其特点是低功耗,低成本,组网灵活。Zigbee协议由zigbee联盟指定,包括应用层,和网络层,其下层采用IEEE802.15.4协议。 无论是学习zigbee技术,还是利用...
  • zigbee资料zigbee资料zigbee资料

空空如也

1 2 3 4 5 ... 20
收藏数 10,316
精华内容 4,126
关键字:

zigbee