[技术干货] 无线传感网络概要和zigbee开发实战(三)短距离无线通信技术之一zigbee

  1. 按照地理位置对无线网络技术划分

    按照网络覆盖的地理范围分为无线广域网WWAN、无线城域网WMAN、 无线局域网WLAN和无线个域网WPAN

    image.png

  2. zigbee

    简介:

    ZigBee,是一种低速短距离传输的无线网上协议,底层是采用IEEE 802.15.4标准规范的媒体访问层与物理层。主要特色有低速、低耗电、低成本、支持大量网上节点、支持多种网上拓扑、低复杂度、快速、可靠、安全。ZigBee称紫蜂,来源于蜜蜂bee的八字舞,由于蜜蜂是靠飞翔和“嗡嗡”(zig)地抖动翅膀的“舞蹈”来与同伴传递花粉所在方位信息,蜜蜂依靠这样的方式构成了群体中的通信网络。


    image.png


    ZigBee无线通信技术是基于蜜蜂相互间联系的方式而研发生成的一项应用于互联网通信的网络技术。 相较于传统网络通信技术,ZigBee无线通信技术表现出更为高效、便捷的特征。作为一项近距离、低成本、低功耗的无线网络技术,ZigBee无线通信技术其关于组网、 安全及应用软件方面的技术是基于IEEE批准的802 15.4无线标准。该项技术尤为适用于数据流量偏小的业务,可尤为便捷地在一系列固定式、便携式移动终端中进行安装,与此同时,ZigBee无线通信技术还可实现GPS功能。
    ZigBee技术本质上是一种速率比较低的双向无线网络技术,其由IEEE.802.15.4无线标准开发而来,拥有低复杂度和短距离以及低成本和低功耗等优点。其使用了2.4GHz频段,这个标准定义了ZigBee技术在IEEE.802.15.4标准媒体上支持的应用服务。ZigBee联盟的主要发展方向是建立一个基础构架,这个构架基于互操作平台以及配置文件,并拥有低成本和可伸缩嵌入式的优点。搭建物联网开发平台,有利于研究成果的转化和产学研对,是实现物联网的简单途径。
  3. 发展趋势

    2001年8月ZigBee联盟成立,之后该联盟陆续推出了ZigBee V1.0、ZigBee 2006、ZigBee PRO、ZigBee RF4CE等不同版本。2009年开始,Zigbee采用了IETF的IPv6 6Lowpan标准作为新一代智能电网Smart Energy(SEP 2.0)的标准,致力于形成全球统一的易于与互联网集成的网络,实现端到端的网络通信。随着美国及全球智能电网的建设,Zigbee将逐渐被IPv6/6Lowpan标准所取代

  4. zigbee性能特点

(1)高可靠性。采取可靠传输,避免碰撞,确认机制。

      (2)网络容量大,zigbee采用星状、片状和网状网络结构,由一个主节点管理若干个子节点,最多一个主节点可以管理254个子节点,同时主节点还可由上一层 网络节点进行管理,最多可有65000个节点组成一个大网,不过这只是理论值,实际上远远达不到。

      (3)工作频段灵活。使用频段为2.4GHz、868MHz(欧洲)和915MHz(美国),均为免执照(免费)的频段。

      (4)高安全性,ZigBee提供了三级安全模式,包括无安全设定、使用访问控制清单(Access Control List, ACL) 防止非法获取数据以及采用高级加密标准(AES 128)的对称密码,以灵活确定其安全属性。其实这这种低性能,低容量的设备上,安全一直是个问题,如何在容量受限,资源受限的设备上保障数据安全,这是值得研究的问题。

      (5)近距离。传输范围一般介于10~100m之间,在增加发射功率后,亦可增加到1~3km。这指的是相邻节点间的距离。如果通过路由和节点间通信的接力,传输距离将可以更远。

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

      (7)低成本。通过大幅简化协议(不到蓝牙的1/10),降低了对通信控制器的要求,按预测分析,以8051的8位微控制器测算,全功能的主节点需要32KB代码,子功能节点少至4KB代码,而且ZigBee免协议专利费。每块芯片的价格大约为2美元。

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

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

