方思维,张盼盼
(西安工程大学,西安710048)
方思维(硕士研究生),主要研究方向为无线传感网、无线通信技术、嵌入式系统等;张盼盼(硕士研究生),主要研究嵌入式应用技术。
ZigBee技术是基于IEEE802.15.4标准协议的一种近距离无线通信技术,具有功耗低、成本低、容量大、安全性高、抗干扰性能强等特点,被广泛应用在工业监控、传感器网络、家庭控制、安全系统等领域。如何将ZigBee网络与以太网、WiFi网络连接,实现便携式设备(如手机、平板电脑等)对小型区域的实时监控?本文提出了一种基于Android系统的ZigBee无线网关设计方案。
智能监控系统设计的目的是使用户可以通过手机或者PC机上网远程控制终端设备或对环境进行监测。其中网关是系统的核心,主要负责上行各无线终端结点信息的管理和处理,以及下行控制各无线终端结点运作,具有完成不同网络间协议转换的功能。本文网关的设计主要完成ZigBee协议与TCP/IP协议的转换功能,利用 WiFi网络将手持设备连接到以太网,用于控制家电、灯光等,分别完成手机和以太网信息与ZigBee信息之间的相互通信。网关在智能监控系统中的位置如图1所示。
图1 网关在智能监控系统中的位置
网关设计采用模块化方案,由硬件层、系统层和应用层组成,如图2所示。硬件层描述了网关的硬件组成;系统层是以SAM9M10为核心处理器的网关所移植的Android操作系统;应用层包括网关应用程序、应用协议层和应用地址适配层。
系统硬件设计采用模块化设计思想,主要模块包括SAM9M10核心处理模块、ZigBee模块、以太网模块、LCD模块、WiFi模块、电源模块等。
SAM9M10核心处理模块包括一个基于ARM926的400MHz微处理器,支持133MHz的双数据率DRAM(DDR2),并且集成了高速(480Mbps)USB主机和设备端口、片上收发器、以太网 MAC、两个用于 MMC 4.3和SDIO/SD Card 2.0的接口,以及CMOS摄像头、音频接口和支持电阻式触摸屏的LCD控制器。SAM9M10核心处理模块负责ZigBee数据收发、以太网数据收发、LCD数据输出、数据存储等。
图2 无线网关结构示意图
ZigBee模块的主芯片采用TI公司的第二代片上系统CC2530,相比以前的产品,CC2530具有更卓越的RF性能、可编程的256KB闪存、更小的封装尺寸和IR产生电路。ZigBee模块负责与ZigBee网络其他无线节点进行网络通信,采用USART或SPI与主控制器通信,本文选择SPI方式。
以太网模块采用DAVICOM的DM9161芯片。DM9161是一款单芯片快速以太网PHY,DM9161通过可变电压的MII或RMII标准数字接口连接到MAC层,支持HPAuto-MDIX,是目前常见的一款物理层收发器。
WiFi模块由AP(Access Point)和无线网卡组成,其主要特性为:速度快,可靠性高,在开放区域覆盖范围广,方便与现有的有线以太网整合,组网的成本更低。
触摸屏LCD模块采用台湾群创公司的AT102TNO3模组,显示尺寸为10.2寸,显示比例为16∶9,分辨率为800×480,采用LED背光,工作电压为5V。
电源模块由外接5V电源进行供电,由NS公司的芯片 LP38692 转 换 为 3.3V、LP2983AIM5-1.0 转 换 为1.0V,再由Anisem公司的芯片AS1301EHT-ad转换为1.8V。系统硬件结构如图3所示。
无线网关软件设计主要从Android操作系统的移植、无线网关系统协议模型与网关应用程序3方面介绍。
Atmel以32位ARM926处理器为基础的SAM9M10 ARM9器件为运行Android操作系统的SAM9M10-G45-EK板提供完整的板级支持包(Board Support Package,BSP)。Atmel公司的Android端口基于2.1版本,支持摄像头接口、硬件视频解码、软件解码、网页浏览,可以使用以太网电缆或H&D Wireless提供的WiFi SDIO加密器。通过SAM9M10-G45-EK板的BSP,可以很方便地将Android移植到SAM9M10上,由Nand Flash启动。
图3 无线网关结构
移植方面的工作主要有两部分:Linux驱动和Android系统硬件抽象层。
Linux中的驱动工作在内核空间,Android系统硬件抽象层工作在用户空间,有了这两个部分的结合,就可以让庞大的Android系统运行在特定的硬件平台上。在具有了特定的硬件系统之后,通常需要在Linux中实现其驱动程序,这些驱动程序通常是Linux的标准驱动程序。主要实现的是Android系统中的硬件抽象层(Hardware Abstract Layer),硬件抽象层对下调用Linux中的驱动程序,对上提供接口,以供Android系统的其他部分(通常为Android本地框架层)调用。移植的主要工作如图4所示。
图4 Android系统移植的主要工作
3.2.1 ZigBee协议栈
ZigBee协议栈采用TI司的ZStack,具体版本号为ZStack-CC2530-2.5.0。它支持ZigBee 2007(包括 ZigBee和ZigBee PRO)协议,在本网关软件设计中,采用了Zig-Bee PRO协议。ZigBee PRO在继承ZigBee技术全部优点的基础上,增强了无线网络的可扩展性、易用性和安全性。ZigBee协议栈架构如图5所示。
图5 ZigBee协议栈框架
3.2.2 TCP/IP协议栈
从协议分层模型方面来将,TCP/IP 由 4 个 层 次 组成:链路层、网络层、传输层、应用层。每一层都呼叫它的下一层所提供的网络来完成自己的需求。实际上,TCP/IP协议可以通过链路层连接到任何网络上,例如IEEE802局域网。TCP/IP协议栈框架如图6所示。
图6 TCP/IP协议栈框架
3.2.3网关系统协议模型
在网关系统层的ZigBee协议栈和TCP/IP协议栈之上添加一个应用地址适配层和应用协议层。应用地址适配层的作用在于将ZigBee地址(MAC值或短地址)、以太网地址(IP地址)与应用层地址形成映射关系,即将不同类型的网络地址适配到应用地址上来,使得节点在应用层同属于一个网络;应用协议层是在应用地址适配层的基础上通过制定统一的应用协议,规范节点间数据交换的格式,从而实现ZigBee网络与IP网络之间的数字信息交换功能,即实现ZigBee网关的功能。
无线网络中的ZigBee节点接收指令将数据打包,简单封装后向上发送给本地ARP,通过ARP解析出该节点的网络MAC地址,确定要发送的以太网地址;然后向上发送给网关应用程序,经分析后发送到对应的以太网UDP或TCP处理,向下发送到以太网端口MAC地址。这样就完成了数据从ZigBee网络向以太网协议的转换过程。网关系统协议模型如图7所示。
网关应用程序主要指的是在网关应用协议层的规范基础上,传递的信息数据以Android任务的形式组织运行,在以太网与ZigBee网络的数据通信中,信息是以数据包的形式发送和接收的,数据包发送流程如图8所示。
图7 网关系统协议模型
图8 数据包发送流程图
在无线WiFi网络中,通过以太网与无线AP相连接的PC机是服务器端,而无线网关作为Android客户端通过TCP/IP协议与PC服务器建立网络连接,通过Socket通信,可以在实现服务器和客户端网络连接的基础上,完成数据的转发、传输和接收。
因此,无线网关应用程序要实现下面的功能:
① 建立客户端(无线网关)和服务器(PC机)的Socket网络连接,为他们之间的数据交换提供必要条件。
②将无线ZigBee模块接收到的来自ZigBee网络的数据读进缓冲区,然后写入USB无线网卡,USB无线网卡会将数据打包成WiFi协议格式,送入无线WiFi网络。
Android客户端应用程序实现流程如图9所示。
图9 Android客户端应用程序实现流程图
ZigBee将应用划分为不同的域,每个应用域都有自己的Profile,ZigBee Profile为这个应用域提供标准的接口和设备定义,使得不同生产商生产的针对同一应用领域的ZigBee设备之间能互通。ZigBee在智能家居、家庭自动化中采用的Profile是ZigBee Home Automation Public Appliation Profile。通过该Profile及ZCL(ZigBee Cluster Library)的引入,实现了对ZigBee灯光家电设备的控制。例如网关对灯光进行开关控制,只需调用zel-General-SendOnOff_Cmd-Toggle()函数。应用程序、Profile及ZCL与其他层的接口的层次框图如图10所示。
图10 应用程序、Profile及ZCL与其他层接口层次框图
本文研究了基于Android系统和ZigBee技术的无线网关,该网关体积小,功耗低,使ZigBee网络和以太网以及WiFi网络融合为一体,在ZigBee近距离无线通信和以太网远程控制之间搭建了一座桥梁,实现了无线传感网与无线互联网之间的数字信息交互,可以广泛应用到物联网中。
[1]ZigBee Alliance.The ZigBee PRO Stack Profile,2012.
[2]蒋挺,赵成林.紫蜂技术及其应用[M].北京:北京邮电大学出版社,2006:244-247.
[3]王志贺,马国旗,纪亿.浅谈 WiFi技术[J].魅力中国,2011(16).
[4]瞿稻.基于Android平台移动监控系统的设计与实现[D].武汉:武汉理工大学,2012.
[5]乔大雷.基于ARM9的嵌入式ZigBee网关设计与实现[D].北京:中国矿业大学,2007.