1 引言
隨著人們對(duì)煤礦生產(chǎn)安全工作的日益重視,煤礦企業(yè)對(duì)應(yīng)用于煤礦生產(chǎn)環(huán)境中的工業(yè)技術(shù)也提出了更高的要求,目前對(duì)瓦斯氣體濃度、溫濕度等現(xiàn)場(chǎng)物理環(huán)境參數(shù)的信號(hào)傳送很多是采用有線傳輸方式,即采用光纜、電力線纜或信號(hào)線纜等。這種傳統(tǒng)的有線布設(shè)方式存在著本質(zhì)的缺陷:布線繁瑣、線路依賴性強(qiáng)、安裝布設(shè)維護(hù)成本較大等。礦井一旦出現(xiàn)事故,特別是當(dāng)發(fā)生爆炸事件時(shí),傳感器設(shè)備及線纜往往會(huì)受到致命的破壞,不能為搜救工作及事態(tài)檢測(cè)提供信息。無(wú)線傳感器網(wǎng)絡(luò)是由部署在監(jiān)測(cè)區(qū)域內(nèi)大量的廉價(jià)微型傳感器組成,通過(guò)無(wú)線通信方式形成的一個(gè)多跳的自組織的網(wǎng)絡(luò)系統(tǒng),能夠協(xié)作地感知、采集和處理網(wǎng)絡(luò)覆蓋區(qū)域中感知對(duì)象的信息,并發(fā)送給觀察者。無(wú)線傳感器網(wǎng)絡(luò)的這些特點(diǎn)使其適合于煤礦生產(chǎn)過(guò)程中對(duì)礦井環(huán)境的監(jiān)測(cè)。
2 系統(tǒng)結(jié)構(gòu)
應(yīng)用于礦井環(huán)境監(jiān)測(cè)的無(wú)線傳感器網(wǎng)絡(luò)基本結(jié)構(gòu)由傳感器節(jié)點(diǎn)和中心節(jié)點(diǎn)組成,不同的監(jiān)測(cè)區(qū)域均有中心節(jié)點(diǎn),每個(gè)中心節(jié)點(diǎn)負(fù)責(zé)處理本區(qū)域內(nèi)的傳感器節(jié)點(diǎn)傳送過(guò)來(lái)的無(wú)線數(shù)據(jù),而基站模塊負(fù)責(zé)接收來(lái)自各個(gè)監(jiān)測(cè)區(qū)域內(nèi)的中心節(jié)點(diǎn)發(fā)送出的無(wú)線信號(hào),基站模塊最終可接入互聯(lián)網(wǎng),使得無(wú)線傳感器網(wǎng)絡(luò)的信息能夠被遠(yuǎn)程終端訪問(wèn)到,系統(tǒng)結(jié)構(gòu)如圖1所示。

圖1 無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)
在煤礦生產(chǎn)過(guò)程中,礦井中的物理環(huán)境可以由瓦斯傳感器、溫濕度傳感器、粉塵傳感器等進(jìn)行感知[3],這些傳感器的輸出信號(hào)由msp430f1611單片機(jī)(文中采用telosb硬件平臺(tái))接收,經(jīng)過(guò)cpu的處理后,利用rf收發(fā)模塊cc2420可將輸出信息進(jìn)行無(wú)線發(fā)送,傳感器節(jié)點(diǎn)的電源由電池提供。傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的硬件結(jié)構(gòu)如圖2所示。

傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的硬件結(jié)構(gòu)
3 傳感器網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)
拓?fù)浣Y(jié)構(gòu)的設(shè)計(jì)具有很強(qiáng)的針對(duì)性,設(shè)計(jì)何種拓?fù)浣Y(jié)構(gòu)是根據(jù)所需的應(yīng)用場(chǎng)景而提出的。礦井開(kāi)拓即從地面向地下開(kāi)掘一系列井巷,通至采區(qū),隨著開(kāi)采的進(jìn)行,井下巷道的形狀和位置不斷變化。依據(jù)傳感器節(jié)點(diǎn)之間的位置,將網(wǎng)絡(luò)中的所有節(jié)點(diǎn)劃分為一個(gè)個(gè)的簇單元,每個(gè)簇單元采用星型拓?fù)浣Y(jié)構(gòu)并且有一個(gè)簇頭節(jié)點(diǎn)(中心節(jié)點(diǎn))。因此,在整個(gè)無(wú)線傳感器網(wǎng)絡(luò)中就存在著兩種類型的傳感器節(jié)點(diǎn):普通的傳感器節(jié)點(diǎn)和簇首節(jié)點(diǎn)(中心節(jié)點(diǎn))。我們將礦井監(jiān)測(cè)系統(tǒng)分成兩個(gè)子系統(tǒng),第一個(gè)子系統(tǒng)由低傳輸范圍的和能量受限的簇節(jié)點(diǎn)組成,而另一個(gè)子系統(tǒng)由傳輸范圍較遠(yuǎn)并且具有更多能量供給的簇首節(jié)點(diǎn)(中心節(jié)點(diǎn))組成。第一個(gè)子系統(tǒng)形成了無(wú)線傳感器網(wǎng)絡(luò)的底層網(wǎng)絡(luò),而第二個(gè)子系統(tǒng)則形成了該傳感器網(wǎng)絡(luò)的上層網(wǎng)絡(luò)[4]。整個(gè)傳感器網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)如圖3所示。

