基于《ZigBee技术与实训教程(第2版)》的知识体系,无代码、无寄存器,只讲原理

前言

ZigBee是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通信技术,特别适用于构建无线传感器网络(WSN)。它的技术基础是IEEE802.15.4标准,再加上ZigBee联盟定义的网络层和应用层,形成了完整的协议栈。本文将从无线传感器网络的概念出发,逐步深入到IEEE802.15.4、ZigBee协议栈、CC2530芯片的功能概览、Z-Stack软件架构以及组网与数据传输的原理,帮助读者建立完整的理论知识框架。


第一部分:无线传感器网络(WSN)基础

1.1 什么是无线传感器网络

无线传感器网络是由大量微型传感器节点通过无线通信自组织形成的多跳网络。每个节点通常包含传感器模块、处理器模块、无线通信模块和电源模块。这些节点被随机或刻意部署在监测区域内,协作采集温度、湿度、光照、压力、声音等物理量,并将数据通过多跳中继方式传送到汇聚节点(Sink),最终送到用户终端。

1.2 WSN的主要特点

  1. 节点数量多,分布密集:成百上千的节点覆盖一个区域,利用冗余提高可靠性。
  2. 自组织与动态性:节点可以随时加入或离开网络,网络拓扑自动调整。
  3. 以数据为中心:用户关心的是“某个区域内的温度”,而不是具体哪个节点发送的。
  4. 资源极度受限:节点通常使用8位或16位微控制器,只有几KB到几十KB的RAM,电池供电且难以更换。
  5. 多跳路由:节点通信距离有限(几十到几百米),远距离传输需要中间节点转发。
  6. 应用相关:不同应用对带宽、延迟、功耗的要求差异很大,硬件和协议往往需要定制。

1.3 WSN的体系结构

  • 节点内部结构:传感器(采集)→ 模数转换(A/D)→ 微控制器(处理)→ 射频收发器(发送)←→ 天线。电池为所有模块供电。
  • 网络拓扑:传感器节点 → 汇聚节点(Sink,通常有更强的计算和通信能力)→ 任务管理节点(PC或服务器)→ 互联网(可选)。
  • 协议栈分层:物理层(PHY)→ 数据链路层(MAC)→ 网络层(NWK)→ 传输层(TCP/UDP简化)→ 应用层。此外还有能量管理、移动管理、任务管理三个平面。

1.4 WSN的关键技术

  • 时间同步:节点间时钟需要校准,以便协同采样或使用TDMA类MAC协议。常用协议如RBS(参考广播同步)。
  • 定位技术:确定节点的位置。分为基于距离(TOA、TDOA、RSSI)和距离无关(质心、DV-Hop)。GPS成本高且室内失效,多用混合方法。
  • 数据融合:在中间节点对多源数据进行合并、去冗余,减少传输量,节省能量。
  • 网络安全:AES-128加密、密钥管理、认证。由于无线信道开放,防止窃听和伪造至关重要。
  • 低功耗操作系统:TinyOS、μCOS、Contiki等,支持事件驱动和深度睡眠。
  • 能量工程:太阳能、振动、温差取电,以及高能量密度电池。

第二部分:IEEE802.15.4标准

2.1 标准概述

IEEE802.15.4是ZigBee的底层标准,定义了物理层(PHY)和介质访问控制层(MAC)。它专门为低速、低功耗、低成本的无线个人区域网(LR-WPAN)设计。

工作频段与数据速率

  • 868MHz频段(欧洲):1个信道,20kb/s
  • 915MHz频段(北美):10个信道,40kb/s
  • 2.4GHz频段(全球):16个信道,250kb/s

所有频段都使用直接序列扩频(DSSS)技术。2.4GHz频段使用O-QPSK调制,具备较高的抗干扰能力。

2.2 设备类型与拓扑

  • 全功能设备(FFD):可以充当网络协调器或路由器,能与任何其他设备通信。
  • 精简功能设备(RFD):只能与一个FFD通信,通常作为终端节点,可以进入休眠模式。

网络拓扑支持两种基本形式:

  • 星状网络:一个协调器与多个RFD/FFD直接通信,所有流量经过协调器。
  • 点对点网络:任意两个FFD可以直接通信,可以形成树状或网状拓扑。

2.3 MAC层超帧结构(信标使能模式)

