【ZigBee】
ZigBee模组晶片
ZigBee，也称紫蜂，是一种低速短距离传输的无线网路协定，底层是采用IEEE 802.15.4标准规范的媒体存取层与实体层。主要特色有低速、低耗电、低成本、支援大量网路节点、支援多种网路拓扑、低复杂度、可靠、安全。
== 发展历程 ==
主要由Honeywell公司组成的ZigBee Alliance制定，从1998年开始发展，于2001年向电机电子工程师学会（IEEE）提案纳入IEEE 802.15.4标准规范之中，自此将ZigBee技术渐渐成为各业界共同通用的低速短距无线通讯技术之一。
== IEEE802.15.4/ZigBee协议概述 ==
IEEE802.15.4协议是IEEE802.15.4工作组为低速率无线个人区域网（WPAN:Wireless Personal Area Network）制定的标准，该工作组成立于2002年12月，致力于定义一种廉价的，固定、便携或移动设备使用的，低复杂度、低成本、低功耗、低速率的无线连接技术，并于2003年12月通过了第一个802.15.4标准。随着无线传感器网络技术的发展，无线传感器网络的标准也得到了快速的发展。802.15.4标准定义了在个人区域网中通过射频方式在设备间进行互连的方式与协议，该标准使用避免冲突的载波监听多址接入以方式作为媒体访问机制，同时支持星型与对等型拓扑结构。
在802.15.4标准中指定了两个物理频段和直接序列扩频（DSSS）物理层频段：868/915MHz和2.4GHz。2.4GHz的物理层支持空气中250kb/s的速率，而868/915MHz的物理层支持空气中20kb/s和40kb/s的传输速率。由于数据包开销和处理延迟，实际的数据吞吐量会小于规定的比特率。作为支持低速率、低功耗、短距离无线通信的协议标准，802.15.4在无线电频率和数据率、数据传输模型、设备类型、网络工作方式、安全等方面都做出了说明。并且将协议模型划分为物理层和媒体接入控制层两个子层进行实现。
ZigBee协议是由ZigBee联盟制定的无线通信标准，该联盟成立于2001年8月。2002年下半年，英国Invensys公司、日本三菱电气公司、美国摩托罗拉公司以及荷兰飞利浦半导体公司共同宣布加入ZigBee联盟，研发名为“ZigBee”的下一代无线通信标准，这一事件成为该技术发展过程中的里程碑。ZigBee联盟现有的理事公司包括BM Group，Ember公司，飞思卡尔半导体，Honeywell，三菱电机，摩托罗拉，飞利浦，三星电子，西门子，及德州仪器。ZigBee联盟的目的是为了在全球统一标准上实现简单可靠、价格低廉、功耗低、无线连接的监测和控制产品进行合作，并于2004年12月发布了第一个正式标准。
== 缩写与用语解释 ==
* AF - Application Framework（应用层框架）。
* APL - Application Layer（应用层）。
* APS - Application Support sublayer（应用支撑层）。
* MAC - Media Access Control layer（媒体访问控制层）。
* NIB - Network Information Base（网路资讯库）
* NWK - Network layer（网络层）。
* PHY - Physical layer（实体层）。
* WPAN - Wireless Personal Area Network。为IEEE 802.15族系所规范的一系列无线个人区网标准。
* ZC - ZigBee Coordinator（ZigBee协调员）。
* ZDO - ZigBee Device Object（ZigBee设备对象）。
* ZED - ZigBee End Device（ZigBee终端设备）。
* ZR - ZigBee Router（ZigBee路由）。
* FFD - Full Function Device（全功能器件）。
* RFD - Reduce Function Device（精简功能器件）。
== 协定层与标准说明 ==
ZigBee协定层从下到上分别为实体层（PHY）、媒体存取层（MAC）、网路层（NWK）、应用层（APL）等。网路装置的角色可分为ZigBee Coordinator、ZigBee Router、ZigBee End Device等三种。支援网路拓扑有星型、树型、网型等三种。
=== 网路层（NWK） ===
网路层负责以下工作：
* 加入与离开某个网路
* 将封包做安全性处理
* 传送封包到目标节点
* 找寻并维护节点间的绕径路线
* 搜寻邻节点
* 储存相关邻节点资讯
ZigBee Coordinator额外工作：
* 发起一个网路
* 设定各项网路参数
* 分派网路位址并规范网路位址分发原则
==== NWK Primitives（网络层原语） ====
* NLDE-DATA
* NLME-NETWORK-DISCOVERY
* NLME-NETWORK-FORMATION
* NLME-PERMIT-JOINING
* NLME-START-ROUTER
* NLME-JOIN
* NLME-DIRECT-JOIN
* NLME-LEAVE
* NLME-RESET
* NLME-SYNC
* NLME-GET
* NLME-SET
ZigBee V1.1新增：
* NLME-ROUTE-ERROR
* NLME-ROUTE-DISCOVERY
* NLME-TEST
=== 应用层（APL） ===
* ZigBee应用层包含应用程式支援子层（APS）、应用程式框架（AF）、ZigBee装置管控物件（ZDO）与各厂商定义的应用程式物件。
* APS次层提供网路层与应用层之间的介面，维持物件之间的连结表（binding table），并在连结的装置之间传递讯息，它也维持了一个APS资讯库（APS Information Base, AIB）。
* ZDO的功能包括起始应用程式支援子层、网路层以及安全服务等。
==== 应用程式支援子层（APS） ====
APS子层是负责上层应用程式物件与下层网路层的协调。其工作有：
* 维护Binding表，这是用来配对两网路节点间所需服务的对应表。
* 转发已配对装置间的讯息。
* 处理64位元IEEE位址与16位元NWK位址间的对应。
ZigBee V1.1新增：
* 群播位址定义，移除与过滤群播讯息。
===== APS Primitives =====
* APSDE-Data
* APSME-BIND
* APSME-GET
* APSME-SET
* APSME-UNBIND
* APEME-ESTABLISH-KEY
* APSME-TRANSPORT-KEY
* APSME-UPDATE-DEVICE
* APSME-REMOVE-DEVICE
* APSME-REQUEST-KEY
* APSME-SWITCH-KEY
ZigBee V1.1新增
* APSME-ADD-GROUP
* APSME-REMOVE-GROUP
* APSME-REMOVE-ALL-GROUPS
==== ZigBee装置管制物件（ZigBee Device Object, ZDO） ====
ZDO可视为应用程式物件之一，所不同的是ZDO专门负责整体系统的管理事务，Endpoint 0只能且必定由ZDO使用，每个节点都一定有此物件。负责工作有：
* 定义或调整本身装置在网路上的角色（ZC、ZR或ZED）。
* 建构上层应用所需的资讯、发出或回应连结的要求。
* 搜寻并探知其他网路节点可用的应用程式服务。
* 起始与回应配对要求。
* 建立两网路节点间的安全性关系。
== 版本 ==
=== ZigBee V1.0 ===
这是第一个ZigBee标准公开版，于2005年6月开放下载，文件内记载公布时间为June 27, 2005，内部文件编号为053474r06。
=== ZigBee V1.1 ===
第二个ZigBee标准公开版，于2007年1月开放下载，文件内记载公布时间为December 1, 2006，内部文件编号为053474r13。又称为ZigBee 2006。
=== ZigBee V1.2 ===
第三个ZigBee标准公开版，于2008年1月开放下载，文件内记载公布时间为January 17, 2008，内部文件编号为053474r17。又称为ZigBee Pro、ZigBee 2007。
== 整理 ==
=== 资讯库（Information Base） ===
ZigBee某些层有资讯库储存该层所需资讯，共有以下几种：
* MAC资讯库（MIB）
* NWK资讯库（NIB）
* APS资讯库（AIB）
=== Profile ===
ZigBee所定义的Profile有两种：
* Application Pro：针对各种不同应用情境所定义出的概略行为蓝图，如Home Control Lighting (HCL)和Home Automation (HA)。一般所称的Profile通常是指此种Profile。
* Stack Pro：主要规定通用性的网路参数，如Network Specific、Home Controls (HC)、Building Automation (BA)、Plant Control等Stack Profile。原则上Application Profile中会说明可采用何种Stack Profile来作为基础网路建构方案，如HCL中即采用HC作为网路建构方案。
=== 各层定址 ===
* MAC：可采用64位元IEEE位址或16位元NWK位址。
* NWK：16位元NWK位址。
* APS：8位元Endpoint号码。
== 比较 ==