翟祥偉,吳 蒙
(南京郵電大學(xué)通信與信息工程學(xué)院,江蘇南京210003)
無線傳感器網(wǎng)絡(luò)[1](WSN)由部署在監(jiān)測區(qū)域內(nèi)的大量廉價(jià)的傳感器節(jié)點(diǎn)組成,這些節(jié)點(diǎn)以無線通信的方式構(gòu)成一種多跳自組織的網(wǎng)絡(luò),并對網(wǎng)絡(luò)分布區(qū)域內(nèi)的各種信息進(jìn)行監(jiān)測、感知和采集。傳統(tǒng)無線傳感器網(wǎng)絡(luò)應(yīng)用開發(fā)人員直接對硬件進(jìn)行編程導(dǎo)致較大的開發(fā)難度和極低的軟件重用性,增加了開發(fā)成本和工程周期,結(jié)合考慮無線傳感器網(wǎng)絡(luò)的能量、內(nèi)存和接口等資源極為有限的特點(diǎn),無線傳感器網(wǎng)絡(luò)操作系統(tǒng)的應(yīng)用尤為必要。
TinyOS是加州大學(xué)伯克利分校專為無線傳感器網(wǎng)絡(luò)量身定制的操作系統(tǒng)[2]。采用的技術(shù)包括組件化的編程、事件驅(qū)動(dòng)機(jī)制、輕量級線程和主動(dòng)消息通信等,這些技術(shù)都是為了保證操作系統(tǒng)能滿足無線傳感器網(wǎng)絡(luò)的特殊要求,使其在處理能力和存儲能力有限的情況下具有更強(qiáng)的網(wǎng)絡(luò)處理和資源收集能力。
目前廣泛采用的支持TinyOS的節(jié)點(diǎn)平臺如MicaZ[3]和TelosB[4],它們采用ATmega128/MSP430和 CC2420相結(jié)合的架構(gòu),并搭載了多種傳感器以滿足實(shí)際應(yīng)用的需求。由于CC2420工作頻率為2.4 GHz,繞射能力低,傳輸距離十分有限,且額定輸出功率0 dBm,穿透能力不強(qiáng),這些缺點(diǎn)限制了節(jié)點(diǎn)只能使用在室內(nèi)或相對開闊的環(huán)境[5]。
本文首先設(shè)計(jì)了一個(gè)支持TinyOS的簡易節(jié)點(diǎn)硬件系統(tǒng),結(jié)合微控制器MSP430F5438A和915 MHz射頻芯片,支持遠(yuǎn)距離的無線通信。接著在分析TinyOS的硬件抽象架構(gòu)的基礎(chǔ)上介紹如何在已有的TinyOS芯片支持文件上對所設(shè)計(jì)節(jié)點(diǎn)進(jìn)行移植。最后對移植完成的節(jié)點(diǎn)進(jìn)行包括串口通信、組網(wǎng)通信在內(nèi)的穩(wěn)定性測試,再聯(lián)合micaZ節(jié)點(diǎn)和TelosB節(jié)點(diǎn)作性能對比測試,驗(yàn)證該節(jié)點(diǎn)的先進(jìn)性。
將本文搭建的TinyOS平臺節(jié)點(diǎn)命名為newnode,筆者選用全新的MSP430F5438A開發(fā)板進(jìn)行newnode平臺的搭建。節(jié)點(diǎn)原型包括微控制器與射頻,通過SPI口進(jìn)行通信,關(guān)鍵部分接口電路如圖1所示。
圖1 節(jié)點(diǎn)關(guān)鍵接口電路
MSP430F5438A是TI公司推出的一款微控制器,具有許多優(yōu)異的特性[6]。通過設(shè)計(jì)5種低功耗模式使系統(tǒng)僅在必要時(shí)啟動(dòng)所需時(shí)鐘來顯著降低功耗,配合極低的喚醒時(shí)間更是實(shí)現(xiàn)了超低功耗;同時(shí)作為一款16位的微控制器,在指令速度相等的情況下,其運(yùn)算性能遠(yuǎn)高于8位微控制器。與MSP430F5xxx系列其他型號相比,MSP430F5438A有著更大的ROM和RAM,能夠滿足TinyOS的程序和數(shù)據(jù)存儲需求。
在射頻部分,針對2.4 GHz頻段的射頻傳輸距離短的問題,筆者選用了915 MHz射頻芯片來搭建硬件節(jié)點(diǎn)平臺。由于低頻率器件的路徑損耗更低,因此其可用距離幾乎是采用2.4 GHz器件的 3倍[7]。該射頻模塊接受靈敏度可達(dá)-110 dBm,可編程發(fā)送輸出頻率可達(dá)+10 dBm,有著較強(qiáng)的抗干擾性和穿透性。工作電壓為1.8~3.6 V,與主控芯片相匹配,在保證了良好的兼容性的同時(shí)也簡化了電路設(shè)計(jì)。
TinyOS2.0采用了3層結(jié)構(gòu)的硬件抽象化設(shè)計(jì),基于3個(gè)不同的抽象化級別,結(jié)合組件的特點(diǎn),形成了一個(gè)高效的系統(tǒng)結(jié)構(gòu)[8-9]。圖2為TinyOS硬件抽象架構(gòu)。
圖2 TinyOS硬件抽象架構(gòu)
在圖示的組件框架里,底層抽象為硬件表示層(HPL),它與硬件的寄存器和中斷密切相關(guān),主要任務(wù)是表示硬件的功能,同時(shí)通過隱藏復(fù)雜的硬件接口來簡化對硬件的操作;中間層硬件適配層(HAL)使用由底層提供的原始接口,建立起硬件抽象,提供了對硬件模塊的全功能訪問,是硬件抽象架構(gòu)的核心;頂層抽象為硬件接口層(HIL),它使用中間層提供的硬件抽象,提供了與平臺無關(guān)的硬件接口,便于軟件的開發(fā)和移植。
newnode節(jié)點(diǎn)平臺硬件上包括兩個(gè)關(guān)鍵部分,微控制器芯片MSP430F5438A和915 MHz無線射頻芯片。對于一款芯片,在眾多的基于TinyOS的無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)平臺中,雖然所采取的硬件連接方式各有不同,但其大部分的邏輯工作與具體的平臺無關(guān)。因此,newnode平臺的開發(fā)工作就是把TinyOS中已有的該平臺各個(gè)芯片代碼進(jìn)行連接整合[10-11]。需要注意的是,TinyOS只有在最新發(fā)布的Tiny-Prod這個(gè)版本添加了對MSP430F5xxx系列的支持,所以筆者選用的Tiny-OS版本為Tiny-Prod。newnode平臺定義的關(guān)鍵目錄及文件如圖3所示。
圖3 newnode節(jié)點(diǎn)平臺源碼目錄
下面分別對圖中關(guān)鍵目錄及文件進(jìn)行說明,包括三大分支:
1)首先在tiny-prod/tos/chips目錄中,TinyOS提供了包括MSP430,915M_RF在內(nèi)的眾多芯片的驅(qū)動(dòng)代碼支持。對于MSP430,也提供了其外圍模塊的驅(qū)動(dòng)代碼,如flash,timer,adc,dma,usci等。
2)其次,在tiny-prod/tos/platforms/newnode目錄下,需要定義新建的newnode平臺,這一步將各個(gè)模塊連接整合在一起,是移植的關(guān)鍵。需創(chuàng)建并定義在該目錄下的核心文件有:
.platform:該文件定義newnode平臺的基本編譯參數(shù),包括編譯所需的目錄和傳遞給NesC編譯器的各種參數(shù),目錄必須包括源碼樹中所有文件夾;
hardware.h:該文件定義newnode平臺的常量、引腳并包含外部頭文件“msp430hardware.h”,該頭文件提供了MSP430寄存器資源的定義,它包含在tiny-prod/tos/chips/msp430目錄中;
platformP.nc和platformC.nc:這兩個(gè)文件用于newnode節(jié)點(diǎn)的啟動(dòng)和初始化,需在其中提供Init接口,將平臺初始化工作與RealMain組件連接起來;
hardware目錄:該目錄下為每個(gè)外設(shè)定義了一個(gè)子目錄,定義了平臺外設(shè)的初始化操作;
chips目錄:連接底層射頻驅(qū)動(dòng)關(guān)鍵目錄,需在該目錄下新建射頻目錄以存放射頻HAL層組件,通過這些組件與HIL層通用射頻組件庫rfxlink(存放于tiny-prod/tos/lib/rfxlink)和網(wǎng)絡(luò)組件庫net(存放于tiny-prod/tos/net)相連接來完成射頻驅(qū)動(dòng)的設(shè)計(jì)。
射頻驅(qū)動(dòng)部分關(guān)鍵性組件包括:
RadioConfig.h文件,配置射頻驅(qū)動(dòng)變量和宏定義;
RFDriverLayerC.nc和 RFDriverLayerP.nc文件,通過 SPI總線、GPIO接口構(gòu)建完整的射頻驅(qū)動(dòng)代碼,并對外提供射頻控制接口;
RFRadioC.nc和RFRadioP.nc文件,連接射頻底層關(guān)鍵組件,并配置TinyOS庫函數(shù)的應(yīng)用參數(shù);
RFActiveMessageC:該文件定義了各個(gè)層次的組件,包括Send,Receive,和 SplitControl。
3)最后,需要在tiny-prod/support/make目錄下創(chuàng)建newnode.target文件,使得編譯系統(tǒng)將“newnode”理解為合法的平臺名字。newnode.target中需設(shè)置PLATFORM變量值,使平臺包含msp處理器的文件(make/msp/msp.rules)并為該平臺上的程序提供編譯規(guī)則,具體內(nèi)容如下:
#-*-Makefile-*-vim:syntax=make
PLATFORM=newnode
MSP_MCU=msp430f5438a
$(call TOSMake_include_platform,msp)
newnode:MYM(BUILD_DEPS)
@:
至此,已經(jīng)初步搭建完newnode平臺。使用NULL應(yīng)用進(jìn)行編譯測試,NULL應(yīng)用是專門用來測試編譯環(huán)境的程序框架。進(jìn)入tiny-prod/apps/Null目錄,對該應(yīng)用在newnode平臺下進(jìn)行編譯,如圖4所示,可以順利通過。
圖4 NULL應(yīng)用編譯結(jié)果(截圖)
使用3個(gè)節(jié)點(diǎn),搭建簡易的星狀網(wǎng)絡(luò),同步進(jìn)行組網(wǎng)通信與串口通信的測試。使用其中1個(gè)節(jié)點(diǎn)作為網(wǎng)關(guān)節(jié)點(diǎn)通過串口連接PC,另外2個(gè)作為普通節(jié)點(diǎn)周期性地向網(wǎng)關(guān)節(jié)點(diǎn)發(fā)送數(shù)據(jù),網(wǎng)關(guān)節(jié)點(diǎn)收到數(shù)據(jù)后通過串口發(fā)送給PC,PC端使用串口調(diào)試助手顯示數(shù)據(jù)。據(jù)此編寫上層應(yīng)用TestNetwork[12],組網(wǎng)協(xié)議采用CTP匯聚樹協(xié)議。實(shí)驗(yàn)室環(huán)境下,接收數(shù)據(jù)如圖5所示。
圖5 網(wǎng)關(guān)節(jié)點(diǎn)接收數(shù)據(jù)(截圖)
取圖中第一行數(shù)據(jù)進(jìn)行分析,根據(jù)CTP協(xié)議數(shù)據(jù)幀格式截取有效載荷為:00 01 AA BB 00 07,其中00 01為發(fā)送源節(jié)點(diǎn)號,AA BB為固定自定義數(shù)據(jù),00 07為每次發(fā)送遞增1的自定義數(shù)據(jù)。有效載荷區(qū)之前為主動(dòng)消息區(qū),表示了有效載荷長度、網(wǎng)絡(luò)組號和AM類型,之后為CRC校驗(yàn)位。由圖可以看出,1號節(jié)點(diǎn)與2號節(jié)點(diǎn)周期地向根節(jié)點(diǎn)發(fā)送數(shù)據(jù),運(yùn)行穩(wěn)定。
在性能測試中,選用目前廣泛采用的MicaZ和Telosb節(jié)點(diǎn)作為對比,檢測最大發(fā)射功率下多種通信環(huán)境中節(jié)點(diǎn)的丟包率。將TestNetwork應(yīng)用分別在3種平臺上進(jìn)行編譯,并下載到對應(yīng)節(jié)點(diǎn)。分別在大樓內(nèi)部和室外操場環(huán)境下進(jìn)行測試,各點(diǎn)在測試時(shí)保證通信次數(shù)1 000以上。測試結(jié)果見表1和表2。
表1 室內(nèi)環(huán)境下3種節(jié)點(diǎn)丟包率對比 %
表2 室外環(huán)境下3種節(jié)點(diǎn)丟包率對比 %
測試結(jié)果表明,室內(nèi)環(huán)境下,newnode節(jié)點(diǎn)在60 m距離、3堵墻阻隔下依然保持極低的丟包率;室外300 m內(nèi)的開闊環(huán)境下,newnode節(jié)點(diǎn)能實(shí)現(xiàn)有效而可靠的通信,當(dāng)通信距離達(dá)到800 m時(shí),丟包率才開始出現(xiàn)陡增。而Telosb節(jié)點(diǎn)和MicaZ節(jié)點(diǎn)僅能保證室內(nèi)20 m、室外150 m的可靠通信,當(dāng)通信距離達(dá)到300 m時(shí)基本失去可靠性,這也與官方給出的室內(nèi)20~30 m,室外75~100 m的使用距離吻合[13]。由此可見,newnode節(jié)點(diǎn)在室內(nèi)和室外環(huán)境下的傳輸性能均大幅領(lǐng)先Telosb節(jié)點(diǎn)和MicaZ節(jié)點(diǎn),符合節(jié)點(diǎn)設(shè)計(jì)預(yù)期。
隨著無線傳感器網(wǎng)絡(luò)技術(shù)的深入發(fā)展,對作為其基礎(chǔ)的無線傳感器節(jié)點(diǎn)也提出了更高的要求。本文設(shè)計(jì)了一個(gè)無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)硬件平臺,結(jié)合微控制器MSP430F5438A和915 MHz射頻芯片,具有傳輸距離遠(yuǎn)、穿透性強(qiáng)等特點(diǎn)。同時(shí),將無傳感器網(wǎng)絡(luò)操作系統(tǒng)TinyOS針對本節(jié)點(diǎn)進(jìn)行移植,大大降低了節(jié)點(diǎn)應(yīng)用的開發(fā)難度,縮短了開發(fā)周期。后續(xù)可以使用該節(jié)點(diǎn)作為原型,通過加入多種傳感器進(jìn)行功能拓展以滿足實(shí)際應(yīng)用。
[1]孫利民.無線傳感器網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,2005.
[2]潘皓,董齊芬,張貴軍,等.無線傳感器網(wǎng)絡(luò)操作系統(tǒng) TinyOS[M].北京:清華大學(xué)出版社,2011.
[3] SU W,ALZAGHAL M.Channel propagation characteristics of wireless MICAz sensor nodes[J].Ad-Hoc Networks,2009,7(6):1183-1193.
[4] PRAYATI A,ANTONOPOULOS C,STOYANOVA T,et al.A modeling approach on the TelosB WSN platf-orm power consumption[J].Journal of Systems and Software,2010,83(8):1355-1363.
[5]黃勛,袁紅林,孫強(qiáng).無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)機(jī)的研制[J].電視技術(shù),2008,32(8):84-86.
[6] Texas Instruments.MSP430 TM Ultra-Low Power 16-Bit Microcontrollers[EB/OL].[2014-05-18].http:∥e2e.ti.com.
[7]謝處方,饒克謹(jǐn).電磁場與電磁波[M].北京:高等教育出版社,2006.
[8]吳小娜,王漫.無線傳感器網(wǎng)絡(luò)操作系統(tǒng) TinyOS綜述[J].計(jì)算機(jī)與現(xiàn)代化,2011(2):103-105.
[9] HANDZISKI V,POLASTRE J,HAUER J H,et al.TEP2:Hardware abstraction architecture[EB/OL].[2014-05-05].http:www.tinyos.net/tingos-2、1、0/doc/html/tep2.html.2010.
[10]朱肖肖,姚明海,李海紅,等.無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)操作系統(tǒng)的移植[J].傳感器與微系統(tǒng),2008,27(7):75-78.
[11]何偉賢,劉建明,彭智勇,等.TinyOS跨平臺移植方法研究與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2012(9):356-358.
[12] LEVISP,GAY D.TinyOSprogramming[M].England:Cambridge University Press,2009.
[13] Crossbow Technology Inc.MICAZ_datasheet[EB/OL].[2014-07-23].http:∥www.docin.com/P-681787670.html.