拓?fù)浣Y(jié)構(gòu)邏輯圖
4 軟件設(shè)計(jì)
軟件系統(tǒng)的主要功能包括傳感器數(shù)據(jù)采集與處理、無(wú)線收發(fā)和節(jié)點(diǎn)定位等。傳感器數(shù)據(jù)采集與處理模塊主要設(shè)置瓦斯信號(hào)的采集參數(shù)并控制采集、讀取溫濕度傳感器的數(shù)據(jù)等;無(wú)線收發(fā)模塊控制對(duì)命令或數(shù)據(jù)的接收和發(fā)送;節(jié)點(diǎn)定位模塊對(duì)節(jié)點(diǎn)進(jìn)行實(shí)時(shí)定位。節(jié)點(diǎn)系統(tǒng)要支持傳感器網(wǎng)絡(luò),需要考慮網(wǎng)絡(luò)層的支持,方便系統(tǒng)擴(kuò)展,因此系統(tǒng)軟件的實(shí)現(xiàn)是在嵌入式操作系統(tǒng)上進(jìn)行的,無(wú)線傳感器網(wǎng)絡(luò)中節(jié)點(diǎn)使用的操作系統(tǒng)為tinyos。tinyos是由加州大學(xué)伯克利(berkeley)分校開(kāi)發(fā)的開(kāi)放源代碼操作系統(tǒng),是一種專門為嵌入式無(wú)線傳感器網(wǎng)絡(luò)設(shè)計(jì)的操作系統(tǒng),其特點(diǎn)是體積小、結(jié)構(gòu)高度模塊化、基于組件的架構(gòu)方式、低功耗等,這使得它能夠突破傳感器節(jié)點(diǎn)各種苛刻的限制,可快速實(shí)現(xiàn)各種應(yīng)用,非常適合wsn的特點(diǎn)和應(yīng)用需求。
4.1 現(xiàn)場(chǎng)傳感器數(shù)據(jù)獲取
通過(guò)各種傳感器,如瓦斯傳感器、溫濕度傳感器可以感知礦井現(xiàn)場(chǎng)的物理環(huán)境,分布在現(xiàn)場(chǎng)的節(jié)點(diǎn)需要獲取傳感器的數(shù)據(jù)進(jìn)行處理并無(wú)線發(fā)送出去。下面以筆者實(shí)現(xiàn)的test程序?yàn)槔?,分析獲取傳感器數(shù)據(jù)的方法[5]。該程序?qū)崿F(xiàn)了傳感器節(jié)點(diǎn)無(wú)線接收其他節(jié)點(diǎn)的命令,根據(jù)該命令控制本節(jié)點(diǎn)是否獲取傳感器數(shù)據(jù)并無(wú)線廣播出去。其中,確定adc通道的代碼為:
enum
{ tos_adc_gio0_port = unique("adcport"),
tosh_actual_adc_gio0_port = associate_adc_channel(
input_channel_a0,
reference_vrefplus_avss,
refvolt_level_1_5 ), };
根據(jù)程序的功能確定所需的組件為:main,testm,timerc,genericcomm,ledsc,adcc。在本文中,genericcomm組件的功能是接收上級(jí)節(jié)點(diǎn)發(fā)送來(lái)的命令,決定是否獲取傳感器的數(shù)據(jù)并將獲得的數(shù)據(jù)無(wú)線發(fā)送出去;timerc組件的功能是觸發(fā)節(jié)點(diǎn)adc采集傳感器數(shù)據(jù)且可設(shè)定采集頻率;adcc組件實(shí)現(xiàn)對(duì)模/數(shù)轉(zhuǎn)換器的控制;ledsc組件的作用是控制傳感器節(jié)點(diǎn)上led燈的顯示。該程序的程序結(jié)構(gòu)組件圖如圖4所示。