为了支持低功耗设备和有保障的通信,802.15.4定义了超帧结构。超帧由协调器周期性广播的信标帧开始,分为活跃期和非活跃期(设备可休眠)。

活跃期划分为16个等长时槽,包含:

  • 信标时槽:发送信标帧,包含超帧描述符、GTS分配信息、待发数据指示等。
  • 竞争访问时段(CAP):设备使用时隙CSMA-CA机制竞争发送数据或命令。
  • 非竞争访问时段(CFP):最多7个保证时槽(GTS),每个GTS由协调器动态分配给特定设备,用于低延迟、无竞争的数据传输。

非信标使能模式:协调器不发送周期性信标,所有设备始终使用非时隙CSMA-CA访问信道。

2.4 MAC帧类型与功能

  • 信标帧:同步、描述超帧结构、指示待发数据、分配GTS。
  • 数据帧:承载上层数据。
  • 确认帧:立即回应收到的帧(如果需要确认),不使用CSMA-CA。
  • 命令帧:用于关联/解除关联、GTS请求、数据请求、孤点通知等管理操作。

2.5 数据传输方式

  • 设备 → 协调器(直接传输):设备在CAP中发送,协调器回复确认(可选)。
  • 协调器 → 设备(间接传输):协调器在信标帧中标识有待发数据,设备主动发送数据请求命令,协调器随后发送数据。
  • 对等传输:两个FFD之间直接发送,使用CSMA-CA。

第三部分:ZigBee协议栈

3.1 协议栈架构

ZigBee协议栈在IEEE802.15.4的PHY和MAC之上增加了:

  • 网络层(NWK)
  • 应用层,包含:
    • 应用支持子层(APS)
    • 应用框架(AF)
    • ZigBee设备对象(ZDO)
  • 安全服务提供层

3.2 设备类型与角色

在一个ZigBee网络中,节点可以扮演以下逻辑角色:

  • 协调器(Coordinator):每个网络只有一个,负责启动网络、选择信道和PAN ID、分配网络地址。网络启动后,协调器也可以像路由器一样工作,但网络运行不再依赖它。
  • 路由器(Router):必须由主电源供电,可以转发数据包、允许其他节点加入网络。在树状和网状网络中必不可少。
  • 终端设备(End Device):只能与其父节点(协调器或路由器)通信,可以进入休眠模式以节省电能。不参与路由。

3.3 网络层(NWK)

主要功能

  • 网络形成与加入/离开
  • 网络地址分配(16位短地址,协调器地址为0x0000)
  • 邻居发现与路由维护
  • 数据包转发

路由算法

  • 树路由(Cluster-Tree):使用树状拓扑,每个节点根据深度和地址计算下一跳。不需要路由表,节省内存,但路径不一定最优。
  • 网状路由:基于AODV(按需距离矢量路由)。当节点需要发送数据到未知目的节点时,广播路由请求(RREQ),目的节点回复路由应答(RREP),沿途节点建立反向/正向路由。路由表需要维护,但能自适应拓扑变化。

NWK帧结构:包含帧控制、源/目的地址(16位)、半径(最大跳数)、序列号、负载(可选安全头部)。

3.4 应用层

APS子层

  • 维护绑定表(binding table):将某个设备上的特定簇(cluster)输出与一个或多个目标设备关联。当应用发送数据时,如果未指定目标地址,APS会从绑定表中查找。
  • 设备发现:查找网络中提供特定服务的设备。
  • 服务发现:查询设备上支持的簇。

AF(应用框架)

  • 定义了端点(endpoint)的概念,每个端点类似于一个应用对象。端点0固定给ZDO,用户应用可使用端点1~240。
  • 提供两种服务类型:
    • KVP(键值对):用于读取/设置设备属性,适合简单控制。
    • MSG(报文):传输任意长度的数据,适合传感器数据。

ZDO(ZigBee设备对象)

  • 运行在端点0,负责网络管理:启动网络、允许设备加入、设备发现、绑定管理等。
  • 处理来自网络层和应用层的基础控制命令。

3.5 安全服务

ZigBee使用AES-128对称加密算法,可以在MAC层、NWK层和APS层独立或组合开启安全功能。安全模式包括:

  • 无安全
  • 访问控制列表(ACL,仅允许特定设备通信)
  • 数据加密和完整性校验

