近年来,我国气象灾害频发,严重影响人民群众的生活,尤其在交通方面有着较大的影响。依靠人工观测来采集气象数据不仅时效性差,而且无法适应偏僻、恶劣的环境条件,不能将采集到的各区域数据实时上传给决策控制中心,因而有必要研制一种便携、低功耗、数据通信稳定的气象数据采集系统。
随着传感器向着智能化、网络化方向的发展,无线网络技术在自动气象数据采集中得到了应用。利用ZigBee技术近距离、组网能力强、成本低及可靠性高的特点,使得气象站中传感器网络部署的有效时间得到延长,增强了网络的实用性,测量节点具有更长的生命周期。ZigBee技术自有的无线电标准,以接力的方式在多个测量节点之间相互协调实现通信,通信效率非常高,满足了交通气象参数采集传输的需要[1]。同时随着移动通信发展的宽带化、数据化、多应用化,手机作用的领域已经扩展到人们生活的很多方面。因此,将手机移动监测和ZigBee无线传输网络结合起来,并利用手机所具有的GPRS通信能力研制气象数据采集传输系统具有一定的意义。
1 系统设计与实现原理
本设计利用手机、ZigBee无线传输网络、气象数据采集检测等设备开发出一个能实现气象数据采集、存储并实时上传数据到上位服务器端的数据采集系统。其中手机负责接收来自ZigBee网络的数据,并对数据做出相应的判断和处理;ZigBee无线传输网络负责手机和数据采集检测部分的通信;气象数据采集检测部分负责所在区域内气象参数的检测、分析及处理。整个系统工作原理如图1所示。 系统的手机开发平台采用MTK架构套件,它集成了32位嵌入式ARM7处理器,支持GPRS、GSM消息传输,并具有128个引脚外部扩展接口,可以连接各种功能外设,还支持用J2ME Java来控制硬件。通过在此手机平台嵌入无线ZigBee射频模块,实现系统主控制器和各网络子节点的数据采集传输。
数据采集系统的硬件结构图如图2所示。 无线网络化传感器RFD(精简功能器件)模块采集数据信息,并通过ZigBee通信协议传输到FFD(全功能器件)模块;FFD模块将数据信息做简单处理、编码打包后通过串口将数据上传到手机平台;手机数据处理功能程序对气象数据进行进一步的补充描述,在手机上实现气象参数的显示、存储,并可通过手机的GPRS功能模块以文本形式将数据实时上传到服务器端。服务器端接收到现场数据进行进一步的处理后,提供决策支持,采取预防措施。
所采集的气象数据包括温度、湿度、风速、降水、能见度、大气压力等。
2 系统硬件设计
系统的硬件主要由基于CC2430的数据采集模块和手机平台两部分组成。手机平台要实现的硬件设计主要有:手机与CC2430的串口通信电路及GPIO电源控制设计;数据采集检测部分主要由CC2430芯片、传感器及外围部件构成。
2.1 数据采集模块设计
数据采集模块使用CC2430配合气象传感器实现数据的采集、传输,硬件连接图如图3所示。 CC2430节点模块主要由CC2430芯片和传感器构成。ZigBee是一种基于LR-WPAN的双向无线通信技术标准。可以工作在2.4 GHz的ISM频段,数据速率可达到250 kb/s。CC2430系统芯片就是以ZigBee技术为基础的2.4 GHz射频系统单芯片。以51单片机为核心,集成了收发通道,具有模数转换器、21个可用数字IO接口,可以与多种参数传感器进行直接连接。CC2430工作电流损耗为27 mA,适合本系统的工作低功耗要求。CC2430将气象传感器采集的数据经模数转换及数据处理后,将结果通过ZigBee无线传感器网络发送出去,以供手机接收使用。
CC2430气象数据采集传输模块如图4所示。 2.2 串口通信接口设计
需要实现手机与CC2430模块的数据通信。将CC2430制作为符合标准的扩展板,手机通过串口2与CC2430扩展板连接。应用的基本框架如图5所示。在开发手机的UART的发送(UTXD)和接收脚(URXD),分别与CC2430的RXD、TXD引脚连接,构成两者之间的数据传输。 3 平台界面软件设计与实现
MTK手机平台可使用C语言、JAVA语言进行开发,其中使用JAVA语言开发的软件具有通用性强、方便移植、开发周期短等优点。本文平台界面设计采用Sun J2ME Wireless Toolkit(WTK)开发工具配合EclipseME开发组件来设计。将实现一个基于J2ME/MIDP的客户前端,利用GPRS建立数据传输网络的气象数据采集系统。
3.1 界面程序设计分析
本设计的客户端程序整体上参照MVC模式设计,将界面、数据、控制分为不同的模块,实现的主要功能有参数设置、串口监视、GPRS数据上传和参数监测界面四大部分,它们分别基于J2ME不同包类库和支持JNI操作的包派生而成。
(1)参数设置功能部分: 用来实现手机平台功能的设置管理,如设置GPRS参数、设置系统时间、背光显示、ZigBee芯片可用信道等,可将用户设置的信息使用MIDP中的RMS系统来保存在本地数据库中。这一功能部分基于LIST部件类扩展设计,其中的参数类型为EXCLUSIVE,即每次只能选择列表中的单个项目。
(2)串口监视部分: 当界面切换到气象数据采集界面时,通过任务接口定时读写串口,查看CC2430是否有数据上传,并将数据存入数据队列中,供显示界面调用。实现这部分功能需要实现程序线程Thread,Thread有两种方法来创建线程,一个是定义继承Thread类的子类,另一个是实现Runnable接口。本部分中主要使用实现Runnable接口这种方法。
(3) GPRS数据上传部分: 将CC2430上传来的数据以文本格式或其他形式发送到上一层的决策控制中心。SUNW公司对MMS和SMS提供了JSR205和JSR102支持。其中定义的框架包含无线消息的可用API,实现了无线通信的高级抽象,将传输层完全隐藏,方便了设计。
(4)参数监测界面: 用来显示传感器采集到的气象参数数据,显示可以配以文本、图片等信息,需要显示的气象参数有温度、湿度、风速、能见度、降水量、雪深、大气压等。界面采用Canvas类编程设计。此界面还可根据要求添加报警等预警功能,如降水量达到某一预定值,则给予声音、文字等预警显示。
3.2 设计与实现
J2ME的MIDP(Mobile Information Device Profile)包含的系统架构和Java类为小型、资源受限的移动信息设备(MID)创建了一个开放的应用程序环境。MIDP应用程序中的基本执行单元叫做 “MIDlet”,它必须继承自javax.microedition.midlet.MIDlet类并实现类中包含的三个抽象方法:startApp(),pauseApp(),destroyApp()。在J2ME手机软件开发中,程序必须至少包含一个MIDlet类,通常初始化用户界面的程序应该放在startApp()中执行 [2]。
3.2.1 网络连接部分设计
J2ME的连接及网络API位于包javax.microedition.io中,这些API接口包含HttpConnection, SocketConection, InputConnection,OutputConnection,ServerSocketConnection等,它们是在通用连接框架上的扩展实现。Connection类是最基本的通用连接类型,只定义了close()一个方法用于关闭连接,而创建连接的操作使用Connector类的open()方法实现。
本设计示例中使用的HTTP协议进行网络通信,HttpConn线程要完成如下工作。
首先,在界面程序的初始化时,将HttpConn线程实例化,并设置线程处于休眠等待状态。考虑到连接上层需要花费一定的等待时间,可用窗体Form和标尺Guage设置一个等待连接界面,之后使用notify()唤醒线程,同时读取预先设置好的URL地址,连接上层服务器。如果连接超时或没有收到上层返回的HttpConnection.HTTP_OK响应,则向用户报告“连接超时”错误。若连接成功,则启动定时器读取数据,装载之后准备将数据上传。上传工作完毕后,线程再次进入休眠状态,直到下一次再用notify()唤醒HttpConn线程[3]。GPRS网络连接的流程如图6所示。 3.2.2 参数监测显示部分设计
这部分实现将采集的气象信息数据显示,处于此界面时,程序定时从数据队列中读取需要显示的部分,可使用Timer与TimerTask类来设计完成这部分功能。Timer类是一个定时器,可以设定成按指定的时间周期或时间来产生信号,TimerTask类代表一个可以被定时器进行时间控制的任务[4]。这样将这两个类产生关联,在产生信号的同时,连带执行TimerTask所定义的工作。本文设计示例中编写的MeterDispTask类同时继承了Canvas、TimerTask类,并在run()方法中实现从数据队列读取数据并调用数据显示功能。通过Timer的schedule()方法设定数据刷新的时间周期,并将它与MeterDispTask关联,一旦设定的时间到,则MeterDispTask中的run()方法就被执行,界面可以刷新显示气象数据信息。Canvas类为低级用户界面,需要实现paint()方法。
数据采集系统的一些参数预设信息需要保留,因此可采用J2ME中提供的记录管理系统RMS(Record Management System)来处理数据参数的持久化问题。RMS为一个小型的数据库管理系统,使用类似表格的简单形式组织信息,并存储起来形成持久化存储,以供应用程序在以后重新启动后继续调用[5]。记录存储系统类在javax.microedition.rms包中,RecordStore类中包含相关应用的方法。界面应用程序在WTK下的仿真器中运行。经启动画面后进入主界面,可以选择相应功能菜单进入。
本系统采用J2ME手机平台和CC2430无线通信模块,针对气象要素数据采集的需求,实现了数据采集通信系统的软硬件的设计。通过手机和ZigBee技术,可以灵活方便地实现对区域内气象参数的采集和传输。在数据采集过程中采用了无线传感器网络技术以及GPRS远程无线移动传输技术,避免了传统气象数据采集布线复杂问题。同时设计中选用的CC2430芯片具有性能高、功耗低的特点,简化了外围接口电路的设计。在测试中,数据可以稳定可靠的传输,能满足应用场合的使用要求。本系统不仅可以应用于气象数据观测中,通过增加使用不同的传感器,也能应用于环境、智能家居等领域。
参考文献
[1] 于宏毅,李鸥.无线传感器网络理论、技术与实现[M].北京:国防工业出版社,2008:2-3.
[2] 卢军,岳希,周辉. J2ME程序设计[M].北京:中国水利水电出版社, 2009:75-90.
[3] 吴考琴.JAVA手机在污染源数据采集中的应用研究.微计算机信息[J].2009,26(5):93-95.
[4] 牟伶俐,刘钢.基于JAVA手机的野外农田数据采集与传 输系统设计[J].农业工程学报,2006,22(11):165-169.
[5] 刘鹏辉.基于GSM和J2ME的无线多点温湿度监控系统的设计与实现[J].激光与红外,2009,39(12):1333-1336.