劉榮 周杰 杜景林
摘要:設(shè)計了一種基于無線傳感器網(wǎng)絡(luò)的農(nóng)田監(jiān)測系統(tǒng)的網(wǎng)關(guān),通過在以PXA270為內(nèi)核的嵌入式硬件平臺上采用Linux操作系統(tǒng)作為應(yīng)用程序的運行環(huán)境,實現(xiàn)了農(nóng)田信息的采集、傳輸和處理功能。并且通過在嵌入式網(wǎng)關(guān)之間搭建Ad Hoc網(wǎng)絡(luò),實現(xiàn)了農(nóng)田監(jiān)測信息在網(wǎng)關(guān)之間的多跳傳輸功能,從而為農(nóng)田的遠程監(jiān)控提供了一種可靠的解決方案。
關(guān)鍵詞:網(wǎng)關(guān);無線傳感網(wǎng);嵌入式;監(jiān)測
中圖分類號:TP393;S126 文獻標識碼:B 文章編號:0439-8114(2013)07-1672-04
無線傳感器網(wǎng)絡(luò)是繼計算機和互聯(lián)網(wǎng)之后世界信息產(chǎn)業(yè)的第三次浪潮,已成為新一輪全球經(jīng)濟和科技發(fā)展的戰(zhàn)略焦點。隨著研究的不斷深入,無線傳感器網(wǎng)絡(luò)會逐漸融入人們的日常生活和社會生活活動的各個領(lǐng)域。所以把無線傳感器網(wǎng)絡(luò)技術(shù)應(yīng)用到農(nóng)田監(jiān)測方面對農(nóng)業(yè)事業(yè)的現(xiàn)代化發(fā)展具有重大的推進作用。
而對嵌入式網(wǎng)關(guān)的開發(fā)是構(gòu)建整個農(nóng)田監(jiān)測系統(tǒng)至關(guān)重要的一步,直接影響了監(jiān)測系統(tǒng)的性能。網(wǎng)關(guān)類似于一種轉(zhuǎn)換器,具有效率高、響應(yīng)實時、可靠性高、功耗低、抗干擾能力強等特點, 同時具有很好的通用性。對于農(nóng)田監(jiān)測系統(tǒng)來講, 它是連接無線傳感器網(wǎng)絡(luò)與互聯(lián)網(wǎng)的橋梁。而目前的IP網(wǎng)關(guān)協(xié)議雖然具有壽命長、穩(wěn)定性好、可擴展性強等優(yōu)點, 但已經(jīng)不能滿足集成電路芯片小型化、低功耗、低速率、高帶寬利用率的傳輸要求。因此,盡快開發(fā)一種低功耗、能夠滿足探測系統(tǒng)要求、適合農(nóng)田監(jiān)測的網(wǎng)關(guān)是目前亟待解決的問題[1,2]。
1 農(nóng)田監(jiān)測系統(tǒng)結(jié)構(gòu)
基于無線傳感器網(wǎng)絡(luò)的農(nóng)田監(jiān)測系統(tǒng)主要由無線傳感器網(wǎng)絡(luò)、網(wǎng)關(guān)和信息展示平臺組成。無線傳感器網(wǎng)絡(luò)是由各種能夠采集農(nóng)田監(jiān)測要素的傳感器節(jié)點通過網(wǎng)絡(luò)協(xié)議(例如Zigbee和Tinyos)而形成的一個或者多個無線網(wǎng)絡(luò)。信息展示平臺是一種可以向用戶直接提供監(jiān)測區(qū)域數(shù)據(jù)的應(yīng)用系統(tǒng)。而網(wǎng)關(guān)在信息展示平臺和無線傳感器網(wǎng)絡(luò)之間則扮演著橋梁的角色,使多種異構(gòu)的無線傳感器網(wǎng)絡(luò)能夠直接與信息展示平臺進行交互。各個監(jiān)測區(qū)域都會擁有一個與外部設(shè)備通信的匯聚節(jié)點,無論無線傳感器網(wǎng)絡(luò)采用星型的或者網(wǎng)狀的拓撲結(jié)構(gòu),匯聚節(jié)點都會匯聚整個監(jiān)測區(qū)域的數(shù)據(jù),通過串口傳遞給相應(yīng)的網(wǎng)關(guān),并且各個網(wǎng)關(guān)通過Ad Hoc網(wǎng)絡(luò)互相連接。網(wǎng)關(guān)通過3G網(wǎng)絡(luò)與農(nóng)田觀測中心的信息展示平臺直接通信,在網(wǎng)絡(luò)基礎(chǔ)設(shè)施條件允許的情況下,也可以通過以太網(wǎng)或者WIFI連接觀測中心。觀測中心得到相應(yīng)的農(nóng)田監(jiān)測數(shù)據(jù)后以Web的方式展示,這樣用戶就可以順利地通過PC、手機或者其他手持移動設(shè)備瀏覽監(jiān)測區(qū)域的信息。圖1為農(nóng)田監(jiān)測系統(tǒng)的總體結(jié)構(gòu)圖[3-5]。
2 網(wǎng)關(guān)的硬件設(shè)計
網(wǎng)關(guān)系統(tǒng)的硬件模塊如圖2。主要由處理器、存儲器、無線射頻收發(fā)模塊、無線網(wǎng)卡模塊、電源模塊、JTAG模塊、串口模塊、USB模塊、以太網(wǎng)接口模塊組成。
ARM處理器采用PXA270 CPU,該CPU是Intel開發(fā)的高度集成的片上系統(tǒng)微處理器,結(jié)合了Intel XScale技術(shù),具有動態(tài)電壓調(diào)整、動態(tài)頻率調(diào)整以及成熟的電源管理特點。具體型號采用FW(NH)PXA270C5C520, 主頻為520 MHz。
存儲器模塊主要由FLASH存儲器和內(nèi)存模塊組成。FLASH采用三星公司的K9F1208UDM NAND FASH,內(nèi)存SDRAM部分采用Hynix Semiconductor公司的HY57V561620芯片。
以太網(wǎng)接口模塊采用SMSC公司的10 M/100 M的以太網(wǎng)芯片LAN91C111/LAN91C113,主要負責(zé)目標機從宿主機下載應(yīng)用程序。串口模塊用于連接射頻收發(fā)模塊。JTAG模塊主要用于用戶進行JTAG 調(diào)試。USB模塊用來連接USB設(shè)備以及下載Linux內(nèi)核等功能。
無線網(wǎng)關(guān)模塊采用的是型號為gspi8686的WIFI無線網(wǎng)卡,主要負責(zé)在網(wǎng)關(guān)板之間建立Ad Hoc網(wǎng)絡(luò),使傳感器采集的數(shù)據(jù)能夠通過多跳的方式傳遞給遠距離的服務(wù)器。
射頻無線模塊采用了TI公司的CC2430核心板,該核心板主要由一片集成了8051單片機和射頻模塊的CC2430芯片和天線組成。CC2430內(nèi)含的8051單片機具有高性能、低功耗的特性,同時具有128 kB可編程Flash和8 kB的RAM, 并集成了符合IEEE802.15.4標準的2.4 GHz RF無線電收發(fā)機,具有優(yōu)良的無線接收靈敏度和強大的抗干擾能力。
3 網(wǎng)關(guān)的操作系統(tǒng)平臺設(shè)計
Linux操作系統(tǒng)開放源代碼,可以剪裁內(nèi)核,并且已經(jīng)在Motorola、NEC、ARM等多種硬件平臺上穩(wěn)定、高效運行,具有強大的網(wǎng)絡(luò)和卓越的文件系統(tǒng)支持功能等優(yōu)點。所以系統(tǒng)選擇Linux操作系統(tǒng),并根據(jù)具體應(yīng)用進行裁剪和交叉編譯,然后形成ARM可執(zhí)行文件,借助串口和網(wǎng)絡(luò)口下載到FLASH之中。構(gòu)建適合網(wǎng)關(guān)的Linux操作系統(tǒng)必須進行Bootloader的移植、內(nèi)核裁剪以及文件系統(tǒng)的制作。只有在操作系統(tǒng)平臺建立之后,應(yīng)用程序才能在此操作平臺上運行來實現(xiàn)整個網(wǎng)關(guān)的主要工作。應(yīng)用程序是在安裝Linux操作系統(tǒng)發(fā)行版的虛擬機上進行開發(fā)的,通過交叉編譯器對應(yīng)用程序的編譯生成適合在目標機上運行的程序。最終通過NFS服務(wù)進行應(yīng)用程序的下載。
Bootloader是系統(tǒng)啟動過程中執(zhí)行的第一個軟件,它與網(wǎng)關(guān)板有著高度的依存關(guān)系。Bootloader在完成底層硬件初始化工作后會直接跳到與硬件架構(gòu)無關(guān)的start_kernel()函數(shù)執(zhí)行,此函數(shù)會初始化高層內(nèi)核功能、安裝根文件系統(tǒng),以及啟動init進程。
內(nèi)核是操作系統(tǒng)的中心組件。使用內(nèi)核的目的是希望以一致的方式管理硬件,以及為用戶軟件提供高層抽象層。正如其他的類Unix內(nèi)核那樣,Linux會驅(qū)動設(shè)備、管理I/O的存取、調(diào)度進程、共享存儲空間、管理信號的配送以及處理其他的管理工作。
文件系統(tǒng)是指在物理設(shè)備上的任何文件組織和目錄,它構(gòu)成了Linux系統(tǒng)上所有數(shù)據(jù)的基礎(chǔ)。該網(wǎng)關(guān)選用JFFS2作為文件系統(tǒng)。
在Linux中設(shè)備驅(qū)動程序的設(shè)計和使用一般有兩種方式可供選擇。一種是把設(shè)備驅(qū)動程序在編譯內(nèi)核時直接編譯進去,另一種是以模塊的方式動態(tài)地插進內(nèi)核。設(shè)計選用的是第二種方式。
4 數(shù)據(jù)的傳輸設(shè)計與實現(xiàn)
網(wǎng)關(guān)針對具體的應(yīng)用場合和用戶,所以采用了C/S結(jié)構(gòu)來對應(yīng)用程序進行設(shè)計和開發(fā)。當(dāng)服務(wù)器與客戶端建立好通信之后,首先由服務(wù)器向客戶端發(fā)送服務(wù)請求,客戶端接到請求命令立即向服務(wù)器返回請求響應(yīng)包,一旦服務(wù)器接收到響應(yīng)包并解析出正確的內(nèi)容就會向客戶端發(fā)送數(shù)據(jù)查詢的命令,客戶端接收到數(shù)據(jù)查詢命令之后對命令包進行解析,根據(jù)數(shù)據(jù)包的解析內(nèi)容分析是實時數(shù)據(jù)查詢還是歷史數(shù)據(jù)查詢。如果是歷史數(shù)據(jù)查詢,那么客戶端會直接提取數(shù)據(jù)庫中的采集信息并發(fā)送給服務(wù)器,如果是實時數(shù)據(jù)查詢,那么客戶端就會實時地接收無線傳感網(wǎng)中協(xié)調(diào)器的數(shù)據(jù)并把接收到的數(shù)據(jù)發(fā)送給服務(wù)器。整個工作流程如圖3。
4.1 數(shù)據(jù)接收程序的設(shè)計
數(shù)據(jù)庫采用了程序方式直接驅(qū)動的SQLite數(shù)據(jù)庫。SQLite是一款輕型數(shù)據(jù)庫,設(shè)計目標主要針對嵌入式系統(tǒng)。其占用資源少,一般只需要幾百kB內(nèi)存。它能夠很好地支持Linux操作系統(tǒng)。SQLite雖然很小巧,但是支持的SQL語句不會遜色于其他開源數(shù)據(jù)庫。SQLite不但支持命令方式操作數(shù)據(jù)庫,而且為實現(xiàn)對數(shù)據(jù)庫的管理提供了豐富的API接口函數(shù),包括創(chuàng)建數(shù)據(jù)庫、刪除數(shù)據(jù)庫、創(chuàng)建表、刪除表、插入數(shù)據(jù)、刪除數(shù)據(jù)、查找數(shù)據(jù)等。
在網(wǎng)關(guān)中數(shù)據(jù)接收程序主要任務(wù)是把協(xié)調(diào)器上傳的數(shù)據(jù)存儲到數(shù)據(jù)庫。數(shù)據(jù)接收程序的流程如圖4所示。主要包括串口參數(shù)的配置、串口接收線程的建立、串口發(fā)送線程的建立。串口參數(shù)的配置主要包括波特率設(shè)置、奇偶校驗位和停止位的設(shè)置。串口接收數(shù)據(jù)線程負責(zé)把協(xié)調(diào)器上傳的數(shù)據(jù)存入到串口緩沖區(qū),串口主線程負責(zé)把緩沖區(qū)的數(shù)據(jù)解析后存儲到數(shù)據(jù)庫。
4.2 網(wǎng)關(guān)與服務(wù)器之間的網(wǎng)絡(luò)程序設(shè)計
網(wǎng)關(guān)采用了可靠的、面向連接的TCP協(xié)議的網(wǎng)絡(luò)程序設(shè)計。程序的工作流程如圖5所示。Socket()函數(shù)用于創(chuàng)建Socket;Bind()函數(shù)用于將Socket尋址結(jié)構(gòu)綁定到其所建立的Socket, 這樣當(dāng)有數(shù)據(jù)包到達時,Linux內(nèi)核會將這個數(shù)據(jù)包讓給其綁定的Socket來處理;Listen()函數(shù)用來監(jiān)聽、等待客戶端的連接請求;Connect()函數(shù)是客戶端使用的函數(shù),當(dāng)客戶端建立好Socket后會調(diào)用這個函數(shù)向服務(wù)器請求連接;Read()和write()函數(shù)是用來進行數(shù)據(jù)的讀寫,在本網(wǎng)關(guān)中客戶端的read()函數(shù)一方面接收串口的數(shù)據(jù)輸入用來提供服務(wù)器的實時數(shù)據(jù)查詢功能,另一方面接收數(shù)據(jù)庫信息的輸入用來完成歷史數(shù)據(jù)的查詢功能。
4.3 Ad Hoc網(wǎng)絡(luò)的搭建
Ad Hoc網(wǎng)絡(luò)是一種新穎的計算機網(wǎng)絡(luò),其自身的獨特性賦予其巨大的發(fā)展前景。這種無線移動網(wǎng)絡(luò)不依賴固定的網(wǎng)絡(luò)設(shè)施,在有限的無線通信帶寬和主機能源的情況下,通過系統(tǒng)主機自由地組網(wǎng),建立動態(tài)變化的網(wǎng)絡(luò)結(jié)構(gòu)。網(wǎng)關(guān)系統(tǒng)中通過在嵌入式網(wǎng)關(guān)之間搭建Ad Hoc網(wǎng)絡(luò)來傳遞數(shù)據(jù)到遠距離的服務(wù)器。目前所提出的Ad Hoc網(wǎng)絡(luò)的多路徑路由協(xié)議基本上都是在DSR協(xié)議或AODV協(xié)議的基礎(chǔ)上改進而來的。本網(wǎng)關(guān)采用了AODV的路由協(xié)議進行Ad Hoc網(wǎng)絡(luò)的搭建。搭建步驟為:第一步移植AODV路由協(xié)議,本網(wǎng)絡(luò)選擇了aodv-uu-0.9.5作為路由協(xié)議,主要是通過交叉編譯器編譯出aodv-arm.ko和aodv-arm;第二步通過ifconfig eth1 up,iwconfig eth1 mode Ad-Hoc,iwconfig eth1 essid 服務(wù)區(qū)別號這幾條命令來配置無線網(wǎng)卡工作模式為Ad Hoc模式;第三步把aodv-arm.ko模塊動態(tài)地插進網(wǎng)關(guān)的內(nèi)核;第四步執(zhí)行aodv-arm路由協(xié)議。這幾個關(guān)鍵步驟完成之后整個的Ad Hoc網(wǎng)絡(luò)就搭建好了。
5 小結(jié)
所設(shè)計的基于無線傳感器網(wǎng)絡(luò)的農(nóng)田監(jiān)測系統(tǒng)的網(wǎng)關(guān)完成了多種異構(gòu)的無線傳感器網(wǎng)絡(luò)的無縫隙連接工作,屏蔽了底層無線傳感器網(wǎng)絡(luò)的具體網(wǎng)絡(luò)結(jié)構(gòu),實現(xiàn)了多個無線傳感器網(wǎng)絡(luò)和處于外網(wǎng)的信息展示平臺的實時通信功能。并且根據(jù)具體的嵌入式平臺對aodv路由協(xié)議進行了移植探索,最終也成功地在中間件的各個子系統(tǒng)之間搭建了一種無中心的自主的Ad Hoc網(wǎng)絡(luò),為農(nóng)田監(jiān)測數(shù)據(jù)的遠距離傳輸提供了一種可靠的解決方案。
參考文獻:
[1] 羅錫文,臧 英,周志艷.精細農(nóng)業(yè)中農(nóng)情信息采集技術(shù)的研究進展[J].農(nóng)業(yè)工程學(xué)報,2006,22(1):167-173.
[2] 石復(fù)習(xí),鄒志勇. 農(nóng)業(yè)環(huán)境參數(shù)檢測WSN網(wǎng)關(guān)設(shè)計[J].安徽農(nóng)業(yè)科學(xué),2010,38(23):12923-12924.
[3] 宋先居,張宗灝,趙體召. 地面氣象觀測數(shù)據(jù)實時傳輸及質(zhì)量控制程序?qū)崿F(xiàn)[J].氣象科技,2011,39(3):344-347.
[4] 唐慧強, 莊安榮.一種氣象數(shù)據(jù)采集傳輸系統(tǒng)的設(shè)計[J].電子技術(shù)應(yīng)用,2011,37(3):82-85.
[5] 崔炳儉,董衛(wèi)紅,黃躍青,等.無線傳感器網(wǎng)絡(luò)在氣象領(lǐng)域的應(yīng)用與研究[J].環(huán)境科學(xué)與技術(shù),2010,33(6E):55-57.