5.zigbee体系结构

         image.png

         我们对比计算机网络体系结构TCP/IP结构和osi网络体系结构。可以发现,zigbee网络体系结构是参照这些模型而修改的,所以了解计算机网络体系结构是很重           要的。

         

       ZigBee的物理层

   (IEEE 802.15.4的物理层/PHY层)

      image.png

image.png





    ZigBee的数据链路层

     image.png






       ZigBee的MAC层

    image.png

        nMAC子层提供两种服务:MAC层数据服务MLDS (MAC Layer Data Service)和MAC层管理服务MLME (MAC Layer Management Entity)。前者保证MAC协议数据单元在物理层数据服务中的正确收发,后者维护一个存储MAC子层协议状态相关信息的数据库。IEEE 802.15.4 MAC子层的主要功能有封装成帧、信道访问(CSMS/CA协议、差错检测(crc)、节点关联(关联操作是指一个设备在加入一个特定网络时,向协调器注册以及身份认证的过程、时间同步(时槽保障机制等。




6.zigbee标准

  image.png

image.png

image.png

image.png


网络拓扑结构

image.png




Z-Stack协议栈


协议栈定义了通信硬件和软件在不同层次如何协调工作。在网络通信领域,在每个协议层的实体通过对信息打包与对等实体通信。在通信的发送方,用户需要传递的数据包按照从高层到低层的顺序依次通过各个协议层,每一层的实体按照最初预定消息格式在数据信息中加入自己的信息,比如每一层的头信息和校验等,最终抵达最低层的物理层,变成数据位流,在物理连接间传递。在通信的接收方数据包依次向上通过协议栈,每一层的实体能够根据预定的格式准确的提取需要在本层处理的数据信息,最终用户应用程序得到最终的数据信息并进行处理。

整个 Z-Stack 采用分层的软件结构,硬件抽象层(HAL)提供各种硬件模块的驱动,包括定时器 Timer,通用 I/O 口 GPIO,通用异步收发传输器 UART,模数转换 ADC 的应用程序接口 API,提供各种服务的扩展集。操作系统抽象层 OSAL 实现了一个易用的操作系统平台,通过时间片轮转函数实现任务调度,提供多任务处理机制。用户可以调用 OSAL 提供的相关 API 进行多任务编程,将自己的应用程序作为一个独立的任务来实现。

TI开发的开源Zigbee协议栈,基于轮转查询式的操作系统

整个 Z-stack 的主要工作流程,大致分为系统启动,驱动初始化,OSAL 初始化和启动,进入任务轮循几个阶段。

image.png

image.png


文件目录

说明

App

应用层目录。创建新项目时添加的文件

HAL

硬件层目录。Common目录文件是基本上与硬件无关的公用文件;Target目录是

跟硬件平台相关的文件

MAC

MAC层目录。High LevelLow Level目录分别表示MAC层的高层和底层

MT

监制调试层目录。该目录文件主要用于调试目的

NWK

网络层目录。含网络层配置参数文件、网络层库的函数接口文件及APS层库的函

数接口

OSAL

协议栈的操作系统抽象层目录

Profile

AF层目录,Application Farmework 应用框架

Security

安全层目录,包含安全层处理函数接口文件

Services

ZigBee802.15.4设备地址处理函数目录

Tools

工作配置目录,包括空间划分及Z-Stack相关配置信息

ZDO

ZigBee设备对象,一种公共的功能集,文件用户用自定义的对象调用APS子层的

服务和NWK层的服务

ZMAC

Z-Stack MAC导出层接口文件和需要调用的网络层函数

Zmain

整个项目的入口,包含函数main()




系统初始化

系统上电后,通过执行 ZMain 文件夹中 ZMain.c 的 int main()函数实现硬件的初始化,其中包括关总

中断 osal_int_disable(INTS_ALL)、初始化板上硬件设置 HAL_BOARD_INIT()、初始化 I/O 口

InitBoard(OB_COLD)、初始化 HAL 层驱动 HalDriverInit()、初始化非易失性存储器 sal_nv_init( NULL )、

初始化 MAC 层 ZMacInit()、分配 64 位地址 zmain_ext_addr()、初始化操作系统 osal_init_system()等。

硬件初始化需要根据 HAL 文件夹中的 hal_board_cfg.h 文件配置寄存器 8051 的寄存器。

当顺利完成上述初始化时,执行 osal_start_system()函数开始运行 OSAL 系统。该任务调度函数按照

优先级检测各个任务是否就绪。如果存在就绪的任务则调用 tasksArr[]中相对应的任务处理函数去处理该

事件,直到执行完所有就绪的任务。如果任务列表中没有就绪的任务,则可以使处理器进入睡眠状态实现

低功耗。程序流程如图所示。osal_start_system()一旦执行,则不再返回 Main()函数。

OSAL  任务初始化

OSAL 是协议栈的核心,Z-Stack 的任何一个子系统都作为 OSAL 的一个任务,因此在开发应用层的时

候,必须通过创建 OSAL 任务来运行应用程序。通过 osalInitTasks()函数创建 OSAL 任务,其中 TaskID 为

每个任务的唯一标识号。任何 OSAL 任务必须分为两步:一是进行任务初始化;二是处理任务事件。任务

初始化主要步骤如下:

(1)初始化应用服务变量。

const pTaskEventHandlerFn tasksArr[]数组定义系统提供的应用服务和用户服务变量,如 MAC 层服

务 macEventLoop、用户服务 SampleApp_ProcessEvent 等。

(2)分配任务 ID 和分配堆栈内存

void osalInitTasks(void)主要功能是通过调用 osal_mem_alloc()函数给各个任务分配内存空间,和

给各个已定义任务指定唯一的标识号。

(3)在 AF 层注册应用对象

通过填入 endPointDesc_t 数据格式的 EndPoint 变量,调用 afRegister()在 AF 层注册 EndPoint 应用

对象。

通过在 AF 层注册应用对象的信息,告知系统 afAddrType_t 地址类型数据包的路由端点,例如用于发

送周期信息的 SampleApp_Periodic_DstAddr 和发送 LED 闪烁指令的 SampleApp_Flash_DstAddr。

(4)注册相应的 OSAL 或 HAL 系统服务

在协议栈中,Z-Stack 提供键盘响应和串口的活动响应两种系统服务,但是任何 Z-Stask 任务均不自行

注册系统服务,两者均需要由用户应用程序注册。

(5)处理任务事件

处理任务事件通过创建“ApplicationName”_ProcessEvent()函数处理。一个 OSAL 任务除了强制事

件(Mandatory Events)之外还可以定义 15 个事件。

SYS_EVENT_MSG(0x8000)是强制事件。该事件主要用来发送全局的系统信息,包括以下信息:

AF_DATA_CONFIRM_CMD:该信息用来指示通过唤醒 AF DataRequest( )函数发送的数据请求信息的情况。

ZSuccess 确认数据请求成功的发送。如果数据请求是通过 AF_ACK_REQUEST 置位实现的,那么 ZSuccess 可

以确认数据正确的到达目的地。否则,ZSuccess 仅仅能确认数据成功的传输到了下一个路由。

AF_INCOMING_MSG_CMD:用来指示接收到的 AF 信息。

KEY_ CHANGE:用来确认按键动作。

ZDO_ NEW_ DSTADDR:用来指示自动匹配请求。

ZDO_STATE_CHANGE:用来指示网络状态的变化。



emmm,其实zigbee知识还挺多的,后期将会深入,下一期叙述6LoWPAN网络技术,谢谢。