信任中心(Trust Center)通常由协调器担任,负责密钥生成、分发和管理。

3.6 ZigBee PRO特性

ZigBee 2007规范定义了ZigBee和ZigBee PRO两个协议栈。PRO版本增强了:

  • 大规模网络支持(更多节点)
  • 频率敏捷性(自动避开干扰信道)
  • 高安全性(链路密钥建立)
  • 改进的路由与组寻址

第四部分:CC2530芯片(功能概览)

虽然本文不涉及寄存器编程,但了解CC2530的能力有助于理解ZigBee节点的硬件基础。

CC2530是TI公司的一款2.4GHz IEEE802.15.4/ZigBee片上系统(SoC),主要特性包括:

  • 增强型8051内核:单周期指令,最高32MHz。
  • 内存:256KB闪存,8KB SRAM。
  • RF收发器:2.4GHz,DSSS/O-QPSK,最高250kb/s,输出功率可编程(+4.5dBm典型),接收灵敏度-97dBm。
  • 低功耗:主动模式RX约24mA,TX约29mA;PM2睡眠模式(32kHz运行)约1μA;PM3深度睡眠仅0.4μA,可由外部中断唤醒。
  • 外设:21个通用I/O,2个USART(可配置UART或SPI),8通道12位ADC,5通道DMA,AES硬件加密,随机数发生器,看门狗,睡眠定时器(32kHz),4个定时器(1个16位、1个MAC专用、2个8位)。
  • 电源管理:多种供电模式,支持电池监控和片内温度传感器。

CC2530可直接运行Z-Stack协议栈,成为ZigBee节点。


第五部分:Z-Stack协议栈软件架构

5.1 Z-Stack概述

Z-Stack是TI推出的商业级ZigBee协议栈实现,符合ZigBee 2007规范。它以库文件形式提供核心功能(MAC、NWK、安全等),用户通过API开发应用。协议栈采用操作系统抽象层(OSAL) 实现任务调度,这是一个非抢占式的轮转查询式“操作系统”。

5.2 OSAL任务调度机制

OSAL的核心思想:将协议栈每一层(MAC、NWK、APS、ZDO、HAL、用户应用)视为一个任务,每个任务有一个16位的事件标志变量(tasksEvents)。系统主循环依次检查每个任务的事件标志,如果有非零事件,则调用该任务的事件处理函数。

  • 任务初始化:在osalInitTasks()函数中,为每个任务分配唯一的taskID,并调用其初始化函数。任务的数量由编译选项决定。
  • 事件设置:通过osal_set_event(taskID, event)立即触发事件;或通过osal_start_timerEx(taskID, event, timeout_ms)设置定时事件,超时后自动设置事件标志。
  • 消息传递:任务间可以通过osal_msg_send()发送消息,接收方将收到SYS_EVENT_MSG事件。
  • 主循环osal_start_system()无限调用osal_run_system(),该函数首先更新软件定时器,然后轮询硬件(如串口),再扫描tasksEvents找到优先级最高的非零任务,调用其事件处理函数。如果没有活动任务,则根据POWER_SAVING宏进入低功耗模式。

这种调度方式简单、轻量,适合资源受限的嵌入式环境,且由于无抢占,不需要复杂的同步机制。

5.3 用户应用开发

用户应用通常放在一个单独的任务中(如SampleApp),需要实现两个函数:

  • xxx_Init(uint8 task_id):初始化端点、注册描述符、设置网络参数、启动定时器等。
  • xxx_ProcessEvent(uint8 task_id, uint16 events):处理各种事件,如按键、接收数据、定时器触发等。

应用通过调用AF_DataRequest()发送数据,参数包括目标地址(单播、广播、组播或间接寻址)、源端点、簇ID、数据负载等。收到数据时,协议栈通过消息将afIncomingMSGPacket_t结构体发送给应用任务,应用根据簇ID进行解析和处理。

5.4 网络参数配置

ZigBee网络的主要配置项在f8wConfig.cfg文件中定义:

  • 信道DEFAULT_CHANLIST指定一个或多个信道,协调器从中选择一个空闲信道。
  • PAN IDZDAPP_CONFIG_PAN_ID设定网络标识符。设为0xFFFF时协调器随机生成,路由器和终端设备可以加入任何网络。
  • 协议栈规范ZIGBEEPRO决定使用ZigBee PRO还是标准ZigBee。
  • 设备类型:通过编译选项(CoordinatorEB、RouterEB、EndDeviceEB)选择。

