文獻標識碼: B
文章編號: 0258-7998(2011)03-0082-04
近年來,我國氣象災害頻發,嚴重影響人民群眾的生活,尤其在交通方面有著較大的影響。依靠人工觀測來采集氣象數據不僅時效性差,而且無法適應偏僻、惡劣的環境條件,不能將采集到的各區域數據實時上傳給決策控制中心,因而有必要研制一種便攜、低功耗、數據通信穩定的氣象數據采集系統。
隨著傳感器向著智能化、網絡化方向的發展,無線網絡技術在自動氣象數據采集中得到了應用。利用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.