文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)03-0096-04
無線傳感器網(wǎng)絡(luò)WSN(Wireless Sensor Network)是信息科學(xué)的研究熱點(diǎn),它是一種自組織的多跳路由無線網(wǎng)絡(luò),通過在監(jiān)測(cè)區(qū)域中部署大量低成本的無線傳感器節(jié)點(diǎn),節(jié)點(diǎn)間協(xié)同工作從而實(shí)現(xiàn)信息采集和傳輸。
隨著傳感器技術(shù)、微處理器技術(shù)、芯片技術(shù)和無線通信技術(shù)的發(fā)展,以及片上系統(tǒng)SoC(System on Chip)的出現(xiàn),為無線傳感器網(wǎng)絡(luò)提供了單芯片解決方案,極大降低了無線傳感節(jié)點(diǎn)的體積、功耗和成本。無線傳感網(wǎng)絡(luò)已被廣泛地應(yīng)用到軍事、醫(yī)療監(jiān)護(hù)、智能交通和倉儲(chǔ)管理等領(lǐng)域。隨著物聯(lián)網(wǎng)應(yīng)用的推廣及成本降低,無線傳感器網(wǎng)絡(luò)將被更廣泛的應(yīng)用[1-3]。
1 系統(tǒng)結(jié)構(gòu)
系統(tǒng)的主要功能包括傳感器數(shù)據(jù)采集、ZigBee組網(wǎng)與通信[4]、網(wǎng)關(guān)管理與節(jié)點(diǎn)設(shè)備無線控制、傳感器數(shù)據(jù)界面顯示與計(jì)算等。本文主要工作包含無線節(jié)點(diǎn)硬件設(shè)計(jì)、節(jié)點(diǎn)程序設(shè)計(jì)、傳感器網(wǎng)絡(luò)組建和數(shù)據(jù)協(xié)議定義,以及節(jié)點(diǎn)低功耗設(shè)計(jì)。系統(tǒng)基于ZigBee無線通信技術(shù)組建樹狀網(wǎng)絡(luò),通過傳感器節(jié)點(diǎn)采集并組建傳感器數(shù)據(jù)幀,通過多跳路由匯集到網(wǎng)關(guān)設(shè)備上,實(shí)現(xiàn)環(huán)境信息監(jiān)測(cè)。
系統(tǒng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如圖1所示[5-6],系統(tǒng)主要包含了網(wǎng)關(guān)設(shè)備(協(xié)調(diào)器,Coordinator)、路由節(jié)點(diǎn)和傳感器節(jié)點(diǎn)以及一些可擴(kuò)展的接口。協(xié)調(diào)器主要負(fù)責(zé)啟動(dòng)和配置整個(gè)網(wǎng)絡(luò),通過掃描物理信道能量選擇一個(gè)空閑信道作為網(wǎng)絡(luò)的信道。路由節(jié)點(diǎn)(Router)主要功能為批準(zhǔn)其他設(shè)備加入網(wǎng)絡(luò)、多跳路由和協(xié)助其子節(jié)點(diǎn)完成通信。傳感器節(jié)點(diǎn)主要為傳感器數(shù)據(jù)的采集與傳輸。
2 CC2530多傳感器無線節(jié)點(diǎn)硬件設(shè)計(jì)
CC2530是一款符合ZigBee標(biāo)準(zhǔn)的SoC芯片[7-8],集成了無線電收發(fā)器、8051內(nèi)核、串口、ADC和定時(shí)器等外設(shè),利用CC2530作為無線傳感器網(wǎng)絡(luò)解決方案,節(jié)點(diǎn)成本、體積和功耗都能夠得到大幅度降低。
CC2530射頻模塊主要完成無線信號(hào)的收發(fā)功能,負(fù)責(zé)ZigBee協(xié)議相關(guān)操作,并控制采集、存儲(chǔ)和處理傳感器數(shù)據(jù)。底板由供電模塊及調(diào)試端口構(gòu)成,傳感器擴(kuò)展板部署了溫濕度傳感器SHT11、加速度傳感器ADXL202和壓力傳感器MCS5540。
2.2 CC2530射頻模塊設(shè)計(jì)
ZigBee無線通信模塊以CC2530為核心,芯片工作電壓為2~3.6 V,節(jié)點(diǎn)提供了標(biāo)準(zhǔn)I/O接口,容易嵌入到其他設(shè)備中,可以替代現(xiàn)有的無線控制方式,并獲取設(shè)備工作記錄。
2.3 傳感器模塊設(shè)計(jì)
溫濕度傳感器采用SHT11,CC2530以P1.6、P1.7分別與DATA和SCK線連接,CC2530通過程序控制實(shí)現(xiàn)SHT11控制和讀寫信號(hào)。
加速度傳感器采用ADXL202實(shí)現(xiàn),用來采集振動(dòng)信號(hào),ADXL202E分別從Xout和Yout輸出兩個(gè)方向的加速度信息,以不同的占空比表示,CC2530采用定時(shí)器口線P1.3、P2.0與ADXL202E連接,測(cè)量其占空比。
氣壓傳感器采用MCS5540,提供氣壓測(cè)量和溫度測(cè)量,以SCLK、DIN和DOUT組成讀寫總線,CC2530通過USART 0口與MS5540C連接。
3 基于Z-stack協(xié)議棧的節(jié)點(diǎn)程序設(shè)計(jì)
3.1 節(jié)點(diǎn)功能分析
節(jié)點(diǎn)程序基本功能如圖3所示,基于協(xié)議棧應(yīng)用層實(shí)現(xiàn),具體的功能實(shí)現(xiàn)按照節(jié)點(diǎn)的邏輯關(guān)系有所區(qū)別。
節(jié)點(diǎn)設(shè)備輸出控制:控制操作的發(fā)起者可以是網(wǎng)絡(luò)中的節(jié)點(diǎn),也可能是節(jié)點(diǎn)自己或者網(wǎng)關(guān)控制平臺(tái)。如將ZigBee節(jié)點(diǎn)作為溫度報(bào)警裝置的控制器,當(dāng)節(jié)點(diǎn)自身具有溫度傳感器裝置時(shí),節(jié)點(diǎn)可以在溫度超過設(shè)置的范圍時(shí)發(fā)起報(bào)警。
低功耗管理為感知節(jié)點(diǎn)發(fā)送功率自調(diào)整機(jī)制和休眠機(jī)制,以提高對(duì)能量的使用效率,避免不必要傳輸帶來的能量損耗。鏈路檢測(cè)為支撐子節(jié)點(diǎn)管理和節(jié)點(diǎn)低功耗管理功能,檢測(cè)父子節(jié)點(diǎn)間鏈路可靠性、信號(hào)質(zhì)量和獲取接收信號(hào)強(qiáng)度指示RSSI(Received Signal Strength Indication)值。
3.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)
網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)實(shí)體在應(yīng)用層被封裝成幀,對(duì)于協(xié)議棧為透明數(shù)據(jù)。數(shù)據(jù)幀在網(wǎng)絡(luò)中透明傳輸,只有目的地址節(jié)點(diǎn)的相匹配的應(yīng)用對(duì)象可對(duì)數(shù)據(jù)進(jìn)行解析處理。
(1) 設(shè)備描述符數(shù)據(jù)結(jié)構(gòu)
節(jié)點(diǎn)設(shè)備簡單描述符向協(xié)調(diào)器報(bào)告節(jié)點(diǎn)屬性、網(wǎng)絡(luò)地址、擴(kuò)展地址和節(jié)點(diǎn)父節(jié)點(diǎn)網(wǎng)絡(luò)地址,以及支持的設(shè)備個(gè)數(shù)、類型、設(shè)備標(biāo)號(hào)和控制/狀態(tài)等相關(guān)信息。設(shè)備簡單描述符結(jié)構(gòu)如圖4。
NWK_Addr鎖定源/目標(biāo)節(jié)點(diǎn),再由C_ID鎖定節(jié)點(diǎn)上對(duì)應(yīng)設(shè)備,從而正確地解析/控制指定節(jié)點(diǎn)上特定設(shè)備。
(3) 設(shè)備控制命令結(jié)構(gòu)
設(shè)備控制是對(duì)指定節(jié)點(diǎn)的指定外設(shè)控制的過程,用戶可以通過網(wǎng)關(guān)發(fā)起控制,傳感器節(jié)點(diǎn)也可以發(fā)起控制命令。控制命令結(jié)構(gòu)如圖6。
3.3 基于有限狀態(tài)機(jī)的傳感器控制程序設(shè)計(jì)
傳感器節(jié)點(diǎn)周期性地采集并傳輸數(shù)據(jù),通過進(jìn)入休眠狀態(tài)以節(jié)省節(jié)點(diǎn)能量。應(yīng)用層程序?qū)ο笸ㄟ^osal_start_timerEx( )函數(shù),設(shè)置傳感器數(shù)據(jù)采集定時(shí)任務(wù),基于有限狀態(tài)機(jī)FSM(Finite State Machine)的程序設(shè)計(jì)如下。
while( FSMstate_S != IDEL )
{ switch(FSMstate_S)
{ case Sensor_RD_status: //傳感器轉(zhuǎn)換
{ if( 轉(zhuǎn)換成功 )
{ ……
FSMstate_S = IDEL; //退出
}
else FSMstate_S = ResetSeriInterface ;
break;}
//其他狀態(tài)
case ResetSeriInterface: //啟動(dòng)串行總線
{ ……
FSMstate_S= Sensor_RD_status; //轉(zhuǎn)換
break;}
default: FSMstate_S= IDEL ; break;
}//--switch
}//--while
3.4 節(jié)點(diǎn)鏈路失效管理
Z-Stack協(xié)議棧的網(wǎng)絡(luò)層支持節(jié)點(diǎn)路由管理和網(wǎng)絡(luò),而因突發(fā)事件如掉電、失效和重啟等引發(fā)子節(jié)點(diǎn)丟失網(wǎng)絡(luò),協(xié)議棧沒有提供完整的解決方案[10]。
節(jié)點(diǎn)失效鏈路管理,如圖7所示為父節(jié)點(diǎn)死亡和重啟后,造成子節(jié)點(diǎn)鏈路失效的情形。由于父節(jié)點(diǎn)因突發(fā)原因失效,如被破壞或供電中斷等,節(jié)點(diǎn)不能通知其相鄰節(jié)點(diǎn),從而導(dǎo)致子節(jié)點(diǎn)仍然認(rèn)為其父節(jié)點(diǎn)存在于網(wǎng)絡(luò)中,并不斷向其發(fā)送數(shù)據(jù),若節(jié)點(diǎn)采用應(yīng)答傳輸機(jī)制,則會(huì)長時(shí)間等待父節(jié)點(diǎn)的應(yīng)答。上述兩種情形都會(huì)導(dǎo)致子節(jié)點(diǎn)與網(wǎng)絡(luò)的通信不可靠,節(jié)點(diǎn)網(wǎng)絡(luò)地址分配混亂和重復(fù)。
節(jié)點(diǎn)移動(dòng)鏈路管理,如圖8為節(jié)點(diǎn)移動(dòng)后造成通信鏈路中斷、功耗增大等問題,如父子節(jié)點(diǎn)之間被加入障礙物。感知節(jié)點(diǎn)移動(dòng)后,與R2的距離遠(yuǎn)遠(yuǎn)小于與R1的距離,原來只需較小的發(fā)射功率則可與R1建立可靠的通信連接,而此時(shí)感知節(jié)點(diǎn)必須提高發(fā)射功率。
父節(jié)點(diǎn)返回的匹配消息報(bào)告給節(jié)點(diǎn)應(yīng)用層,子節(jié)點(diǎn)首先撤銷正在執(zhí)行的定時(shí)任務(wù)并判斷消息。若消息為真則表明鏈路仍然可靠,并在定時(shí)T1結(jié)束后設(shè)置下一次傳感器轉(zhuǎn)換定時(shí)。否則節(jié)點(diǎn)將重啟網(wǎng)絡(luò)層重新加入網(wǎng)絡(luò)。
3.5 基于RSSI的節(jié)點(diǎn)低功耗設(shè)計(jì)
無線傳感器節(jié)點(diǎn)能量消耗主要在于節(jié)點(diǎn)無線通信[9],針對(duì)網(wǎng)絡(luò)環(huán)境穩(wěn)定且較少移動(dòng)的節(jié)點(diǎn),子節(jié)點(diǎn)可基于RSSI值調(diào)整發(fā)射功率,根據(jù)節(jié)點(diǎn)間的實(shí)際信道質(zhì)量,調(diào)整不同節(jié)點(diǎn)間的發(fā)射功率,避免節(jié)點(diǎn)用固定的發(fā)射功率時(shí)因距離太近而造成能量浪費(fèi)。
RSSI受節(jié)點(diǎn)之間的距離和障礙物等信道質(zhì)量情況影響,不同的子節(jié)點(diǎn)與父節(jié)點(diǎn)建立可靠鏈路所需要的發(fā)射功率則不一樣。圖10所示為子節(jié)點(diǎn)與父節(jié)點(diǎn)建立最低功耗通信鏈路的流程,子節(jié)點(diǎn)向父節(jié)點(diǎn)發(fā)送發(fā)射功率校正的命令;在接收到父節(jié)點(diǎn)返回的RSSI值后,子節(jié)點(diǎn)則根據(jù)RSSI的大小調(diào)整自己的發(fā)射功率。
4 系統(tǒng)傳輸性能實(shí)驗(yàn)分析
4.1 點(diǎn)對(duì)點(diǎn)傳輸實(shí)驗(yàn)
點(diǎn)對(duì)點(diǎn)傳輸是節(jié)點(diǎn)性能的一個(gè)重要指標(biāo),本文針對(duì)節(jié)點(diǎn)的數(shù)據(jù)速率和丟包率做了大量的實(shí)驗(yàn)測(cè)試。在室內(nèi)環(huán)境下,節(jié)點(diǎn)采用3.3 V直流供電,傳輸距離(視距)>30 m,發(fā)射功率0 dBm,收發(fā)節(jié)點(diǎn)分別統(tǒng)計(jì)數(shù)據(jù)幀,單次測(cè)試持續(xù)時(shí)間10~20 min。獲得數(shù)據(jù)速率與丟包率關(guān)系如圖11(a)所示。
圖示數(shù)值為節(jié)點(diǎn)多次實(shí)驗(yàn)的平均值。當(dāng)發(fā)射速率逐漸增大到21 kb/s時(shí),接收節(jié)點(diǎn)丟包率明顯增大。由圖11可知發(fā)射速率低于20.88 kb/s時(shí)丟包率為0,速率為22.5 kb/s時(shí)丟包率約為6%??傻霉?jié)點(diǎn)的數(shù)據(jù)速率實(shí)驗(yàn)典型值為20 kb/s。
4.2 多跳通信實(shí)驗(yàn)
多跳通信實(shí)驗(yàn)設(shè)置了源節(jié)點(diǎn)為設(shè)備終端節(jié)點(diǎn),中轉(zhuǎn)設(shè)備路由節(jié)點(diǎn)和目標(biāo)設(shè)備協(xié)調(diào)器組成的2跳網(wǎng)絡(luò)。測(cè)試環(huán)境與點(diǎn)對(duì)點(diǎn)通信一致,針對(duì)數(shù)據(jù)速率和丟包率完成大量實(shí)驗(yàn),得到的目標(biāo)節(jié)點(diǎn)數(shù)據(jù)速率與丟包率關(guān)系如圖11(b)所示。
由圖11(b)可知,經(jīng)路由節(jié)點(diǎn)中轉(zhuǎn)后數(shù)據(jù)傳輸可靠性大大降低了。在數(shù)據(jù)發(fā)送速率低于0.3 kb/s時(shí)丟包率為0,而大于這個(gè)值后則逐漸上升。所以在保證丟包率為0的前提下,兩跳通信的數(shù)據(jù)速率的試驗(yàn)值可以達(dá)到0.3 kb/s。
本系統(tǒng)完成了以CC2530為核心的多傳感器無線節(jié)點(diǎn)硬件設(shè)計(jì),并基于Z-stack協(xié)議棧完成傳感器程序設(shè)計(jì),同時(shí)實(shí)現(xiàn)協(xié)議棧的低功耗改進(jìn)和節(jié)點(diǎn)鏈路失效管理。通過實(shí)物測(cè)試獲得節(jié)點(diǎn)單跳通信數(shù)據(jù)速率典型值為20 kb/s,多跳通信典型值為0.3 kb/s,能夠較好地滿足區(qū)域環(huán)境信息監(jiān)測(cè)的應(yīng)用。系統(tǒng)的硬件結(jié)構(gòu)設(shè)計(jì)充分考慮了擴(kuò)展性,數(shù)據(jù)協(xié)議定義充分考慮了上位機(jī)控制臺(tái)顯示信息的豐富性,支持控制臺(tái)顯示網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、節(jié)點(diǎn)設(shè)備信息和狀態(tài)、節(jié)點(diǎn)移動(dòng)動(dòng)態(tài)更新,以及節(jié)點(diǎn)設(shè)備無線控制。
參考文獻(xiàn)
[1] 鄭凱.基于ZigBee無線傳感器技術(shù)的心電監(jiān)護(hù)網(wǎng)絡(luò)的研究[D].吉林:吉林大學(xué),2008.
[2] 陳濤,劉景泰,邴志剛.無線傳感網(wǎng)絡(luò)應(yīng)用于研究綜述[J].自動(dòng)化與儀表,2005(7):41-46.
[3] 韓賓,黃玉清.基于藍(lán)牙的機(jī)器人傳感網(wǎng)絡(luò)設(shè)計(jì)[J].通信技術(shù),2008(6):164-166.
[4] GISLASON D. Zigbee wireless Networking[M]. Burlington:Newnes,2008.
[5] Wang Weixin, Sung Jongwoo, KIM D. Complex event processing in EPC sensor network middleware for both RFID and WSN[C]. 2008 11th IEEE, ISORC, 2008:165-169.
[6] Yang Huanjia, Yang Lili,et al. Hybrid Zigbee RFID sensor network for human-itarian logistics centre management[J]. Journal of Network and Computer Applications,2011(34):938-948.
[7] TI. CC253X User Guide.http://www.ti.com.cn.2011.
[8] TI.Z-Stack Developers Guide.http://www.i.com.cn/.2011.
[9] ESTRIN D. Tutorial“PartIV: sensor network protocols. Mobicom,2002. http://nest1.ee.ucla.edu/tutorials/ mobicom02.2011.