test的程序結(jié)構(gòu)組件圖
4.2 節(jié)點(diǎn)定位研究
(1)telosb節(jié)點(diǎn)的rssi值:telosb節(jié)點(diǎn)的無(wú)線通信模塊采用的是cc2420無(wú)線收發(fā)芯片,該芯片內(nèi)置了一個(gè)8bit 的 rssi寄存器,通過(guò)采樣8個(gè)符號(hào)周期的rss獲得rssi的均值。在tinyos2.x下cc2420activemessagec組件提供的cc2420packet接口中定義的getrssi()命令能夠?qū)崿F(xiàn)獲取接收信號(hào)的rssi。根據(jù)cc2420的規(guī)格說(shuō)明書(shū)[6](datasheet)中的描述,cc2420所提供的rssi的存儲(chǔ)器是一個(gè)帶正負(fù)號(hào)的寄存器,實(shí)際上是將一個(gè)字節(jié)分為正負(fù)兩部分,從寄存器讀出的值還需要加上一個(gè)偏移量,對(duì)應(yīng)于每次獲得的原始rssi其轉(zhuǎn)換方法如下:
if (rssi_raw < 128)//正值
{ //錯(cuò)誤取值,不處理 }
else if (rssi_raw > 127)//負(fù)值
{ rssi = -1 *((rssi_raw -1)^(0xff))-45;// rssi 轉(zhuǎn)換公式,單位 dbm }
上述轉(zhuǎn)換方法中rssi_raw為通過(guò)getrssi()命令獲得的寄存器中的原始rssi值,經(jīng)過(guò)轉(zhuǎn)換公式轉(zhuǎn)換后的實(shí)際rssi值為rssi,單位為dbm。由于telosb節(jié)點(diǎn)的最大發(fā)射功率0dbm,因此經(jīng)過(guò)傳輸損耗的接收信號(hào)的rssi值不可能為正,即當(dāng)rssi_raw為正值時(shí)是沒(méi)有意義的[7]。
(2)基于rssi值的節(jié)點(diǎn)定位:根據(jù)3.2.1中的方法可獲得rssi值,然后采用基于接收信號(hào)強(qiáng)度指示(rssi)定位算法[2]實(shí)現(xiàn)節(jié)點(diǎn)的精確定位,具體方法為:已知發(fā)射節(jié)點(diǎn)的發(fā)射信號(hào)強(qiáng)度, 接收節(jié)點(diǎn)根據(jù)收到信號(hào)的強(qiáng)度計(jì)算出信號(hào)的傳播損耗,然后根據(jù)信號(hào)傳播模型公式(1)將傳輸損耗轉(zhuǎn)化為距離,再利用三邊測(cè)量法計(jì)算出未知節(jié)點(diǎn)的位置。在實(shí)際定位中,要保證未知節(jié)點(diǎn)處于三個(gè)以上發(fā)射信號(hào)強(qiáng)度和位置坐標(biāo)已知的參考節(jié)點(diǎn)的通信范圍內(nèi),未知節(jié)點(diǎn)根據(jù)接收信號(hào)強(qiáng)度計(jì)算出信號(hào)的傳播損耗,進(jìn)而計(jì)算出節(jié)點(diǎn)位置。

其中,p(d)為接收信號(hào)強(qiáng)度(dbm);p(d0)為發(fā)送信號(hào)強(qiáng)度(dbm);n為路徑長(zhǎng)度和傳輸損耗之間的比例因子;d0表示參考節(jié)點(diǎn)和基站間的距離;d為未知節(jié)點(diǎn)和基站間的距離;γ為修正因子,根據(jù)經(jīng)驗(yàn)進(jìn)行修正。
5 結(jié)束語(yǔ)
本文介紹了無(wú)線傳感器網(wǎng)絡(luò)在礦井環(huán)境監(jiān)測(cè)中的系統(tǒng)結(jié)構(gòu)、網(wǎng)絡(luò)節(jié)點(diǎn)硬件結(jié)構(gòu)和應(yīng)用于礦井監(jiān)測(cè)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu);在軟件設(shè)計(jì)方面,分析了基于telosb硬件平臺(tái)的傳感器信號(hào)獲取方法并給出了具體實(shí)現(xiàn),最后對(duì)基于rssi值的節(jié)點(diǎn)定位技術(shù)進(jìn)行了研究。本文提出的無(wú)線傳感器網(wǎng)絡(luò)礦井監(jiān)測(cè)系統(tǒng)對(duì)于提高煤礦的安全生產(chǎn)能力和管理水平具有較高的實(shí)用價(jià)值。
(轉(zhuǎn)載)