摘 要: 詳細(xì)闡述了基于無線傳感器硬件搭建無線傳感器網(wǎng)絡(luò)實驗平臺并利用TinyOS進(jìn)行傳感器硬件通信驗證的實現(xiàn)方案。
關(guān)鍵詞: 無線傳感器網(wǎng)絡(luò) 實驗平臺 傳感器節(jié)點
集成了傳感器、微機電系統(tǒng)和網(wǎng)絡(luò)三大技術(shù)而形成的無線傳感器網(wǎng)絡(luò)是一種全新的信息獲取和處理技術(shù),具有十分廣闊的應(yīng)用前景。
無線傳感器網(wǎng)絡(luò)是一種特殊的無線自組網(wǎng),它由成千上萬甚至數(shù)以百計的“沙粒”(motes)構(gòu)成。“沙粒”即無線傳感器網(wǎng)絡(luò)節(jié)點,大小相當(dāng)于給它提供能量的2節(jié)AA電池。它還包含一個微型處理器,很少的內(nèi)存以及用于感應(yīng)光、溫度、壓力、熱量等的傳感器,此外還有一個微型無線電收發(fā)機,用來接收和發(fā)送無線電信號。無線傳感器網(wǎng)絡(luò)被部署在應(yīng)用現(xiàn)場后能夠?qū)崟r感知和采集各種監(jiān)測對象的信息,并對其進(jìn)行處理,最后傳送到用戶。它在國防軍事、反恐抗災(zāi)、環(huán)境監(jiān)測、交通管理、工程安全、醫(yī)療衛(wèi)生等領(lǐng)域都將得到廣泛的應(yīng)用,必將引發(fā)信息感知和采集的革命[1]。
典型的無線傳感器網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。此網(wǎng)絡(luò)由傳感器節(jié)點、基站(Base Station)、Internet或通信衛(wèi)星、任務(wù)管理節(jié)點(Task Manager Node)等部分構(gòu)成。傳感器節(jié)點通過飛行器撒播、人工埋置和火箭彈射等方式散布在指定的感知區(qū)域內(nèi),每個節(jié)點都可以收集數(shù)據(jù),并通過“多跳”路由方式把數(shù)據(jù)傳送到基站。基站也可用同樣的方式將信息發(fā)送給各節(jié)點。基站直接與Internet或通信衛(wèi)星相連,通過Internet或通信衛(wèi)星實現(xiàn)任務(wù)管理節(jié)點(即觀察者)與傳感器之間的通信[2]。
無線傳感器網(wǎng)絡(luò)的廣闊應(yīng)用前景引起了學(xué)術(shù)界和工業(yè)界的高度重視。由于各方面條件的限制,目前針對無線傳感器網(wǎng)絡(luò)的研究大多基于模擬環(huán)境(如NS-2),然而在實際網(wǎng)絡(luò)系統(tǒng)的研究中會遇到在模擬環(huán)境下無法預(yù)料的問題。因此,無線傳感器網(wǎng)絡(luò)實驗平臺的實現(xiàn)在整個傳感器網(wǎng)絡(luò)研究中占據(jù)非常重要的作用。為此本文主要介紹了如何搭建無線傳感器網(wǎng)絡(luò)實驗平臺,包括利用TinyOS在傳感器硬件上進(jìn)行測試,保證傳感器節(jié)點間無線通信正常,這些都是實現(xiàn)傳感器應(yīng)用實例的前提工作。本文將重點介紹如何利用Crossbow公司的無線傳感器產(chǎn)品來實現(xiàn)無線傳感器網(wǎng)絡(luò)實驗平臺和基于此實驗平臺的節(jié)點驗證;Crossbow公司的5040系列硬件產(chǎn)品;TinyOS系統(tǒng)和傳感器硬件驗證;將來的研究方向。
1 硬 件
Crossbow公司是全球第一家提供Smart Dust無線傳感器的公司。該公司提供了一系列傳感器和相關(guān)硬件,其中大部分產(chǎn)品是即插即用的。硬件產(chǎn)品上的所有部件都支持TinyOS操作系統(tǒng)(此系統(tǒng)是美國加州大學(xué)伯克利分校專為嵌入式系統(tǒng)開發(fā)的微型操作系統(tǒng))。
實驗平臺硬件采用的是MOTE-KIT 5040系列。它包括4個MICA2 Processor/Radio Boards、4個MICA2DOT Boards、3個MTS310 Sensor Boards、2個MDA500 MICA2DOT 原型和數(shù)據(jù)采集板以及1個MIB510編程接口板。
MOTE-KIT5040系列的主要部件是MICA2。它是早期產(chǎn)品MICA的改進(jìn),采用的TinyOS操作系統(tǒng)是一個小型、開源、節(jié)能的軟件操作系統(tǒng),支持大規(guī)模、自配置的無線傳感器網(wǎng)絡(luò),其源代碼和軟件開發(fā)工具可以在網(wǎng)上下載。MICA2采用的硬件平臺為MPR400CB,MPR400CB采用了Atmel Atmega 128L微控制器,該控制器從其自帶的ROM中運行TinyOS操作系統(tǒng)??梢岳镁幊探涌诎鍖ζ溥M(jìn)行開發(fā)。MICA2具有許多優(yōu)良的特性:
?、偈堑谌⌒椭悄軣o線傳感器節(jié)點。
?、趦?nèi)嵌TinyOS操作系統(tǒng),提供了前所未有的通信和處理能力。
?、墼谛菝吣J?,AA電池可以使用一年。
④無線通信功能強大,并且每個節(jié)點都具有路由器的功能。
?、?33MHz或868/916MHz的多信道收發(fā)天線。
?、薰饷?、溫度、RH、氣壓、震動、聲學(xué)、電磁以及諸多可選的傳感器。
?、咧С譄o線的遠(yuǎn)程重編程。
?、嗑哂写罅靠捎玫膫鞲衅靼搴蛿?shù)據(jù)采集板。
?、崤c下一代產(chǎn)品MICA2DOT完全兼容。
MICA2DOT與MICA2相比的主要優(yōu)點在于其體積約是MICA2的四分之一。其他功能與MICA2極其類似。
MOTE-KIT5040還提供了3塊傳感器板,這些接口板可以通過一個51腳的接口連到MICA2上。任何一個MICA2節(jié)點都可以配置成基站來進(jìn)行工作?;究蓪臒o線傳感器網(wǎng)絡(luò)取得的數(shù)據(jù)匯集到計算機上。
2 基于TinyOS實驗平臺的實現(xiàn)
TinyOS操作系統(tǒng)是一個小型、開源、節(jié)能的軟件操作系統(tǒng)。該操作系統(tǒng)支持大規(guī)模、自配置的無線傳感器網(wǎng)絡(luò),安裝比較簡單,與普通應(yīng)用軟件安裝過程類似。完整的安裝包包括如下軟件(一般選擇完全安裝): TinyOS、TinyOS Tools、NesC、Cygwin、Support Tools、Java 1.4 JDK & Java COMM 2.0、Graphviz、AVR Tools(avr-binutils、avr-libc、avr-gcc、avarice、avr-insight)。
調(diào)試嵌入式系統(tǒng)應(yīng)用程序的難點是:難以區(qū)分錯誤源在應(yīng)用程序還是在嵌入式系統(tǒng)平臺。但由于TinyOS安裝包包括了2個用于對系統(tǒng)和傳感器硬件進(jìn)行驗證的工具,因此可以利用這2個工具在調(diào)試應(yīng)用程序前確認(rèn)傳感器節(jié)點本身是否有問題。
首先,對傳感器硬件驗證前要先對安裝的PC工具進(jìn)行確認(rèn),包括 avr gcc compiler、perl、flex、cygwin(如果使用Windows操作系統(tǒng))、JDK 1.4.x等。利用TinyOS自帶的 toscheck工具可以檢驗PC工具是否安裝完全,其操作步驟是:雙擊圖標(biāo)運行cygwin應(yīng)用程序,進(jìn)入/tools/scripts目錄,鍵入toscheck。運行后,最后1行輸出應(yīng)為“toscheck completed without error”。若發(fā)現(xiàn)顯示錯誤,則必須先解決該錯誤再繼續(xù)下面的步驟。
接下來可以使用下面2種方法[3]進(jìn)行傳感器節(jié)點的硬件驗證:
(1)TinyOS自帶的MicaHWVerify程序。
(2)Crossbow提供的圖形用戶界面程序Mote-Test。
2.1 使用MicaHWVerify進(jìn)行硬件驗證
MicaHWVerify程序?qū)iT用來驗證MICA/MICA2/MICA2DOT節(jié)點硬件。若所使用的硬件平臺不同則不適宜使用該程序。以下步驟都以驗證MICA2節(jié)點為例(對MICA2-DOT節(jié)點只需修改相應(yīng)參數(shù)即可)。對傳感器節(jié)點硬件編程時須注意:若使用配套的電源給編程接口板供電,將傳感器節(jié)點插到接口板前要保證節(jié)點上的電池已取出;若利用傳感器節(jié)點上的電池給編程接口板供電,則不需再接電源但必須保證電池電量≥3.0V,且節(jié)點上開關(guān)狀態(tài)為On。驗證步驟如下。
(1)運行cygwin后,進(jìn)入/apps/MicaHWVerify目錄。鍵入make mica2編譯MicaHWVerify程序。若使用MICA2/MICA2DOT平臺,完整的命令應(yīng)該是PFLAGS=-DCC1K_MANUAL_FREQ=<freq> make <mica2|mica2dot>。其中,<freq>可以根據(jù)需要在315MHz、433MHz和915MHz中任選1個,具體設(shè)置方式見參考文獻(xiàn)[5]。本文則選用915MHz的頻率;若使用MICA平臺,則鍵入make mica。
(2)將MICA2節(jié)點插到編程接口板上(MIB510),用電池或電源供電(通電后編程接口板上的綠燈亮)。
(3)將編程接口板通過串口連到計算機。如果使用編程接口板MIB500,則將編程接口板通過并口連到計算機(以下未特別聲明的編程接口板都是指MIB510)。
(4)將程序裝載到MICA2節(jié)點上。鍵入MIB510=COM# make reinstall mica2。其中:COM#表示MIB510連接在計算機端口COM#上(#=1、2、3……本文取為COM1);rein-stall是直接將已編譯過的程序裝載到指定節(jié)點上而不再重新編譯程序,因此速度較快;若使用命令install代替reinstall,則先對目標(biāo)平臺編譯再將程序裝載到節(jié)點。如果使用MIB500,則鍵入make reinstall mica2即可。回車后,MIB510編程接口板的典型輸出如下:
$ mib510 make reinstall mica2
installing mica2 binary
uisp -dprog=mib510 -dserial=COM1 -dpart=ATmega128 --wr_fuse_e=ff --erase --upload if=build/mica2/main.srec
Firmware Version:2.1
Atmel AVR ATmega128 is found.
Uploading:flash
Fuse Extended Byte set to 0xff
這時可以知道編程接口板和計算機串口工作正常。接下來繼續(xù)驗證傳感器節(jié)點硬件。
(5)鍵入make -f jmakefile,再鍵入MOTECOM=serial@
COM1:57 600 java hardware_check,計算機上的輸出應(yīng)該大致為:
hardware_check started
hardware verification successful
Node Serial ID:1 60 48 fb 6 0 0 1d
其中,Node Serial ID是MicaHWVerify程序分配給MICA2節(jié)點的序列號,該程序檢查結(jié)點序列號、閃存連通性、UART功能和外部時鐘。當(dāng)這些狀態(tài)都正常時,屏幕上就會打印出硬件檢測成功的消息。由于MICA2DOT沒有序列號,當(dāng)編譯MicaHWVerify時會提示警告信息“Serial ID not supported on mica2dot platform”,最終的運行結(jié)果serial ID輸出全為0xFF。
最后,驗證傳感器節(jié)點間的無線通信。應(yīng)注意通信時傳感器節(jié)點間要使用統(tǒng)一的頻率,即 PFLAGS=-DCC1K_MANUAL_FREQ=915 988 000。為操作方便,可以在apps/目錄下建立一個Makelocal文件來設(shè)定參數(shù)默認(rèn)值,其內(nèi)容如下:
PFLAGS=-DCC1K_DEFAULT_FREQ=CC1K_915_998_MHZ
MIB510=COM1
這樣,以后就不必每次輸入MIB510=……、PFLAGS=……等表設(shè)置參數(shù)了。
通信實驗需要2個傳感器節(jié)點,因此先對另一個傳感器節(jié)點進(jìn)行硬件檢測,再按下述步驟操作,使其充當(dāng)?shù)谝粋€節(jié)點的無線網(wǎng)關(guān)程序。
(6)進(jìn)入/apps/TOSBase目錄,鍵入make mica2編譯TOSBase程序。
(7)將TOSBase程序裝載到插在MIB510編程接口板上的傳感器節(jié)點,并將另一個傳感器節(jié)點(注意:該節(jié)點裝載的是MicaHWVerify程序)放在附近。
(8)鍵入MOTECOM=serial@COM1:57600 java hardware_check來運行hardware_check java程序,輸出結(jié)果應(yīng)和前面類似:
hardware_check started
Hardware verification successful.
Node Serial ID:1 60 48 fb 6 0 0 1e
這里返回遠(yuǎn)端節(jié)點的序列號,表示傳感器節(jié)點間無線通信驗證成功。如果遠(yuǎn)端傳感器節(jié)點關(guān)閉或工作不正常,將返回提示信息“Node transmission failure”。
2.2 使用Mote-Test進(jìn)行硬件驗證
驗證傳感器硬件還有另外一種更快捷的方法,即使用Mote-Test程序。介紹如下。
(1)從光盤運行/Crossbow Software/Mote-Test文件夾下的setup.exe安裝Mote-Test。
(2)從光盤/Crossbow Software/Mote Firmware目錄下拷貝MICA2_TEST_315、MICA2_TEST_433、MICA2_TEST_916、MICA2DOT_TEST_315、MICA2DOT_TEST_433、MICA2DOT_TEST_916文件夾到/apps目錄下。
(3)用電源給MIB510編程接口板供電,并通過串口與計算機相連。首先,在MICA2上裝載測試固件(Test Firm-ware)。
(4)運行cygwin,進(jìn)入MICA2_TEST_XXX目錄(XXX是頻率,本實驗中使用的是MICA2_TEST_916)。
(5)鍵入MIB510=COM1 make mica2 reinstall,在待測試的傳感器節(jié)點上裝載測試固件,如果裝載成功,按下編程板上的RESET按鈕后會看到LEDs閃爍,驗證了編程接口板和計算機串口工作正常。
(6)設(shè)置Mote-Test檢測傳感器節(jié)點。運行Mote-Test,在窗口中點擊GONFIGURE 按鈕,彈出一個配置對話框。在其中選擇正確的端口號(這里是COM1)。MICA2固件配置的波特率是57 600,默認(rèn)的包大小是36,UART CRC設(shè)置為不可用。一旦配置好,按下SET NOW 按鈕,主屏幕就會彈出。
(7)接下來驗證傳感器節(jié)點硬件工作是否正常。Mote-Test允許使用插在MIB500/MIB510上的一個MICA2或MICA2DOT節(jié)點來創(chuàng)建一個基站或PC的串行網(wǎng)關(guān),用來測試和演示2個傳感器節(jié)點間的雙向無線通信,也可以驗證傳感器硬件和計算機串口是否工作正常。
?、偈褂靡粋€裝載過MICA2_TEST_916固件、電池供電的傳感器節(jié)點作為測試無線通信功能的遠(yuǎn)程節(jié)點。
?、趯⒁粋€裝載過MICA2_TEST_916固件的傳感器節(jié)點插到編程接口板上,稱此節(jié)點為基站?;镜念l率要和遠(yuǎn)程節(jié)點相同。
?、蹖IB510編程接口板通過串口連到計算機。
?、馨聪耂ELF TEST按鈕,選擇好測試對象后,將遠(yuǎn)程節(jié)點放在距離基站大于0.6米的地方。
?、葸\行MICA2硬件驗證測試,按下START TEST按鈕。
檢測后,輸出結(jié)果如圖2所示。
從圖中可以看出,若Memory檢測成功,MEM OK綠燈亮;Battery檢測電池電量大小;RSSI測試有2個值,可以顯示遠(yuǎn)端節(jié)點與基站的連通性。若RSSI值小于-80.00將顯示FAIL,但這并不意味著節(jié)點無線通信失敗,可能因為MICA2節(jié)點距離基站太遠(yuǎn),可以通過縮短MICA2節(jié)點與基站間距離來改善RSSI值。在本實驗中,RSSI實際測得的數(shù)據(jù)分別為-64.50和-61.88,說明連通性較好。Serial ID NUMBER顯示本地傳感器節(jié)點的硬件序列號。當(dāng)各項狀態(tài)都正常時,最上面的PASS綠燈亮。傳感器硬件測試完成后,就可以根據(jù)需求自己編寫程序,通過編程接口板加載到傳感器上,實現(xiàn)無線傳感器網(wǎng)絡(luò)的各種功能。
3 結(jié)論及下一步工作
本文介紹了如何搭建無線傳感器網(wǎng)絡(luò)實驗平臺以及在此平臺上的系統(tǒng)驗證。內(nèi)容涉及無線傳感器網(wǎng)絡(luò)的結(jié)構(gòu)和發(fā)展前景、傳感器節(jié)點的硬件測試、傳感器節(jié)點間無線通信等。在此實驗平臺上,可以編寫應(yīng)用程序(Nesc和Java程序)完成傳感器網(wǎng)絡(luò)的各種功能。
下一步的工作是在該實驗平臺上研究具體的無線傳感器網(wǎng)絡(luò)協(xié)議,需要解決如下問題:(1)無線傳感器網(wǎng)絡(luò)中的定位和同步問題。(2)研究網(wǎng)絡(luò)層協(xié)議中的路由算法。(3)研究傳感器網(wǎng)絡(luò)的管理問題。
參考文獻(xiàn)
1 李建中,李金寶,石勝飛.傳感器網(wǎng)絡(luò)及其數(shù)據(jù)管理的概念、問題與進(jìn)展.軟件學(xué)報,2003;14(10)
2 任豐原,黃海寧,林闖.無線傳感器網(wǎng)絡(luò).軟件學(xué)報,2003;14 (7)
3 http://www.xbow.com/Support/Support_pdf_files/UISPHELP.pdf.UISP,MoteProgramming,and Mote Fuse Help Guide version 20030315.Crossbow Technology Inc,2003