摘要:針對氣象檢測的需求,提出了一種基于手機(jī)和無線傳感器網(wǎng)絡(luò)的數(shù)據(jù)采集和傳輸方案,詳述了系統(tǒng)設(shè)計的原理與軟硬件的實(shí)現(xiàn)方法。系統(tǒng)以無線通信模塊CC2430為采集節(jié)點(diǎn),利用傳感器采集數(shù)據(jù),通過ZigBee實(shí)現(xiàn)對采集數(shù)據(jù)的無線發(fā)送和接收,并通過J2ME編程在手機(jī)上實(shí)現(xiàn)了氣象參數(shù)的實(shí)時顯示、存儲和遠(yuǎn)程上傳。本設(shè)計具有組網(wǎng)靈活、低成本、功耗小、可靠性高等特點(diǎn)。
近年來,我國氣象災(zāi)害頻發(fā),嚴(yán)重影響人民群眾的生活,尤其在交通方面有著較大的影響。依靠人工觀測來采集氣象數(shù)據(jù)不僅時效性差,而且無法適應(yīng)偏僻、惡劣的環(huán)境條件,不能將采集到的各區(qū)域數(shù)據(jù)實(shí)時上傳給決策控制中心,因而有必要研制一種便攜、低功耗、數(shù)據(jù)通信穩(wěn)定的氣象數(shù)據(jù)采集系統(tǒng)。
隨著傳感器向著智能化、網(wǎng)絡(luò)化方向的發(fā)展,無線網(wǎng)絡(luò)技術(shù)在自動氣象數(shù)據(jù)采集中得到了應(yīng)用。利用ZigBee技術(shù)近距離、組網(wǎng)能力強(qiáng)、成本低及可靠性高的特點(diǎn),使得氣象站中傳感器網(wǎng)絡(luò)部署的有效時間得到延長,增強(qiáng)了網(wǎng)絡(luò)的實(shí)用性,測量節(jié)點(diǎn)具有更長的生命周期。ZigBee技術(shù)自有的無線電標(biāo)準(zhǔn),以接力的方式在多個測量節(jié)點(diǎn)之間相互協(xié)調(diào)實(shí)現(xiàn)通信,通信效率非常高,滿足了交通氣象參數(shù)采集傳輸?shù)男枰猍1]。同時隨著移動通信發(fā)展的寬帶化、數(shù)據(jù)化、多應(yīng)用化,手機(jī)作用的領(lǐng)域已經(jīng)擴(kuò)展到人們生活的很多方面。因此,將手機(jī)移動監(jiān)測和ZigBee無線傳輸網(wǎng)絡(luò)結(jié)合起來,并利用手機(jī)所具有的GPRS通信能力研制氣象數(shù)據(jù)采集傳輸系統(tǒng)具有一定的意義。
1 系統(tǒng)設(shè)計與實(shí)現(xiàn)原理
本設(shè)計利用手機(jī)、ZigBee無線傳輸網(wǎng)絡(luò)、氣象數(shù)據(jù)采集檢測等設(shè)備開發(fā)出一個能實(shí)現(xiàn)氣象數(shù)據(jù)采集、存儲并實(shí)時上傳數(shù)據(jù)到上位服務(wù)器端的數(shù)據(jù)采集系統(tǒng)。其中手機(jī)負(fù)責(zé)接收來自ZigBee網(wǎng)絡(luò)的數(shù)據(jù),并對數(shù)據(jù)做出相應(yīng)的判斷和處理;ZigBee無線傳輸網(wǎng)絡(luò)負(fù)責(zé)手機(jī)和數(shù)據(jù)采集檢測部分的通信;氣象數(shù)據(jù)采集檢測部分負(fù)責(zé)所在區(qū)域內(nèi)氣象參數(shù)的檢測、分析及處理。整個系統(tǒng)工作原理如圖1所示。
系統(tǒng)的手機(jī)開發(fā)平臺采用MTK架構(gòu)套件,它集成了32位嵌入式ARM7處理器,支持GPRS、GSM消息傳輸,并具有128個引腳外部擴(kuò)展接口,可以連接各種功能外設(shè),還支持用J2ME Java來控制硬件。通過在此手機(jī)平臺嵌入無線ZigBee射頻模塊,實(shí)現(xiàn)系統(tǒng)主控制器和各網(wǎng)絡(luò)子節(jié)點(diǎn)的數(shù)據(jù)采集傳輸。
數(shù)據(jù)采集系統(tǒng)的硬件結(jié)構(gòu)圖如圖2所示。
無線網(wǎng)絡(luò)化傳感器RFD(精簡功能器件)模塊采集數(shù)據(jù)信息,并通過ZigBee通信協(xié)議傳輸?shù)紽FD(全功能器件)模塊;FFD模塊將數(shù)據(jù)信息做簡單處理、編碼打包后通過串口將數(shù)據(jù)上傳到手機(jī)平臺;手機(jī)數(shù)據(jù)處理功能程序?qū)庀髷?shù)據(jù)進(jìn)行進(jìn)一步的補(bǔ)充描述,在手機(jī)上實(shí)現(xiàn)氣象參數(shù)的顯示、存儲,并可通過手機(jī)的GPRS功能模塊以文本形式將數(shù)據(jù)實(shí)時上傳到服務(wù)器端。服務(wù)器端接收到現(xiàn)場數(shù)據(jù)進(jìn)行進(jìn)一步的處理后,提供決策支持,采取預(yù)防措施。
所采集的氣象數(shù)據(jù)包括溫度、濕度、風(fēng)速、降水、能見度、大氣壓力等。
2 系統(tǒng)硬件設(shè)計
系統(tǒng)的硬件主要由基于CC2430的數(shù)據(jù)采集模塊和手機(jī)平臺兩部分組成。手機(jī)平臺要實(shí)現(xiàn)的硬件設(shè)計主要有:手機(jī)與CC2430的串口通信電路及GPIO電源控制設(shè)計;數(shù)據(jù)采集檢測部分主要由CC2430芯片、傳感器及外圍部件構(gòu)成。
2.1 數(shù)據(jù)采集模塊設(shè)計
數(shù)據(jù)采集模塊使用CC2430配合氣象傳感器實(shí)現(xiàn)數(shù)據(jù)的采集、傳輸,硬件連接圖如圖3所示。
CC2430節(jié)點(diǎn)模塊主要由CC2430芯片和傳感器構(gòu)成。ZigBee是一種基于LR-WPAN的雙向無線通信技術(shù)標(biāo)準(zhǔn)。可以工作在2.4 GHz的ISM頻段,數(shù)據(jù)速率可達(dá)到250 kb/s。CC2430系統(tǒng)芯片就是以ZigBee技術(shù)為基礎(chǔ)的2.4 GHz射頻系統(tǒng)單芯片。以51單片機(jī)為核心,集成了收發(fā)通道,具有模數(shù)轉(zhuǎn)換器、21個可用數(shù)字IO接口,可以與多種參數(shù)傳感器進(jìn)行直接連接。CC2430工作電流損耗為27 mA,適合本系統(tǒng)的工作低功耗要求。CC2430將氣象傳感器采集的數(shù)據(jù)經(jīng)模數(shù)轉(zhuǎn)換及數(shù)據(jù)處理后,將結(jié)果通過ZigBee無線傳感器網(wǎng)絡(luò)發(fā)送出去,以供手機(jī)接收使用。
CC2430氣象數(shù)據(jù)采集傳輸模塊如圖4所示。
2.2 串口通信接口設(shè)計
需要實(shí)現(xiàn)手機(jī)與CC2430模塊的數(shù)據(jù)通信。將CC2430制作為符合標(biāo)準(zhǔn)的擴(kuò)展板,手機(jī)通過串口2與CC2430擴(kuò)展板連接。應(yīng)用的基本框架如圖5所示。在開發(fā)手機(jī)的UART的發(fā)送(UTXD)和接收腳(URXD),分別與CC2430的RXD、TXD引腳連接,構(gòu)成兩者之間的數(shù)據(jù)傳輸。
3 平臺界面軟件設(shè)計與實(shí)現(xiàn)
MTK手機(jī)平臺可使用C語言、JAVA語言進(jìn)行開發(fā),其中使用JAVA語言開發(fā)的軟件具有通用性強(qiáng)、方便移植、開發(fā)周期短等優(yōu)點(diǎn)。本文平臺界面設(shè)計采用Sun J2ME Wireless Toolkit(WTK)開發(fā)工具配合EclipseME開發(fā)組件來設(shè)計。將實(shí)現(xiàn)一個基于J2ME/MIDP的客戶前端,利用GPRS建立數(shù)據(jù)傳輸網(wǎng)絡(luò)的氣象數(shù)據(jù)采集系統(tǒng)。
3.1 界面程序設(shè)計分析
本設(shè)計的客戶端程序整體上參照MVC模式設(shè)計,將界面、數(shù)據(jù)、控制分為不同的模塊,實(shí)現(xiàn)的主要功能有參數(shù)設(shè)置、串口監(jiān)視、GPRS數(shù)據(jù)上傳和參數(shù)監(jiān)測界面四大部分,它們分別基于J2ME不同包類庫和支持JNI操作的包派生而成。
(1)參數(shù)設(shè)置功能部分: 用來實(shí)現(xiàn)手機(jī)平臺功能的設(shè)置管理,如設(shè)置GPRS參數(shù)、設(shè)置系統(tǒng)時間、背光顯示、ZigBee芯片可用信道等,可將用戶設(shè)置的信息使用MIDP中的RMS系統(tǒng)來保存在本地數(shù)據(jù)庫中。這一功能部分基于LIST部件類擴(kuò)展設(shè)計,其中的參數(shù)類型為EXCLUSIVE,即每次只能選擇列表中的單個項目。
(2)串口監(jiān)視部分: 當(dāng)界面切換到氣象數(shù)據(jù)采集界面時,通過任務(wù)接口定時讀寫串口,查看CC2430是否有數(shù)據(jù)上傳,并將數(shù)據(jù)存入數(shù)據(jù)隊列中,供顯示界面調(diào)用。實(shí)現(xiàn)這部分功能需要實(shí)現(xiàn)程序線程Thread,Thread有兩種方法來創(chuàng)建線程,一個是定義繼承Thread類的子類,另一個是實(shí)現(xiàn)Runnable接口。本部分中主要使用實(shí)現(xiàn)Runnable接口這種方法。
(3) GPRS數(shù)據(jù)上傳部分: 將CC2430上傳來的數(shù)據(jù)以文本格式或其他形式發(fā)送到上一層的決策控制中心。SUNW公司對MMS和SMS提供了JSR205和JSR102支持。其中定義的框架包含無線消息的可用API,實(shí)現(xiàn)了無線通信的高級抽象,將傳輸層完全隱藏,方便了設(shè)計。
(4)參數(shù)監(jiān)測界面: 用來顯示傳感器采集到的氣象參數(shù)數(shù)據(jù),顯示可以配以文本、圖片等信息,需要顯示的氣象參數(shù)有溫度、濕度、風(fēng)速、能見度、降水量、雪深、大氣壓等。界面采用Canvas類編程設(shè)計。此界面還可根據(jù)要求添加報警等預(yù)警功能,如降水量達(dá)到某一預(yù)定值,則給予聲音、文字等預(yù)警顯示。
3.2 設(shè)計與實(shí)現(xiàn)
J2ME的MIDP(Mobile Information Device Profile)包含的系統(tǒng)架構(gòu)和Java類為小型、資源受限的移動信息設(shè)備(MID)創(chuàng)建了一個開放的應(yīng)用程序環(huán)境。MIDP應(yīng)用程序中的基本執(zhí)行單元叫做 “MIDlet”,它必須繼承自javax.microedition.midlet.MIDlet類并實(shí)現(xiàn)類中包含的三個抽象方法:startApp(),pauseApp(),destroyApp()。在J2ME手機(jī)軟件開發(fā)中,程序必須至少包含一個MIDlet類,通常初始化用戶界面的程序應(yīng)該放在startApp()中執(zhí)行 [2]。
3.2.1 網(wǎng)絡(luò)連接部分設(shè)計
J2ME的連接及網(wǎng)絡(luò)API位于包javax.microedition.io中,這些API接口包含HttpConnection, SocketConection, InputConnection,OutputConnection,ServerSocketConnection等,它們是在通用連接框架上的擴(kuò)展實(shí)現(xiàn)。Connection類是最基本的通用連接類型,只定義了close()一個方法用于關(guān)閉連接,而創(chuàng)建連接的操作使用Connector類的open()方法實(shí)現(xiàn)。
本設(shè)計示例中使用的HTTP協(xié)議進(jìn)行網(wǎng)絡(luò)通信,HttpConn線程要完成如下工作。
首先,在界面程序的初始化時,將HttpConn線程實(shí)例化,并設(shè)置線程處于休眠等待狀態(tài)?紤]到連接上層需要花費(fèi)一定的等待時間,可用窗體Form和標(biāo)尺Guage設(shè)置一個等待連接界面,之后使用notify()喚醒線程,同時讀取預(yù)先設(shè)置好的URL地址,連接上層服務(wù)器。如果連接超時或沒有收到上層返回的HttpConnection.HTTP_OK響應(yīng),則向用戶報告“連接超時”錯誤。若連接成功,則啟動定時器讀取數(shù)據(jù),裝載之后準(zhǔn)備將數(shù)據(jù)上傳。上傳工作完畢后,線程再次進(jìn)入休眠狀態(tài),直到下一次再用notify()喚醒HttpConn線程[3]。GPRS網(wǎng)絡(luò)連接的流程如圖6所示。
3.2.2 參數(shù)監(jiān)測顯示部分設(shè)計
這部分實(shí)現(xiàn)將采集的氣象信息數(shù)據(jù)顯示,處于此界面時,程序定時從數(shù)據(jù)隊列中讀取需要顯示的部分,可使用Timer與TimerTask類來設(shè)計完成這部分功能。Timer類是一個定時器,可以設(shè)定成按指定的時間周期或時間來產(chǎn)生信號,TimerTask類代表一個可以被定時器進(jìn)行時間控制的任務(wù)[4]。這樣將這兩個類產(chǎn)生關(guān)聯(lián),在產(chǎn)生信號的同時,連帶執(zhí)行TimerTask所定義的工作。本文設(shè)計示例中編寫的MeterDispTask類同時繼承了Canvas、TimerTask類,并在run()方法中實(shí)現(xiàn)從數(shù)據(jù)隊列讀取數(shù)據(jù)并調(diào)用數(shù)據(jù)顯示功能。通過Timer的schedule()方法設(shè)定數(shù)據(jù)刷新的時間周期,并將它與MeterDispTask關(guān)聯(lián),一旦設(shè)定的時間到,則MeterDispTask中的run()方法就被執(zhí)行,界面可以刷新顯示氣象數(shù)據(jù)信息。Canvas類為低級用戶界面,需要實(shí)現(xiàn)paint()方法。
數(shù)據(jù)采集系統(tǒng)的一些參數(shù)預(yù)設(shè)信息需要保留,因此可采用J2ME中提供的記錄管理系統(tǒng)RMS(Record Management System)來處理數(shù)據(jù)參數(shù)的持久化問題。RMS為一個小型的數(shù)據(jù)庫管理系統(tǒng),使用類似表格的簡單形式組織信息,并存儲起來形成持久化存儲,以供應(yīng)用程序在以后重新啟動后繼續(xù)調(diào)用[5]。記錄存儲系統(tǒng)類在javax.microedition.rms包中,RecordStore類中包含相關(guān)應(yīng)用的方法。界面應(yīng)用程序在WTK下的仿真器中運(yùn)行。經(jīng)啟動畫面后進(jìn)入主界面,可以選擇相應(yīng)功能菜單進(jìn)入。
本系統(tǒng)采用J2ME手機(jī)平臺和CC2430無線通信模塊,針對氣象要素數(shù)據(jù)采集的需求,實(shí)現(xiàn)了數(shù)據(jù)采集通信系統(tǒng)的軟硬件的設(shè)計。通過手機(jī)和ZigBee技術(shù),可以靈活方便地實(shí)現(xiàn)對區(qū)域內(nèi)氣象參數(shù)的采集和傳輸。在數(shù)據(jù)采集過程中采用了無線傳感器網(wǎng)絡(luò)技術(shù)以及GPRS遠(yuǎn)程無線移動傳輸技術(shù),避免了傳統(tǒng)氣象數(shù)據(jù)采集布線復(fù)雜問題。同時設(shè)計中選用的CC2430芯片具有性能高、功耗低的特點(diǎn),簡化了外圍接口電路的設(shè)計。在測試中,數(shù)據(jù)可以穩(wěn)定可靠的傳輸,能滿足應(yīng)用場合的使用要求。本系統(tǒng)不僅可以應(yīng)用于氣象數(shù)據(jù)觀測中,通過增加使用不同的傳感器,也能應(yīng)用于環(huán)境、智能家居等領(lǐng)域。