1 系统方案
本文设计的网关主要由高速微控制器LPC1227、ZigBee射频收发模块、GSM通信模块EM310、AC—DC电源模块等组成。网关的系统结构如图1所示。
为了满足网关低成本、高实时性的要求,网关的MCU采用基于Cortex-M0内核的LPC1227微控制器,该微控制器由NXP半导体公司设计,于2011年2月投入市场。微控制器可在高达45 MHz的CPU频率下运行,包含128 KB片内Flash存储器和8 KB数据存储器。512字节Flash擦除扇区带来了多种设计上的好处,同时该芯片有两个具备内部FIFO的UART。网关系统软件不采用任何嵌入式操作系统,利用最小的软件负载实现高实时性。
网关的ZigBee芯片采用TI公司的CC2530芯片,相对于当前使用较多的CC2430芯片,CC2530芯片的性价比更高。两种芯片的主要参数对比如表1所列。
网关中扩展了配合CC2530芯片的射频前端芯片CC2591。CC2591是TI公司推出的工作频率为2.4GHz,面向低功耗与低电压无线应用,集成度很高的射频前端芯片。CC2591集成了可将输出功率提高+22 dBm的功率放大器以及可将接收机灵敏度提高+6 dBm的低噪声放大器,从而扩大了ZigBee无线网络的覆盖范围。
网关采用华为公司设计的EM310 GSM模块,该模块具备内置的TCP/IP协议栈,方便实现ZigBee无线传感网和以太网的数据交互。2 硬件设计
2.1 网关电源电路
LPC1227、CC2530和CC2591芯片需要3.3 V电压供电。考虑到GSM模块EM310的输入电压范围为3.4~4.7 V,本次设计采用4.1 V电压对EM310模块供电。因此网关电源电路设计为3.3 V和4.1 V输出的应用系统,如图2所示。
首先由JP1电源接口输入220 V的交流电,经过AC—DC电源模块输出9 V直流电源。网关系统中GSM模块功耗最大,虽然EM310最大瞬时电流可达到1.6 A,但是EM310处于GPRS工作模式时只需要400 mA电流。综合考虑AC—DC模块的体积、成本以及系统工作的稳定性,最终选择了功率为10 W的AC—DC电源模块,可保证系统的稳定工作。为了稳定地向EM310提供4.1 V的电压,LDO芯片(低压差电源芯片)选择Sipex公司的SP X29302芯片,该芯片可稳定输出高达3A的电流,结合43kΩ和100kΩ的电阻,可将输出电压调节到4.1V。
为保证3.3 V的输出电压采用了3.3 V的SPX1117LDO芯片,它的输出电流可达800mA,输出电压的精度在±1%。
两种LDO的输出端都采用一个10μF的钽电容来改善瞬态响应和稳定性。
2.2 远距离ZigBee模块电路
远距离ZigBee模块电路主要由晶振电路、CC2530芯片、CC2591芯片、芯片间RF差分信号线的匹配链路、RF信号到天线的匹配电路、CC25 91控制信号线,以及电源的退耦滤波部分组成。本文只给出ZigBee模块系统结构图,如图3所示。
对于CC2591的3个使能控制引脚,CC2530与CC2591的引脚连接分配如下:P1_1对应PA EN,P1_4对应EN,P0_7对应HGM。
在实际设计ZigBee模块的PCB电路板时,需注意以下2点:
①CC2530的GND引脚在芯片底部,画PCB封装时可在GND焊盘上添加GND过孔,以实现芯片的GND引脚与PCB板上的GND相连。
②TI公司提供的CC2591设计资料中建议采用4层板设计,考虑成本因素,本次设计仍采用2层PCB设计。经测试发现ZigBee节点间的通信距离在采用5 dm全向天线时,无障碍通信距离可达1 km以上,满足设计需要。2.3 EM310模块电路
EM310是由华为公司设计的GSM模块。它的输入电压设计在第1节中已有介绍。这里需要注意2点:
①串口引脚的连接。EM310模块采用串口与LPC1227进行通信,EM310串口引脚的连接比较特殊。RXD对应终端设备的RXD口,TXD对应终端设备的TXD口。因此LPC1227与EM310相连时引脚分配如下:PIO0_1/RXD0对应RXD,PIO0_2/TXD0对应TXD。
②本次设计中虽然不需要使用EM310进行语音通话,但建议EM310模块的RING引脚与LPC1227的GPIO引脚相连。因为EM310模块在收到短信和语音呼叫时都会在RING引脚输出低电平,LPC1227通过中断可以及时计算出RING引脚低电平持续时间,从而尽快地对短信或来电进行处理,比采用软件查询方式更具有实时性。
3 软件设计
网关的软件系统主要由ZigBee协调器程序和嵌入式处理器程序构成。
3.1 ZigBee协调器程序
ZigBee标准定义ZigBee网络中存在3种类型的设备:协调器、路由器、终端设备。其中协调器负责建立ZigBee网络,因此网关中的ZigBee模块需要在程序中配置为协调器类型。
协调器程序采用最新的TI公司推出的ZigBee协议栈2007版,该协议栈可很好地支持网络的自组织和自愈合。相对于目前使用较多的ZigBe e协议栈2006版,07版协议栈在06版协议栈基础上主要增加了支持多密钥高安全性、大型网络和分割传输等特性。
协调器程序在已有协议栈基础上,主要还需增加如下部分:
①2007版ZigBee协议栈中包含了CC2591控制程序,为了使用CC2591,在协调器程序中需要开启“halboard_cfg.h”文件中的HAL_PA_LNA编译选项。
②增加串口处理任务,实现与网关处理器的串口通信。
③按照自定义的数据传输帧格式解析、处理接收到的数据,按照自定义的数据传输帧格式构造待发送的数据。
④定期向全网广播包含RTC信息的数据包。定期广播该数据包对于全网节点来说有两种作用。一是该数据包可实现全网节点RTC同步;二是网络中的其他节点可通过定期检查有无收到该数据包判断协调器有无出现异常。此设计很适合包含路由器、需要RTC同步的大型网络。
⑤增加CC2530芯片的看门狗初始化以及定期喂狗程序。
3.2 嵌入式处理器程序
为了实现网关的低成本、高实时性设计,本次网关不采用任何嵌入式操作系统。整个软件系统采用前后台的编程思想,后台ISR(中断服务程序)和前台主程序循环之间的数据交换可以通过事件标志和数据缓存区来实现。
由于EM310模块内置了TCP/IP协议,因此网关的MCU向该模块直接发送AT指令即可与目标上位机建立TCP/IP连接,实现数据的远程无线传输;通过发送AT指令还可收发短信、挂断语音通话。为了增强网关的灵活性以及降低运行成本,网关采用GPRS方式与上位机进行通信,同时保留处理短信功能,实现短信对网关的配置与操控。比如遇到目标上位机IP地址变动的情况时,可通过给网关发送短信,配置网关最新目标IP地址然后再与目标主机建立GPRS连接。
对于该部分程序,需要注意以下几点:
①LPC1227具备在应用中编程的功能,对于需要掉电保存的信息可无须外扩Flash芯片而直接通过执行程序将特定信息保存到LPC1227芯片中。
②ZigBee协调器中RAM空间很有限,而且自身的Flash擦除次数也有限(CC2530支持约2万次的擦写,而LPC1227可支持约10万次的擦写)。考虑到保存ZigBee网络中大量节点的16位网络地址需要很大的空间,而协调器中RAM空间明显不够用,如果保存到协调器的Flash中又会影响CC2530芯片的使用寿命,因此采用LPC1227中的RAM空间来保存节点的网络地址。毕竟LPC1227芯片8 KB的RAM空间足以保存一个大型网络中节点的网络地址。同时,LPC1227具备的在应用编程功能可将节点网络地址信息保存在自身Flash中。
③本次设计中自定义的ZigBee数据传输帧的节点ID号采用一字节进行保存。因此,一个网关所建立的ZigBee网络容量最大可为255个节点(除去协调器节点)。为了实现简单的ZigBee节点网络地址和节点号之间的地址映射,采用如下代码实现(前提是节点编号从0到255):
uint16 Node[256]; //定义用于保存16位网络地址的数组
Node[x]=NetAddr; //保存节点号为x的网络地址
NetAddr=Node[x]; //获取节点号为x的网络地址
嵌入式处理器程序的MCU程序处理流程如图4所示。
4 测试结果
网关的测试借助上位机测试平台和ZigBee终端节点,以无线路灯节能、监控系统为应用背景。
上位机测试平台如图5所示。
网关技术指标如表2所列。
5 总结
本次设计中网关没有采用任何嵌入式操作系统,相比当前采用的嵌入式操作系统网关,它具有更小的软件负荷和更低的软硬件成本。网关中的ZigBee模块加入了2.4 GHz功率放大芯片CC2591,使得ZigBee节点间的无线通信距离更大,更适用于远距离无线通信场合。
网关的MCU采用较新的基于Cortex-M0内核的ARM芯片LPC1227,运行速度高达45 MHz,具备在应用编程(IAP)功能,方便对关键数据的掉电保存。两路串口与ZigBee模块和GSM模块连接方便,具有较高的性价比。
系统软件的编写采用前后台的设计思想,使得网关具有很好的实时性和可靠性,满足工业级要求。因此本文设计的网关在低成本、远距离ZigBee通信领域具有较高的推广价值。