嵌入式无线网关系统设计
2012-07-26张玉杰惠洒乐
张玉杰 惠洒乐
(陕西科技大学电气与信息工程学院,陕西 西安 710021)
0 引言
随着无线传感器技术和无线通信技术的发展,无线传感器网络越来越受到人们的关注。传统的无线传感器网络节点由于其自身结构的原因,通信距离以及数据的处理能力受到很大限制[1]。针对这些问题,本文提出了一种将ZigBee技术与GPRS技术相结合,以ARM9处理器为核心处理器、以μC/OS-Ⅱ为操作平台的无线网关设计方案。ZigBee技术是一种面向短距离、低成本、低功耗的无线通信方式[2],GPRS技术是一种面向远距离的无线通信方式,两者的结合即形成了一种在广域内使用GPRS传输数据、局域内使用ZigBee传输数据的网络架构。该架构实现了数据的远程、短距离相结合的传输方式[3]。嵌入式处理器丰富的内部资源和操作系统完善的任务处理机制可以有效地提高网关系统的数据处理能力。
1 系统硬件设计
系统以S3C2440处理器为核心,主要包括ZigBee模块、GPRS模块、存储器模块、人机交互模块、电源模块等,系统整体框图如图1所示。
图1 系统整体框图Fig.1 Block diagram of the system
本系统主要实现ZigBee网络协调器设计,以及ZigBee网络的组建[4]、节点的添加和删除,GPRS网络的通信,GPRS网络和ZigBee网络的数据交互等功能。系统的工作过程如下:ZigBee网络协调器通过SPI接口与微控制器连接,将终端节点的数据发送给微控制器;微控制器对数据进行处理,转换成适合GPRS网络传输的数据形式,并通过串口与GPRS模块相连;由GPRS模块连接到Internet,并上传到监控中心,实现数据的长距离传输。电源模块采用无线网关系统,为ARM处理器、ZigBee模块和GPRS模块提供各自需要的供电电压。
1.1 微处理器模块
微处理器是整个网关系统的核心,其一方面要对ZigBee通信模块进行相应的配置,接收传感器节点的数据;另一方面通过AT指令初始化GPRS通信模块,将网关节点连接到Internet上,并与监控中心建立有效连接。因此,微控制器必须要有较强的数据处理能力。本系统的微处理器选用Samsung公司的ARM9处理器S3C2440[5]。该微处理器采用ARM920T的内核,内部集成LCD控制器、3通道 UART、2通道 SPI、8通道10 bit ADC等资源,具有普通、慢速、空闲和掉电4种工作模式。S3C2440低功耗、高性能的优点完全符合本系统的设计要求。
1.2 电源模块
系统中微控制器单元的内核供电电压为1.2 V,存储器供电电压为1.8 V,I/O供电电压为3.3 V,ZigBee模块的供电电压为3.3 V,GPRS模块的供电电压范围为3.3~4.5 V。为了满足各模块的供电要求,系统的外部电源可以通过电源接口输入7~24 V的直流电压。二极管D1用于防止电源反接,经过电容C3、C1滤波后,通过LM2575将电源稳定至5 V。以5 V电压作为电路板的整体供电电压,再使用低压差稳压电源芯片(low dropout regulator,LDO)稳压输出3.3 V、1.8 V 和1.2 V 的电压,分别为各个模块供电。LM2575稳压电路如图2所示。
图2 LM2575稳压电路Fig.2 LM2575 voltage stabilizing circuit
1.3 ZigBee模块
ZigBee模块负责ZigBee网络的组建、网络节点的动态管理以及数据传输[4]。本系统中的ZigBee模块选用 Chipcon公司推出的符合2.4 GHz IEEE 802.15.4标准的射频收发器CC2420。该芯片是一款适用于ZigBee产品的RF器件,支持数据传输率高达250 kbit/s,可以实现多点对多点的快速组网[6]。S3C2440利用中断控制 CC2420,并通过 SPI接口与 CC2420通信。CC2420与S3C2440的连接关系图如图3所示。
图3 CC2420与S3C2440的连接关系图Fig.3 Connections between CC2420 and S3C2440
1.4 GPRS 模块
本网关系统中,GPRS模块通过GPRS网络将数据连接到Internet,并发送到远程监控中心。监控中心对数据分析处理后,再通过GPRS网络将其命令传达下去。本系统的GPRS模块选择M23A。M23A是BenQ公司推出的GSM/GPRS双频通信模块,集成了完整的射频电路和GSM的基带处理器,适用于开发基于GSM/GPRS的无线应用产品。GPRS通信电路部分以内嵌TCP/IP协议栈的M23A模块为中心,由M23A模块的相关外围电路组成,通过串口与S3C2440相连。
1.5 外围模块
在2.4 GHz频段中,ZigBee的速率为250 kbit/s,而M23A模块的实际速率远低于250 kbit/s。当网络传输数据量较大,GPRS网络无法将数据全部发送出去时,就会造成数据的丢失。为了实现数据传输时的速度匹配,减少数据丢失,须使用外接64 MB存储器作为数据缓存,以缓解传输速率不同所造成的瓶颈。控制系统使用统宝3.5英寸(1英寸=25.4 mm)LCD作为人机显示器件,人机界面采用菜单操作方式,键盘模块用来对菜单进行操作。为了简化系统设计,键盘采用独立键盘结构。
2 系统软件设计
2.1 系统总体软件设计
系统的软件设计采用C语言为开发语言,以嵌入式μC/OS-Ⅱ为操作平台。μC/OS-Ⅱ是一个免费的、源码完全公开的、可移植、可固化、可裁剪的占先式实时多任务操作系统。同其他操作系统一样,μC/OS-Ⅱ[7]也是从main()函数开始执行,完成操作系统的初始化、任务创建和系统启动。网关系统的软件设计采用分层设计的思想,不同的功能划分为不同的模块,并采用应用程序编程接口(application programming interface,API)方式将各个模块整合在一起。网关系统软件整体框架如图4所示。
图4 网关系统软件设计框图Fig.4 Software design of the gateway system
系统中的底层驱动程序有:LCD驱动程序、键盘驱动程序、存储器驱动程序、UART驱动程序和射频驱动程序等。底层驱动程序向中间层程序提供接口;中间层通过移植 μC/OS-Ⅱ实时操作系统内核实现ZigBee协议与GPRS协议的相互转换;应用层通过μC/OS-Ⅱ内核开发相应的应用程序,并将原本独立的各个模块整合起来,实现数据的高效转发,进而实现该网关系统的整体功能。
2.2 ZigBee协议栈的实现
Z-Stack协议栈负责整个无线传感器网络的构建与维护,并接收传感器网络信息。ZigBee协议栈主要由三个分层组成[8],分别是硬件抽象层(hardware abstraction layer,HAL)、操作系统抽象层(operating system abstraction layer,OSAL)和调试层。Z-Stack 的硬件抽象层(HAL)对一些硬件接口进行定义,用户可以在这里进行修改或者在应用层重新定义。用户的应用程序应该作为任务添加到OSAL,任务的添加通过调用OSAL层的函数来实现。在CC2420提供的Z-Satck协议栈中,添加的任务函数用以实现传感器节点信息的接收和发送以及无线传感器组网控制。
本系统中的ZigBee节点是ZigBee网络的协调器节点。协调器节点上电初始化后,启动程序,通过调用函数 aplFromNetwork()创建一个网络[9];选定一个PANID作为协调器的网络标志,创建路由表;然后对外发布广播帧,通知传感器节点可以加入该网络。协调器建立网络之后,允许路由器节点或传感器节点加入网络。路由器节点或传感器节点申请加入时搜索信道状态,若信道空闲,则发送信标帧。在接收到多个带链路质量信号参数的信标帧后,选取链路质量较好的节点并向协调器发出入网请求,协调器准许后会分配网内短地址给该节点。这样,网络子节点即成功加入网络。
协调器建立网络主要代码如下。
2.3 GPRS模块软件设计
M23A GPRS模块具有一套标准的AT命令集,在使用GPRS模块之前,要通过AT命令对GPRS模块进行初始化和建立网络连接等操作[10]。UDP连接具有实时性高的优点,经过GPRS网络实际测试,在网络正常情况下,UDP传输有效性大于99%。因此,本系统采用UDP连接。系统建立UDP连接的过程如下。
①初始化,通过“AT+CFUN=1”命令使能所有的AT指令功能,用“AT+COPS=0”使M23A模块登录网络。
② 参数设置,通过“AT%CGPCO=1,‘PAP,,’,1”命令激活 PCO字符串;使用“AT+CGDCONT=1,‘IP’,‘CMNET’”命令将网络的接入点设置接入的网络类型;并通过“AT$DESTINFO”指令设置UDP连接的服务器以及端口号。
③ 建立连接,使用“ATD*97#”指令建立连接,进入数据传输模式。
M23A GPRS通信驱动程序通过串口依次发送建立网络连接的AT命令,同时通过串口接收返回的数据,以判断操作是否成功。如果成功,则进入下一步,否则重新建立连接。M23A GPRS通信驱动程序主要包括GPRS初始化、建立连接和数据传输三个部分。整个操作首先完成M23A模块启动,接着通过AT命令进行数据传输环境的配置,最后建立UDP到GPRS网络的连接。M23A GPRS通信驱动程序处理流程如图5所示。
图5 M23A GPRS通信驱动程序处理流程Fig.5 Process flow of M23A GPRS communication driver program
3 结束语
本文以S3C2440为核心处理器,设计了基于嵌入式技术的无线传感器网络网关系统。该网关系统能够有效解决传统网关系统中存在的ZigBee数据传输瓶颈以及计算能力差等问题。大量试验结果表明,本系统数据传输可靠、抗干扰能力和数据处理能力强,可广泛应用于各种监测场所。
[1]马福昌,冯道训,张英梅,等.ZigBee和GPRS技术在水文监测系统中的应用研究[J].自动化与仪器仪表,2008(3):18-20.
[2]Sung W T,Hsu Y C.Designing an industrial real-time measurement and monitoring system based on embedded system and ZigBee[C]//Expert Systems with Applications,2011:4522-4529.
[3]Jang W S,William M H,Mirosław J S.Wireless sensor networks as part of a web-based building environmental monitoring system[C]∥Automation in Construction,2008:729-736.
[4]李玉忠.基于ZigBee技术水文监测系统的设计及应用[J].机械管理开发,2008,23(6):106-107.
[5]胡鸿豪,林程,宋丽平.基于S3C2410的ZIGBEE无线传感器网络网关的设计[J].大众科技,2008(12):67-68.
[6]周怡颋,凌志浩,吴勤勤.ZigBee无线通信技术及其应用探讨[J].自动化仪表,2005,26(6):5-9.
[7]宋晖,高小明.基于ARM的嵌入式操作系统μC/OS-Ⅱ的移植[J].微计算机信息,2006,2(2):135-136.
[8]崔光照,陈富强,张海霞,等.基于ARM9的无线传感器网路网关节点设计[J].计算机技术与应用,2008,34(11):115-118.
[9]房好帅,李楠,王慧娟.基于ARM与ZigBee的嵌入式无线传感器网络网关的设计[J].北京航天工业学院学报,2010,20(3):23-26.
[10]郝记生,张曦煌.基于GPRS网络的无线数据传输系统[J].计算机工程与设计,2008,29(20):5224-5226.