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