小型無(wú)線傳感器網(wǎng)絡(luò)的實(shí)現(xiàn)與P2P互聯(lián)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:傳感器網(wǎng)絡(luò)之間的互聯(lián)與通信將成為未來(lái)無(wú)線傳感器網(wǎng)絡(luò)的應(yīng)用模式之一,通過(guò)P2P技術(shù)互聯(lián)多個(gè)傳感器網(wǎng)絡(luò),可為用戶提供大規(guī)模、大范圍、多樣化的信息服務(wù)。在設(shè)計(jì)和實(shí)現(xiàn)基于SimplciTI協(xié)議的小型無(wú)線傳感器網(wǎng)絡(luò)的基礎(chǔ)上,提出在無(wú)線傳感器網(wǎng)絡(luò)上的P2F覆蓋,利用JXTA協(xié)議搭建P2P平臺(tái),實(shí)現(xiàn)了多個(gè)傳感器網(wǎng)絡(luò)以P2P的方式互聯(lián),并給出了硬件和軟件的實(shí)現(xiàn)方案。
關(guān)鍵詞:無(wú)線傳感器網(wǎng)絡(luò);SimplciTI;P2P;JXTA
通常,無(wú)線傳感器網(wǎng)絡(luò)(WSN)只是覆蓋人們感興趣的較小區(qū)域,這樣就形成了多個(gè)分散的小型網(wǎng)絡(luò)。通過(guò)借助現(xiàn)有的網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)多個(gè)小型無(wú)線傳感器網(wǎng)絡(luò)的互聯(lián),進(jìn)行數(shù)據(jù)的傳播、發(fā)布,能夠擴(kuò)大網(wǎng)絡(luò)的覆蓋范圍,更加有利于傳感器網(wǎng)絡(luò)數(shù)據(jù)的獲取。與其他方式相比,利用P2P的方式實(shí)現(xiàn)多個(gè)傳感器網(wǎng)絡(luò)的互聯(lián)具有非中心化、健壯性和可擴(kuò)展性等特點(diǎn)。
1 系統(tǒng)結(jié)構(gòu)
從整體來(lái)看,本文所提出系統(tǒng)主要包括2層結(jié)構(gòu),如圖1所示。第一層是傳感器網(wǎng)絡(luò)層,根據(jù)需求負(fù)責(zé)在傳感器網(wǎng)絡(luò)內(nèi)部收集監(jiān)測(cè)數(shù)據(jù);第二層是P2P虛擬網(wǎng)絡(luò)層,用來(lái)連接多個(gè)傳感器網(wǎng)絡(luò),每個(gè)傳感器網(wǎng)絡(luò)作為P2P網(wǎng)絡(luò)的一個(gè)對(duì)等體節(jié)點(diǎn),多個(gè)對(duì)等體節(jié)點(diǎn)形成P2P網(wǎng)絡(luò)。
2 基于SimpliciTI協(xié)議的小型無(wú)線傳感器網(wǎng)絡(luò)的設(shè)計(jì)與實(shí)現(xiàn)
2.1 SimpliciTI網(wǎng)絡(luò)協(xié)議
SimpliciTI網(wǎng)絡(luò)協(xié)議是TI公司推出的針對(duì)簡(jiǎn)單小型射頻網(wǎng)絡(luò)的專有低功耗RF協(xié)議。利用SimpliciTI網(wǎng)絡(luò)協(xié)議可實(shí)現(xiàn)MCU資源占用的最小化,從而降低系統(tǒng)成本。SimpliciTI軟件架構(gòu)分為3層:應(yīng)用層、網(wǎng)絡(luò)層和硬件邏輯層。其中,SimpliciTI網(wǎng)絡(luò)的加密在網(wǎng)絡(luò)層處理。
2.2 系統(tǒng)描述
本文設(shè)計(jì)與實(shí)現(xiàn)的基于SimpliciTI網(wǎng)絡(luò)協(xié)議的小型無(wú)線傳感器網(wǎng)絡(luò),在各種室內(nèi)環(huán)境中對(duì)光強(qiáng)、溫度進(jìn)行采集。整個(gè)系統(tǒng)由數(shù)據(jù)中心節(jié)點(diǎn)(AP)、范圍擴(kuò)展節(jié)點(diǎn)(ER)和終端節(jié)點(diǎn)(ED)組成,形成串狀拓?fù)浣Y(jié)構(gòu)。其中數(shù)據(jù)中心與協(xié)調(diào)器相連,協(xié)調(diào)器通過(guò)RS 232與電腦相連,如圖2所示。
終端節(jié)點(diǎn)由無(wú)線控制收發(fā)模塊、傳感器模塊和電源模塊組成,負(fù)責(zé)通過(guò)傳感器采集環(huán)境信息,并將采集到的信息實(shí)時(shí)地發(fā)往或通過(guò)范圍擴(kuò)展節(jié)點(diǎn)轉(zhuǎn)發(fā)到數(shù)據(jù)中心節(jié)點(diǎn)。范圍擴(kuò)展節(jié)點(diǎn)也稱為路由節(jié)點(diǎn),由無(wú)線控制收發(fā)模塊和電源模塊組成。數(shù)據(jù)中心由無(wú)線控制收發(fā)模塊組成,是整個(gè)傳感器網(wǎng)絡(luò)的中心,與計(jì)算機(jī)相連,可以通過(guò)計(jì)算機(jī)軟件查看終端節(jié)點(diǎn)發(fā)來(lái)的實(shí)時(shí)采集的環(huán)境信息,同時(shí)也可以對(duì)系統(tǒng)進(jìn)行設(shè)置和控制。另外,數(shù)據(jù)中心采用無(wú)線方式與其他范圍擴(kuò)展節(jié)點(diǎn)和終端節(jié)點(diǎn)進(jìn)行通信。
2.3 硬件的選型與設(shè)計(jì)
硬件選型主要包括無(wú)線控制收發(fā)模塊、傳感器模塊和電源模塊3部分。無(wú)線控制收發(fā)模塊采用TI公司生產(chǎn)的低成本、低功耗的CC1110片上系統(tǒng),包含一個(gè)標(biāo)準(zhǔn)的增強(qiáng)型8051MCU,帶有32 KB FLASH和4 KBRAM,工作在433 MHz,868 MHz,915 MHz ISM波段,其射頻收發(fā)器支持不同的調(diào)制格式,數(shù)據(jù)傳輸率可達(dá)500 Kb/s。傳感器模塊中的溫度傳感器選取Microchip公司的TC77,它是一款13位串行接口輸出的集成數(shù)字溫度傳感器,溫度分辨率為0.062 5℃;光敏傳感器采用10 kΩ的光敏電阻,將其串聯(lián)一個(gè)10 kΩ的電阻后,接到CC1110的ADC輸入引腳即可。此外,數(shù)據(jù)中心通過(guò)RS 232由電腦供電,終端節(jié)點(diǎn)和路由節(jié)點(diǎn)通過(guò)供電底板供電,供電電壓為3 V,其獨(dú)立的電池盒設(shè)計(jì),可便于移動(dòng)。
2.4 系統(tǒng)軟件設(shè)計(jì)
下面介紹無(wú)線傳感器網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)的軟件設(shè)計(jì)??紤]到程序的開發(fā)周期和可讀性,使用C語(yǔ)言進(jìn)行程序開發(fā)。
2.4.1 數(shù)據(jù)中心節(jié)點(diǎn)模塊
數(shù)據(jù)中心經(jīng)過(guò)BSP、協(xié)議棧、串口等初始化后,打開串口中斷,實(shí)現(xiàn)計(jì)算機(jī)與數(shù)據(jù)中心的通信,然后建立串狀網(wǎng)絡(luò),等待終端節(jié)點(diǎn)和范圍擴(kuò)展節(jié)點(diǎn)的加入。數(shù)據(jù)中心不斷監(jiān)測(cè)有多少節(jié)點(diǎn)設(shè)備加入,并判斷是否達(dá)到網(wǎng)絡(luò)容納設(shè)備的最大數(shù)量。如果還有空閑的接口(PORT),則為新加入的設(shè)備分配PORT,并發(fā)送應(yīng)答信息通知新加入設(shè)備通信的PORT編號(hào)。對(duì)于已經(jīng)加入網(wǎng)絡(luò)的設(shè)備,數(shù)據(jù)中心監(jiān)測(cè)是否收到這些設(shè)備發(fā)來(lái)的數(shù)據(jù)信息,如果收到符合格式的數(shù)據(jù),則通過(guò)串口上傳給計(jì)算機(jī)顯示。之后,數(shù)據(jù)中心檢測(cè)信道噪聲,如果噪聲可能會(huì)對(duì)通信造成干擾,則數(shù)據(jù)中心發(fā)生頻率跳變,跳到信道列表的下一個(gè)信道。
2.4.2 范圍擴(kuò)展節(jié)點(diǎn)模塊
范圍擴(kuò)展節(jié)點(diǎn)經(jīng)過(guò)硬件初始化和協(xié)議棧初始化之后,向數(shù)據(jù)中心節(jié)點(diǎn)發(fā)送加入網(wǎng)絡(luò)請(qǐng)求。成功加入網(wǎng)絡(luò)后,向數(shù)據(jù)中心節(jié)點(diǎn)周期發(fā)送ping消息,如果收到應(yīng)答,則處于等待數(shù)據(jù)轉(zhuǎn)發(fā)狀態(tài),向數(shù)據(jù)中心轉(zhuǎn)發(fā)終端節(jié)點(diǎn)發(fā)來(lái)的數(shù)據(jù)信息,如果沒(méi)有收到應(yīng)答,則查詢網(wǎng)絡(luò)當(dāng)前的工作信道,并跳轉(zhuǎn)至該信道,再轉(zhuǎn)發(fā)數(shù)據(jù)信息。
2.4.3 終端節(jié)點(diǎn)模塊
終端節(jié)點(diǎn)在初始化底層模塊、定時(shí)器和各傳感器模塊后,開始向中心節(jié)點(diǎn)發(fā)送加入網(wǎng)絡(luò)消息,并等待加入。加入網(wǎng)絡(luò)后,每隔一個(gè)固定的時(shí)間間隔通過(guò)傳感器模塊采集環(huán)境信息,查找中心節(jié)點(diǎn)工作的信道并跳變到該信道,將采集的環(huán)境信息發(fā)送到數(shù)據(jù)中心。
3 小型無(wú)線傳感器網(wǎng)絡(luò)的P2P互聯(lián)
3.1 JXTA協(xié)議
JXTA是SUN公司推出的一組開放的通用P2P協(xié)議,為開發(fā)新的P2P應(yīng)用程序提供基本的模塊和服務(wù),它對(duì)P2P節(jié)點(diǎn)的共同行為做了標(biāo)準(zhǔn)化,包括節(jié)點(diǎn)互相發(fā)現(xiàn)、自組織點(diǎn)組、發(fā)現(xiàn)和通告網(wǎng)絡(luò)服務(wù)、相互通信以及監(jiān)視其他節(jié)點(diǎn)等?;贘XTA的軟件架構(gòu)可以分為3層:核心層、服務(wù)層、應(yīng)用層。其中核心層封裝了P2P網(wǎng)絡(luò)的一些最基本的要素;服務(wù)層包含一些網(wǎng)絡(luò)服務(wù);應(yīng)用層包括一些應(yīng)用的實(shí)現(xiàn),如P2P即時(shí)消息、文件和資源共享等。
3.2 系統(tǒng)構(gòu)成
在構(gòu)建的P2P網(wǎng)絡(luò)中,有2種節(jié)點(diǎn):WSN網(wǎng)關(guān)和WSN控制單元。通常有一個(gè)WSN網(wǎng)關(guān)和多個(gè)WSN控制單元。WSN控制單元負(fù)責(zé)收集傳感器網(wǎng)絡(luò)中監(jiān)測(cè)到數(shù)據(jù),并將其傳播、發(fā)布;WSN網(wǎng)關(guān)既是一個(gè)P2P節(jié)點(diǎn),負(fù)責(zé)收集各個(gè)WSN控制單元傳播、發(fā)布的傳感器網(wǎng)絡(luò)的監(jiān)測(cè)數(shù)據(jù),又是一個(gè)網(wǎng)關(guān)設(shè)備,可以把傳感器網(wǎng)絡(luò)接入Internet等其他網(wǎng)絡(luò)。
該系統(tǒng)的單元實(shí)體包含WSN網(wǎng)關(guān)、WSN控制單元、協(xié)調(diào)器和WSN節(jié)點(diǎn)這4層設(shè)備。整個(gè)系統(tǒng)的數(shù)據(jù)流程圖如圖3所示。在傳感器網(wǎng)絡(luò)中,WSN節(jié)點(diǎn)啟動(dòng)數(shù)據(jù)采集過(guò)程,進(jìn)行采樣、A/D轉(zhuǎn)換等,然后將采集到的數(shù)據(jù)發(fā)送到協(xié)調(diào)器,協(xié)調(diào)器使用RS 232將在無(wú)線傳感器內(nèi)部收集到的數(shù)據(jù)傳送到WSN控制單元,WSN控制單元通過(guò)P2P平臺(tái)將傳感器網(wǎng)絡(luò)的監(jiān)測(cè)數(shù)據(jù)進(jìn)行發(fā)布、傳播,發(fā)送到WSN網(wǎng)關(guān),WSN控制單元和WSN網(wǎng)關(guān)之間通過(guò)JXTA中定義的管道進(jìn)行通信。
3.3 軟件設(shè)計(jì)
進(jìn)行JXTA開發(fā)需要搭建JXTA開發(fā)環(huán)境,該系統(tǒng)的開發(fā)選擇的是JXTA的J2SE平臺(tái)綁定,并在集成開發(fā)環(huán)境NetBeans中采用最新版本V2.5進(jìn)行Java程序的開發(fā)。此外,由于JDK的類庫(kù)并不提供串口通信的API,要進(jìn)行串口通信,需要額外安裝與配置相應(yīng)的JAR包和動(dòng)態(tài)庫(kù)。
3.3.1 WSN網(wǎng)關(guān)設(shè)計(jì)
作為一個(gè)JXTA的應(yīng)用程序,WSN網(wǎng)關(guān)首先需要通過(guò)加入默認(rèn)的網(wǎng)絡(luò)點(diǎn)組來(lái)實(shí)現(xiàn)JXTA平臺(tái)的初始化。然后需要?jiǎng)?chuàng)建一個(gè)新的點(diǎn)組WsnNet來(lái)提供傳感器參數(shù)監(jiān)測(cè)服務(wù),WSN網(wǎng)關(guān)創(chuàng)建該點(diǎn)組成功后,需要加入該點(diǎn)組,然后通過(guò)監(jiān)聽者類等待WSN控制單元的消息,如圖4(a)所示。
WSN網(wǎng)關(guān)通過(guò)管道實(shí)現(xiàn)與WSN控制單元之間的消息發(fā)送與接收,且采用基于事件的異步機(jī)制。該機(jī)制遵循Java標(biāo)準(zhǔn)事件設(shè)計(jì)模式,必須創(chuàng)建用于注冊(cè)以接收適當(dāng)事件的監(jiān)聽者。處理管道事件的監(jiān)聽者接口是PipeMsgListener接口,在WSN網(wǎng)關(guān)的應(yīng)用程序中實(shí)現(xiàn)了該接口,即管道服務(wù)在創(chuàng)建輸入管道的時(shí)候增加this指針,以在已經(jīng)創(chuàng)建的輸入管道上監(jiān)聽事件。當(dāng)對(duì)應(yīng)的事件發(fā)生時(shí),該監(jiān)聽者類將被通知,并調(diào)用監(jiān)聽者類的pipeMsgEvent()方法,通過(guò)getMessage()方法從pipeMsgEvent()中獲取該消息,最后根據(jù)設(shè)定好的格式處理接收到的消息。
3.3.2 WSN控制單元設(shè)計(jì)
WSN控制單元負(fù)責(zé)WSN網(wǎng)關(guān)和協(xié)調(diào)器之間的通信,它通過(guò)管道與WSN網(wǎng)關(guān)通信,通過(guò)RS 232接口與協(xié)調(diào)器通信。作為JXTA的一個(gè)節(jié)點(diǎn),WSN控制單元啟動(dòng)后,首先加入默認(rèn)的點(diǎn)組初始化JXTA平臺(tái),然后加入WSN網(wǎng)關(guān)創(chuàng)建的點(diǎn)組WsnNet以提供信息監(jiān)測(cè)服務(wù)。WSN控制單元實(shí)現(xiàn)了兩個(gè)事件,一個(gè)是PipeMsgListener,用于監(jiān)聽管道消息;另一個(gè)是SerialPortEventListener,用于監(jiān)聽串口的消息,如圖4(b)所示。
4 結(jié)語(yǔ)
今后無(wú)線傳感器網(wǎng)絡(luò)之間的交互和通信技術(shù)將是一項(xiàng)關(guān)鍵的技術(shù),WSN和P2P結(jié)合的系統(tǒng)可用來(lái)開發(fā)強(qiáng)大的應(yīng)用程序。本文首先完成了基于SimplictiTI網(wǎng)絡(luò)協(xié)議的低功耗小型無(wú)線傳感器網(wǎng)絡(luò)的設(shè)計(jì)與實(shí)現(xiàn),然后基于JXTA協(xié)議實(shí)現(xiàn)了多個(gè)傳感器網(wǎng)絡(luò)以P2P方式互聯(lián),從而實(shí)現(xiàn)數(shù)據(jù)的傳播、發(fā)布,擴(kuò)大傳感器網(wǎng)絡(luò)的覆蓋范圍,更加有利于傳感器網(wǎng)絡(luò)數(shù)據(jù)的獲取。