笔者利用Zigbee技术,设计了一种适合于短距离、低成本应用场合的通信模块。
1 Zigbee技术
1.1 Zigbee概述
Zigbee是一种短距离、低速率无线网络通信技术,其开发是为了建立一种低成本、低功耗的小区域的无线通信方式,在此基础上通过软件协议栈发展出易布建的大容量、不依赖现有通信网络和现有电力网络的无线网络。Zigbee在工业控制、家庭智能化、无线传感器网络等领域有广泛的应用前景。
Zigbee技术采用直接序列扩频(DSSS)的方式进行无线信号的收发,其工作频率为2.4 GHz波段和868/915 MHz波段。2.4 GHz波段射频支
持250 kb/s的数据速率和16个不同的信道。在868/915 MHz波段中,868 MHz支持1个数据速率为20 kb/s的信道,915 MHz支持10个数据速
率为40 kb/s的信道。
Zigbee技术的无线网络连接功能非常丰富和强大。Zigbee技术的物理层、媒体存取控制层(media access control,MAC)和链路层采用了
EEE802.15.4(无线个人区域网)协议标准,并在此基础上进行了完善和扩展。其网络层、应用会聚层和高层应用规范(API)由Zigbee联盟进行了制定,整个协议架构如图1所示。
图1 Zigbee协议栈架构
在网络层方面,Zigbee联盟制订Zigbee可具备支持星状、树状及网状3种网络架构。Zigbee依托于一个个独立的工作节点,每个节点的功能不尽相同。大部分节点为子节点,只具有部分网络功能,这些节点称为精简功能设备(reduced-function device,RFD);而其余的一些节点,负责与所控制的子节点进行通信,汇集数据和发布控制,或起到通信路由的作用,称之为全功能设备(full-function device,FFD;也称为协调器)。相较于FFD,RFD电路简单且内存较小。FFD节点具备控制器(controller)的功能,可提供数据交换,而RFD则只能与FFD传输数据。
1.2 Zigbee的主要技术特点
低功耗。在低耗电待机模式下,2节5号干电池可支持1个节点工作6~24个月,在相同条件下,蓝牙能工作数天,WiFi仅能工作数小时。 低成本。通过大幅简化协议(不到蓝牙协议的1/10),降低了对通信控制器的要求,以8051的8位微控制器测算,全功能的主节点需要32 kb
代码,子功能节点只需4 kb代码。 低速率。Zigbee工作速率为20~250 kb/s,分别提供250 kb/s(2.4 GHz)、40 kb/s(915 MHz)和20 kb/s(868 MHz)的原始数据吞吐率,满足低速率传输数据的应用需求。 网络容量大。Zigbee可采用星状、树状及网状网络结构,由一个主节点管理若干子节点,一个主节点最多可管理254个子节点;同时主节点
还可由上一层网络节点管理,可组成多达65 000个节点的大网。 安全性能高。Zigbee提供了3级安全模式,包括无安全设定、使用接入控制清单(ACL)、防止非法获取数据以及采用高级加密标准(AES128)的对称密码,可灵活确定其安全属性。
2 模块设计方案
2.1 系统框图
通信模块设计方案由硬件部分和软件部分构成。硬件方案设计框图如图2所示。
微处理器采用8位或16位高性能单片机,考虑到通信模块必须安装Zigbee协议栈,微处理器宜自带一定容量的可编程flash存储器。
Microchip公司的16位单片机ATmega128L含有128 K flash存储器,满足全功能节点Zigbee模块的协议栈存储要求。目前Microchip已向公共用户提供免费的缩减功能的协议栈,用于普通用户的系统开发。因此本方案采用该单片机作为核心MCU。ATmega128L自带1个SPI接口和2个串口(UART),这3个接口可以灵活的设定。考虑到Zigbee通信模块的应用通用性,本方案采用SPI作为通用输入输出接口,连接模块的通用输入输出单元,作为模块与其他应用系统的工作接口电路。采用1个UART口作为模块同计算机的接口。这样配合上层应用软件,采用RS232方式连接的计算机可以方便可靠地向本模块下载程序;同时接收模块采集发送到主控台的数据。框图中RAM模块可作为模块上电工作后MCU程序运行单元。
2.2 射频(RF)单元
目前,在投入应用的Zigbee射频芯片中,CC2420是应用较广泛的一种。CC2420是标准的Zigbee芯片,符合Zigbee联盟的规定协议;采用直接序列扩频的方式进行数据收发,工作在ISM的免费2.4 G频带;可同时工作为全功能节点(FFD)和缩短功能节点(RFD);输出信号可调且可完成接收信号强度指示(RSSI);采用CRC16、AES硬件加密等方式来保证数据传输的安全可靠。CC2420封装形式为QLP-48 package,大小仅为7×7 mm,高度集成性可将无线传输模块硬件电路模块设计成很小的尺寸,方便与其他电路连接。其典型连接如图3所示。
可以看到CC2420只需很少的电路元器件就能组成完整的射频工作单元,其中SPI数字接口用来连接MCU。RF单元、MCU单元共同组成完
整的工作模块。
2.3 通用无线通信模块的软件设计
软件设计是实现模块通用的关键,其设计目标是提供一种不依赖于应用和硬件MCU 的监控程序。该程序主要包括模块定义、系统参数初始化和模块功能实现3部分。模块定义根据应用要求定义模块是FFD还是RFD,从而确定节点性质和软件内核规模。系统参数初始化主要进行协议栈配置,参数初始化流程如图4所示。
图4 初始化软件流程图
首先定义系统的时钟信号,然后定义Zigbee芯片所连接的MCU类型和型号,接着定义通信模块性质即定义通信模块所在节点为全功能节点还是缩减功能节点;再接着定义模块的工作频率、电源管理方式及Zigbee网络层和MAC层的参数,如网络地址、节点所属接口、集群等。模块功能实现主要包括由模块用户开发的上层应用程序。
在程序设计中需要考虑较多的因素,如电源管理、网络路由、通信协议实现、数据管理和网络安全等。系统的初始化程序中需要首先定义这些参数。
模块的初始化可通过两个方法实现,一是直接设置在单片机源程序中初始化部分,采用专门的宏定义文件;一是开发专门的上层软件,在PC机操作系统窗口中设置。从模块应用的通用型考虑,后者比较合适,但为了不增加硬件的复杂性,初始化程序数据需嵌入到MCU程序中,从串口下载至MCU 的flash存储器中。
2.4 模块方案检测验证
选取基于以上方案的两个模块进行验证。通信双方都为缩减功能设备,通信方式为点对点通信;通信距离分别为无障碍50 m和30 m;发送方以5 kb/s速率循环发送字符信号,接收端正确接受传输信号,误码率为零;验证结果表明,模块正常通信,传输距离、传输速率符合要求。通过上层软件能正常同模块通信,对模块的多样性初始化能满足不同应用场合的要求。由于试验条件所限,未能验证模块在大规模应用和复杂拓扑结构中的网络通信特性。