引言
监控系统是与传感技术、信息传递处理技术和计算机技术等紧密相关的。监控包括监视和控制,意味着系统工作在全双工模式。按通信方式可将监控系统分为有线监控系统和无线监控系统。以往由于信息在无线传递时容易受到干扰等一系列的原因导致其应用远落后于有线监控系统,近年来随着通信技术的发展,无线信息传递越来越稳定可靠,其抗十扰能力、纠错能力和保密能力越来越强。而有线监控系统存在着隐蔽性差、抗破坏能力弱等问题,在一些场合难以铺设或铺设成本高、周期长、费时费力。可以预见,无线监控系统的应用和研究将越来越广泛。
基于IEEE 802.15.4标准的ZigBee协议具有自组织、稳定性好、抗干扰性强、功耗低等一系列优点,在无线个域网、物联网和低功耗传感网络等领域得到了广泛的应用。Android是Google公司推出的一个基于Linux内核的智能移动平台的解决方案,由于Android具有人机界面友好、可扩充性强、安全易用等特点,在推出后短短几年就已经占据了移动平台的领军地位。
当前,将ZigBee协议和Android智能平台技术结合起来进行研究的课题十分稀少,相关的研究成果更是少之又少。因此,本课题的研究具有良好的前瞻性和启发性。
1系统结构
智能移动监控系统由两个主要的部分组成:信息采集与传输子系统和信息处理与控制子系统。信息采集与传输子系统采用ZigBee协议作为基础,其主要功能是采集环境信息并将其发送至信息处理与控制予系统。同时,信息采集与传输子系统需要及时的响应来自信息处理与控制子系统的各种命令。信息处理与控制子系统是基于Android智能平台的,需要实时地显示自信息采集与传输子系统的环境信息,并将用户的控制操作转换成用户命令下达至信息采集与传输子系统。智能移动监控系统的整体结构如图1所示。
1.1硬件结构
信息采集与传输子系统采用CC2530作为硬件结构的核心。CC2530内部集成了业界领先的射频收发器、丰富的片内外设和强大的DMA控制器。集成的射频收发器的性能指标远远优于IEEE 802.15.4标准所规定的要求。丰富的片内外设,如AES协处理器、CSP协处理器和SPI等通信接口,为各种基于ZigBee、6LoWPAN和RF4CE等协议的应用提供了有力的支持。强大的DMA控制器为CC2530在高强度、高吞吐量以及实时性要求严格等领域的卓越表现提供了可靠的保证。LCD采用FSTN显示模式的LM6059BCW液品模块。信息采集与传输子系统硬件结构如图2所示。
信息处理与控制子系统采用基于ARM1176JZF-S内核的S3C6410微处理器作为核心控制单元。ARM11系列是ARMv6架构的第一代实现。采用两片K4X51163PC Mobile DDR SDRAM芯片构成128 MB的内存系统。采用1GB的K9G8G08UOA NAND Flash芯片作为非易失性存储设备。采用7寸TFT触摸屏作为主要的人机交互设备。采用100M以太网芯片DM9000AE构建以太网接口,用于以太网访问。信息处理与控制子系统的硬件结构如图3所示。
1.2软件结构
信息采集与传输子系统软件架构如图4所示。信息采集与传输子系统的软件系统设计是基于OSAL操作系统的。用户任务和ZDO等ZigBee系统任务一起在OSAL操作系统的调度下运行,其调度机制基于优先级,用户任务的优先级是最低的。
信息处理与控制子系统软件部分的主体是Android应用程序。该Android应用程序实时地显示环境信息并及时地响应用户的触摸操作。Android应用程序的运行需要底层Linux硬件驱动等的支持。本子系统的软件架构如图5所示。
2系统关键技术和实现
2.1信息采集与传输子系统
信息采集与传输子系统中的关键技术有很多,这里主要介绍ZigBee协议。ZigBee协议从上到下由应用层APS、网络层NWK、媒体访问控制层MAC和物理层PHY组成。应用层的主要功能与信息采集与传输密切相关。网络层的功能包括配置设备、路由发现和维护,确保数据能安全、有效地传输到目的设备。媒体访问控制层控制着设备接入无线信道的时间和方法,确保数据链路的可靠性。物理层主要实现数据的发送和接收,完成信道的评估和射频信号能量的测量等。本课题物理层工作在2.4GHz的ISM频段,调制方式为O-QPSK.ZigBee协议数据传递流程如图6所示。
应用层数据从一个ZigBee设备发送到另一个ZigBee设备,它是一个层层封装,然后层层解析的过程。从应用层来看,信息采集与传输子系统中存在信息采集节点和网关节点两种设备。信息采集系统与传输子系统的Profile ID为INFO_GATH ER_PRF.信息采集结点和网关节点的端点号均被配置成INFO_GATHER_EPT.信息采集与传输子系统的两种数据类型如图7所示。信息采集节点和网关节点之间存在两种数据的交互:环境信息数据和用户命令数据。信息采集结点向网关节点发送环境信息数据时采用的簇ID为ENV_INFO_CLU,网关节点向信息采集节点传达用户命令时使用的簇ID为USR_CMD_CLU.Profile ID号、端点号和簇ID都是ZigBee协议定义的重要的配置信息,请参见ZigBee协议。
环境信息数据和用户命令数据最终都将填充到类型为aflncomingMSGPacket_t的结构体中,其定义如下:
该结构中clusterId填充的就是簇ID,endPoint填充的就是端点号,Profile ID隐藏在变量srcAddr中。变量cmd填充的就是与应用相关的数据,如环境信息编码和用户命令编码。
2.2信息处理与控制子系统
信息处理与控制子系统是在Android智能移动平台上研发的。Android智能平台体系从上到下由应用程序、应用程序框架、外部库、Andr oid运行时库、硬件抽象层HAL(Hardware Abstraction Laycr)和Linux内核组成。
Android智能移动平台的研发需要借助Eclipse、NDK和JNI等工具和方法。信息处理与控制子系统的MVC模式如图8所示。本文是按MVC模式研发信息处理与控制子系统的。
Android应用程序的设计必须要遵循单线程模型。当Android应用程序启动时,Android系统会同时启动一个对应的主线程即UI线程,用于处理与用户界面UI(User Interface)相关的事件。UI线程不是线程安全的。
此设计需要将环境信息实时地显示在Android应用程序上,同时需要及时地将用户操作转换成用户命令发送至信息采集与传输子系统。冈此,为了避免阻塞UI线程,设计了一个守候线程并采用了基于zbHandler的消息传递机制。UI线程和守候线程的关系如图9所示。
守候线程是借助于本地方法获取Linux底层驱动环境信息的。信息处理与控制子系统中的本地方法被封装在一个名为ZigBeeJni的类中,其定义如下: