李 秘, 花仕海, 李貴柯, 趙柏秦, 吳南健
(1.中國科學(xué)院 半導(dǎo)體研究所,北京 100083;2.無錫中科智聯(lián)科技研發(fā)中心有限公司,江蘇 無錫 214135)
無線傳感器網(wǎng)絡(luò)(WSNs)[1,2]是物聯(lián)網(wǎng)實(shí)現(xiàn)數(shù)據(jù)信息采集的一種末端網(wǎng)絡(luò),由部署在監(jiān)測區(qū)域內(nèi)大量的傳感器節(jié)點(diǎn)(sensor node)組成,通過無線通信方式形成的一個(gè)多跳的自組織網(wǎng)絡(luò)系統(tǒng),其目的是協(xié)作感知、采集和處理網(wǎng)絡(luò)覆蓋區(qū)域中被感知對象的信息,并發(fā)送給觀察者。
傳統(tǒng)的傳感器節(jié)點(diǎn)主要是依靠能量十分有限的電池供電,有限的能量限制了傳感器節(jié)點(diǎn)的有效工作時(shí)間,進(jìn)而影響到整個(gè)WSNs的實(shí)際應(yīng)用。所以,解決傳感器節(jié)點(diǎn)的能源問題并降低傳感器節(jié)點(diǎn)功耗成為WSNs的重要研究方向。目前,在解決WSNs傳感器節(jié)點(diǎn)的耗能問題方面研究較多,可主要分為硬件和軟件2種方式。硬件方式是采用外界能量供給的方式,主要是采用太陽能供電,只要外界供給的能量大于負(fù)載的功耗需求,就可保證傳感器節(jié)點(diǎn)長期穩(wěn)定工作,但這種方式無疑會增加不少硬件成本。軟件方式主要是優(yōu)化通信機(jī)制和路由算法[3],以避免網(wǎng)絡(luò)堵塞或擁擠造成的能量浪費(fèi)。然而單純的軟件或硬件解決辦法是有限的,而且,WSNs節(jié)點(diǎn)無法僅依靠某種優(yōu)化降耗的方法來達(dá)到節(jié)點(diǎn)長期正常工作的要求。
因此,傳感器節(jié)點(diǎn)一方面必須采取外界能量供應(yīng)途徑,獲得源源不斷的外界能量;另一方面還要通過軟件的方式降低傳感器節(jié)點(diǎn)的功耗。這樣既可以盡可能地降低成本,又能保證傳感器節(jié)點(diǎn)長期穩(wěn)定工作。本文提出的休眠方法將以上2種方式有效地結(jié)合在一起,針對WSNs節(jié)點(diǎn)的能量消耗問題,采用太陽能充電管理模塊和電量檢測機(jī)制,并結(jié)合有效的智能休眠方法,實(shí)現(xiàn)了WSNs低功耗運(yùn)行,保證傳感器節(jié)點(diǎn)的長期穩(wěn)定工作。
本文提出的這種智能休眠方法,主要應(yīng)用于基于TinyOS平臺的WSNs系統(tǒng),此系統(tǒng)是一種基于WSNs的應(yīng)用系統(tǒng),該系統(tǒng)主要由大量傳感器節(jié)點(diǎn)組成的WSNs,收發(fā)基站和用于數(shù)據(jù)顯示與監(jiān)控的上位機(jī)三部分組成。其中傳感器節(jié)點(diǎn)和基站依托TI的CC2530—SoC芯片作為硬件平臺,以TinyOS實(shí)時(shí)操作系統(tǒng)作為軟件平臺,而上位機(jī)監(jiān)控軟件則使用無錫中科智聯(lián)公司開發(fā)的CasiStudio。系統(tǒng)示意圖如圖1所示。監(jiān)測區(qū)域內(nèi)的傳感器節(jié)點(diǎn)周期性采集各種環(huán)境信息(如溫度、濕度、光照等)和傳感器節(jié)點(diǎn)電池電量,以一跳或多跳的自組織方式,通過2.4GHz的無線通道上傳給基站,基站通過RS—232有線鏈路主動上傳給PC。上位機(jī)監(jiān)控軟件CasiStudio實(shí)現(xiàn)對串口上傳的數(shù)據(jù)的實(shí)時(shí)解析和顯示。
圖1 WSNs應(yīng)用系統(tǒng)示意圖
傳感器節(jié)點(diǎn)是本系統(tǒng)最重要組成部分之一,是智能休眠方法研究的主要對象。傳感器節(jié)點(diǎn)結(jié)構(gòu)[4]示意圖如圖2。一般情況下,WSNs布網(wǎng)完成以后,所有的傳感器節(jié)點(diǎn)休眠周期長短已由燒寫的程序決定,并在工作期間保持不變[5]。這種情況會存在一個(gè)不可避免的問題:一旦傳感器節(jié)點(diǎn)電池電量不斷降低時(shí),休眠周期不變,功耗依然很大,此時(shí)還沒有外界能量(太陽能)的供給(例如:晚上的時(shí)候),必然會產(chǎn)生電池電量過低致使傳感器節(jié)點(diǎn)不能正常工作的結(jié)果。本文的設(shè)計(jì)思路是實(shí)時(shí)地檢測傳感器節(jié)點(diǎn)電池電量[6],檢測到電量低到一個(gè)界限,延長傳感節(jié)點(diǎn)休眠時(shí)間,如休眠周期加倍,功耗就會降低將近50 %,這樣傳感器節(jié)點(diǎn)就有更多的時(shí)間等待外界能量的供給;外界能量開始供給,電池電量積累到一個(gè)界限時(shí),傳感器節(jié)點(diǎn)自動恢復(fù)原來的休眠周期,從而提高傳感器節(jié)點(diǎn)的供電穩(wěn)定性。
圖2 WSNs節(jié)點(diǎn)結(jié)構(gòu)示意圖
本系統(tǒng)軟件設(shè)計(jì)是基于TinyOS實(shí)時(shí)操作系統(tǒng)[7],是專門針對WSNs中的低功耗低速網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì)的嵌入式操作系統(tǒng)。TinyOS是一種適用于網(wǎng)絡(luò)化嵌入式系統(tǒng)的編程框架,通過這個(gè)框架將用戶設(shè)計(jì)的一些組件和操作系統(tǒng)的必要組件連接起來,就能方便地編譯出面向特定應(yīng)用的操作系統(tǒng),這對硬件資源和能量資源極為有限的系統(tǒng)來說非常重要。
軟件設(shè)計(jì)主要實(shí)現(xiàn)的功能是電量檢測和基于電量檢測的休眠周期的修改。傳感器節(jié)點(diǎn)實(shí)現(xiàn)的功能是電量檢測并傳遞給基站,同時(shí)監(jiān)聽并接收基站的休眠周期指令,按照休眠指令具體執(zhí)行休眠周期;基站實(shí)現(xiàn)的功能是接收電池電量數(shù)據(jù),并對電量界限進(jìn)行判斷和發(fā)送給節(jié)點(diǎn)修改休眠周期的指令。
1)電量檢測功能
TinyOS采用了組件的架構(gòu)方式,一個(gè)完整的應(yīng)用系統(tǒng)通過組合不同的組件來實(shí)現(xiàn)應(yīng)用。電量檢測部分用到的組件有App組件、Main組件、SensorCollection組件、RF收發(fā)組件、傳感器驅(qū)動組件和Adc組件等,各個(gè)組件形成一層一層的調(diào)用關(guān)系。其中最底層的組件是傳感器驅(qū)動組件和Adc組件,傳感器驅(qū)動組件是正確讀取傳感器數(shù)據(jù)的基礎(chǔ),本系統(tǒng)中的傳感器節(jié)點(diǎn)采用數(shù)字溫度濕度傳感器,以I2C協(xié)議通信,所以,需按照I2C協(xié)議的標(biāo)準(zhǔn)編寫驅(qū)動程序;電池電量是模擬量,所以,需要使用Adc組件設(shè)置采集的參考電壓、分辨率、AD端口(即CC2530的AD輸入口)。
傳感器節(jié)點(diǎn)的流程圖如圖3,具體電量采集過程如下:首先系統(tǒng)初始化各個(gè)組件,調(diào)用并使能傳感器驅(qū)動組件和Adc組件,周期地采集環(huán)境信息,溫度、濕度和電池電量,分別作為3組傳感器的數(shù)據(jù),單一傳感器數(shù)據(jù)的長度為2 byte,經(jīng)過RF組件送到2.4 GHz的發(fā)射天線,以電磁波的方式發(fā)給基站,整個(gè)過程完成了數(shù)據(jù)的采集與傳輸。
圖3 WSNs節(jié)點(diǎn)的流程圖
2)基于電量檢測的休眠周期的修改
節(jié)點(diǎn)執(zhí)行休眠周期修改的流程,具體過程如下:節(jié)點(diǎn)通過RF收發(fā)組件,監(jiān)聽并接收基站發(fā)送的廣播信息。此時(shí)節(jié)點(diǎn)會遇到2種情況:第一種情況是節(jié)點(diǎn)沒有收到廣播信息,則保持此時(shí)的休眠周期不變地運(yùn)行。第二種情況是節(jié)點(diǎn)收到廣播信息,廣播的指令是加倍休眠周期,則休眠組件就會將休眠周期信息告訴給系統(tǒng)中的各個(gè)組件,以加倍的休眠周期運(yùn)行;廣播的指令是恢復(fù)原來的休眠周期,則休眠組件同樣會通知系統(tǒng)中的各個(gè)組件,恢復(fù)原來的休眠周期。
基站的軟件流程圖如圖4,軟件程序中每個(gè)傳感器節(jié)點(diǎn)分別設(shè)有自己的節(jié)點(diǎn)號和對應(yīng)節(jié)點(diǎn)的標(biāo)志位,使用節(jié)點(diǎn)號目的是區(qū)分不同的節(jié)點(diǎn),對應(yīng)節(jié)點(diǎn)的標(biāo)志位可以表示該節(jié)點(diǎn)的休眠周期是否已被修改。工作流程如下:基站接收節(jié)點(diǎn)發(fā)送的數(shù)據(jù)包,首先通過節(jié)點(diǎn)的標(biāo)志位來判斷節(jié)點(diǎn)的休眠周期是否被修改過,沒有修改過(即對應(yīng)的節(jié)點(diǎn)標(biāo)志位等于0),則尋找傳感器數(shù)據(jù)包中表示電量的數(shù)據(jù),判斷電量的大小,一旦電量小于50 %,則對該單一節(jié)點(diǎn)以廣播的形式發(fā)送加倍休眠周期的指令,同時(shí)將該節(jié)點(diǎn)的標(biāo)志位置1,否則,直接進(jìn)入下一周期的循環(huán);如果休眠周期已被修改過(即對應(yīng)的節(jié)點(diǎn)標(biāo)志位等于1),同樣判斷電量的大小,電池積累的電量大于50%時(shí),就以廣播的形式對該節(jié)點(diǎn)發(fā)送恢復(fù)原來休眠周期的指令,否則,進(jìn)入下一周期的循環(huán)?;究偸茄h(huán)反復(fù)的執(zhí)行著上面的過程。
圖4 基站的軟件流程圖
傳感節(jié)點(diǎn)和基站有效的“配合”,可實(shí)現(xiàn)傳感器節(jié)點(diǎn)“以需求為導(dǎo)向”地調(diào)整休眠周期,達(dá)到智能休眠的效果。
1)測試設(shè)備:2個(gè)傳感器節(jié)點(diǎn),1個(gè)基站和接收數(shù)據(jù)的上位機(jī)。
2)測試條件:2014年1月7日,江蘇無錫,陰雨天。
3)測試過程:本實(shí)驗(yàn)將基站的節(jié)點(diǎn)號定義為1#,2個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)號分別定義為2#和3#。2個(gè)傳感器節(jié)點(diǎn)初始(默認(rèn))休眠周期為1 h,電池電量的界限設(shè)在50 %,加倍的休眠周期為2 h。
4)測試內(nèi)容:觀察傳感器節(jié)點(diǎn)的休眠周期是否會隨著電池電量的改變而有規(guī)律的調(diào)整:當(dāng)電池電量低于50 %,休眠周期是否會加倍;當(dāng)電池電量高于50 %,是否會恢復(fù)原來的休眠周期。還需驗(yàn)證是否只針對電量低于50 %的節(jié)點(diǎn)修改休眠周期和節(jié)點(diǎn)之間的休眠周期是否會產(chǎn)生相互影響。
5)測試結(jié)果:基于CasiStudio上位機(jī)接收的實(shí)驗(yàn)數(shù)據(jù),可得2#節(jié)點(diǎn)和3#節(jié)點(diǎn)的數(shù)據(jù)(包括溫度、濕度和電池電量)變化曲線,如圖5所示。具體分析如下:2個(gè)節(jié)點(diǎn)在04∶48∶16之前的4組數(shù)據(jù)的時(shí)間間隔是1 h,即休眠周期都是1 h,此時(shí)是夜晚,無太陽能供電,2個(gè)節(jié)點(diǎn)的電池電量逐漸降低。04∶48∶16時(shí),3#節(jié)點(diǎn)的電量下降到47 %,低于50 %,從圖5(b)可知,3#節(jié)點(diǎn)的休眠周期自動置為2 h,期間2#節(jié)點(diǎn)的電量一直在50 %之上,所以,休眠周期修仍為1 h;白天,太陽能供電給節(jié)點(diǎn),12∶42∶04時(shí),3#節(jié)點(diǎn)的電量積累到53 %,高于50 %,3#節(jié)點(diǎn)恢復(fù)原來的休眠周期1 h。測試結(jié)果顯示:傳感器節(jié)點(diǎn)的休眠周期會隨著其電池電量的改變而有規(guī)律的變化,傳感器節(jié)點(diǎn)基于電量檢測的自動調(diào)整休眠周期的功能也基本實(shí)現(xiàn)。
圖5 2#和3#節(jié)點(diǎn)的數(shù)據(jù)變化曲線
本文設(shè)計(jì)了一種基于傳感器節(jié)點(diǎn)電量檢測的WSNs智能休眠方法,成功地應(yīng)用在CC2530的硬件平臺和TinyOS實(shí)時(shí)操作系統(tǒng)的軟件平臺。整個(gè)系統(tǒng)實(shí)現(xiàn)了傳感器節(jié)點(diǎn)基于電池電量自動調(diào)整傳感器節(jié)點(diǎn)休眠周期的功能,達(dá)到了“智能”地降低傳感器節(jié)點(diǎn)的功耗,提高了系統(tǒng)的穩(wěn)定性和可靠性。此休眠方法可廣泛的應(yīng)用于基于TinyOS平臺的WSNs,達(dá)到系統(tǒng)功耗與外界能量(太陽能和鋰電池)供給的較好匹配,基本實(shí)現(xiàn)智能化管理WSNs傳感器節(jié)點(diǎn)電池電量的目的。
參考文獻(xiàn):
[1] Fakyildiz Ian,Su Weilian,Sankarasubramaniam Yogesh.A survey on sensor networks[J].IEEE Communication Magazine,2007,40(8):102-114.
[2] 孫利民.無線傳感器網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,2005:14-22.
[3] Shih E.Physical layer driven protocol and algorithm design for energy-efficient wireless sensor networks[C]∥Proc of the Se-venth Annual IEEE International Conference on Mobile Computing and Networking,2001:272-286.
[4] 胡奇勛,段渭軍,王福豹.無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)太陽能電源系統(tǒng)設(shè)[J].現(xiàn)代電子技術(shù),2011,34(6):199-201.
[5] 程 冬,丁保華,李 威.基于片上系統(tǒng)CC2530的采煤機(jī)遠(yuǎn)程遙控裝置設(shè)計(jì)[J].礦山機(jī)械,2010,38(3) :19-21.
[6] 唐慧強(qiáng),李 超.基于CC2530的鋰電池電量檢測系統(tǒng)的設(shè)計(jì)[J].化工自動化及儀表,2010,38:350-351.
[7] 潘 浩.無線傳感器網(wǎng)絡(luò)操作系統(tǒng)TinyOS[M].北京:清華大學(xué)出版社,2011:3-17.
[8] 王小強(qiáng).Zig Bee無線傳感器網(wǎng)絡(luò)設(shè)計(jì)與實(shí)現(xiàn)[M].北京:化學(xué)工業(yè)出版社,2013:7-8.