第六部分:ZigBee组网与数据传输原理

6.1 网络启动(协调器)

  1. 协调器上电后,扫描所有信道,选择一个能量最低且无ZigBee网络存在的信道。
  2. 随机选择一个16位PAN ID(若未固定),或者使用预设值。
  3. 初始化自己的短地址为0x0000,建立邻居表、路由表等。
  4. 开始周期性广播信标帧,等待其他设备加入。

6.2 设备加入网络

  • 主动扫描:新设备在每个信道上发送信标请求,等待范围内协调器/路由器回复信标。
  • 选择父节点:根据信标中的信息(是否允许加入、链路质量、深度等)选择最佳父节点。
  • 关联过程:子设备向父节点发送关联请求命令,父节点回复关联响应,并分配一个唯一的16位短地址。子设备保存父节点地址。

6.3 路由与路径修复

  • 在网状网络中,当节点需要向目标地址发送数据且没有有效路由时,会广播路由请求(RREQ)。每个中间节点记录反向路由并转发。目标节点收到后沿反向路径发送路由应答(RREP)。源节点收到RREP后即建立正向路由。
  • 如果某条链路断开,上游节点会发送路由错误(RERR),通知源节点路由失效,源节点重新发起路由发现。

6.4 数据传输方式

  • 单播(Unicast):指定目标短地址,直接发送。
  • 广播(Broadcast):目标地址为0xFFFF(所有设备)或0xFFFD(所有非休眠设备)等。广播消息会被反复转发(半径递减),需要谨慎使用以免广播风暴。
  • 组播(Group):将一组设备分配相同的组ID,发送到组地址后,组内所有设备都能收到。组的管理由APS层负责。
  • 间接传输(Indirect):应用不指定目标地址,而是从绑定表中查找。常用于开关与控制器的配对:开关的绑定表指向灯的地址。

6.5 低功耗运作(终端设备)

终端设备(RFD)大部分时间处于休眠模式(PM2或PM3)。它需要父节点(路由器或协调器)代为接收数据。工作原理:

  • 终端设备周期性唤醒,发送数据请求(Data Request) 命令给父节点。
  • 父节点如果有该终端设备的待发数据(由其他节点通过间接传输发送),则立即回应数据;否则只回应确认。
  • 终端设备也可以主动发送传感器数据,然后继续休眠。

这种机制使得终端设备可以使用电池工作数年。


第七部分:安全机制

ZigBee采用链路层安全网络层安全相结合的方式:

  • MAC层安全:可对信标帧、数据帧、命令帧进行加密和完整性校验,使用AES-128。
  • NWK层安全:加密网络层负载,防止中间人攻击。
  • APS层安全:用于应用层数据,可以端到端加密。

信任中心(通常是协调器)负责:

  • 生成网络密钥(Network Key)和链路密钥(Link Key)。
  • 在设备加入时通过密钥传输服务分发密钥。
  • 定期更新密钥,处理设备退出。

安全性可以根据应用需求分级启用,从无安全到完全加密。


总结

ZigBee技术通过IEEE802.15.4提供可靠的低速物理层和MAC层,再通过ZigBee联盟定义的网络层和应用层,实现了自组织、低功耗、多跳、安全的无线传感器网络解决方案。其核心概念包括:

  • 设备角色:协调器、路由器、终端设备
  • 网络拓扑:星状、树状、网状
  • 寻址方式:64位IEEE地址,16位网络地址
  • 路由协议:树路由、AODV网状路由
  • 应用框架:端点、簇、绑定、KVP/MSG服务
  • 调度机制:OSAL轮转查询式任务调度
  • 低功耗策略:终端设备休眠,父节点缓存数据,周期性数据请求

理解这些概念后,读者就已经具备了学习ZigBee实际开发的理论基础。接下来可以通过CC2530硬件平台和Z-Stack协议栈进行实践,将理论转化为可运行的无线传感网系统。

本文基于《ZigBee技术与实训教程(第2版)》理论部分整理,不包含任何代码或寄存器细节,适合用于概念学习和知识体系构建。

Logo

免费领 150 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