一種高能效的傳感器網(wǎng)絡(luò)鄰居狀態(tài)查詢方法
【專利說明】一種高能效的傳感器網(wǎng)絡(luò)鄰居狀態(tài)查詢方法 一、技術(shù)領(lǐng)域
[0001] 本發(fā)明一種網(wǎng)絡(luò)鄰居狀態(tài)查詢方法,尤其是無線傳感器網(wǎng)絡(luò)中實(shí)現(xiàn)高能效的同時(shí) 查詢技術(shù)。 二、
【背景技術(shù)】
[0002] 作為物聯(lián)網(wǎng)的核心技術(shù),無線傳感器網(wǎng)絡(luò)將客觀世界的物理信息同傳輸網(wǎng)絡(luò)連接 在一起,為人們提供最直接,最有效和最真實(shí)的信息。傳感器節(jié)點(diǎn)利用內(nèi)置的傳感裝置監(jiān)測(cè) 自身所處環(huán)境的信息,比如溫度,聲音,震動(dòng),壓力,污染物等。傳感器節(jié)點(diǎn)上配有無線通信 芯片,能夠?qū)⑺O(jiān)測(cè)到的環(huán)境信息發(fā)送給臨近的其他節(jié)點(diǎn)或基站。多個(gè)傳感器節(jié)點(diǎn)通過無 線通信方式可以形成一個(gè)多跳的自組織網(wǎng)絡(luò)系統(tǒng)。在實(shí)際的無線傳感器網(wǎng)絡(luò)應(yīng)用中,某個(gè) 查詢節(jié)點(diǎn)(比如數(shù)據(jù)收集節(jié)點(diǎn))通常需要了解其所有鄰居節(jié)點(diǎn)的狀態(tài)以做出相應(yīng)的決策。 為了獲得鄰居節(jié)點(diǎn)的信息,節(jié)點(diǎn)可以采取輪詢的方式和每個(gè)鄰居通信,或者采用TDMA的方 式廣播一個(gè)查詢數(shù)據(jù)包之后,每個(gè)節(jié)點(diǎn)按照預(yù)先定好的順序依次回復(fù)其狀態(tài)。盡管這兩種 方法實(shí)現(xiàn)起來比較簡(jiǎn)單,它們的可擴(kuò)展性都不夠好,因?yàn)椴樵児?jié)點(diǎn)的通信時(shí)延和能量消耗 隨著都鄰居節(jié)點(diǎn)的數(shù)目的增加而線性的增大。
[0003] 利用同時(shí)查詢技術(shù),查詢節(jié)點(diǎn)需要首先廣播一個(gè)數(shù)據(jù)包,這個(gè)數(shù)據(jù)包中可能包含 有查詢節(jié)點(diǎn)感興趣的一個(gè)謂語(yǔ)條件,比如詢問鄰居節(jié)點(diǎn)是否監(jiān)測(cè)到某一事件等。收到廣 播包的鄰居節(jié)點(diǎn)會(huì)判斷自身的狀態(tài)是否滿足這個(gè)謂語(yǔ)條件,如果滿足的話就立即回復(fù)一個(gè) ACK信號(hào),不滿足的話則保持沉默。如果有多個(gè)鄰居節(jié)點(diǎn)滿足這個(gè)條件,那么會(huì)有多個(gè)ACK 信號(hào)同時(shí)發(fā)出,造成ACK信號(hào)碰撞。根據(jù)無線碰撞的特點(diǎn),查詢節(jié)點(diǎn)將不可能解出疊加信號(hào) 所包含的內(nèi)容,因此傳統(tǒng)的基于解包的協(xié)議在這里無法使用。 三、
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的是,在無線傳感器網(wǎng)絡(luò)中實(shí)現(xiàn)鄰居節(jié)點(diǎn)狀態(tài)信息的同時(shí)查詢技術(shù)。 為了實(shí)現(xiàn)同時(shí)查詢,本發(fā)明提出利用混合信號(hào)的能量值來編碼節(jié)點(diǎn)的狀態(tài)信息。利用接收 能量的信息,查詢節(jié)點(diǎn)不需要解包,只需根據(jù)接收能量值就可以判斷所有鄰居節(jié)點(diǎn)的狀態(tài)。 與傳統(tǒng)的基于輪詢的查詢技術(shù)和基于TDMA的查詢技術(shù)相比,同時(shí)查詢技術(shù)的時(shí)延與鄰居 節(jié)點(diǎn)的數(shù)目無關(guān),只需要常數(shù)度的時(shí)間復(fù)雜度就可以收集所有鄰居節(jié)點(diǎn)的狀態(tài)。
[0005] 為了實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案是,高能效的傳感器網(wǎng)絡(luò)中鄰居狀態(tài)查詢 方法,使得一個(gè)查詢節(jié)點(diǎn)同時(shí)查詢其所有鄰居節(jié)點(diǎn)的狀態(tài);步驟如下:
[0006] 1)根據(jù)傳感器網(wǎng)絡(luò)監(jiān)控區(qū)域,布置一定數(shù)目的傳感器節(jié)點(diǎn),確定一個(gè)查詢節(jié)點(diǎn),該 節(jié)點(diǎn)定期的查詢其所在位置的所有鄰居節(jié)點(diǎn)的狀態(tài);
[0007] 2)查詢節(jié)點(diǎn)在離線階段和每個(gè)鄰居節(jié)點(diǎn)通信,鄰居節(jié)點(diǎn)在離線階段給查詢節(jié)點(diǎn) 發(fā)送幾個(gè)包含了發(fā)送能量的數(shù)據(jù)包,查詢節(jié)點(diǎn)根據(jù)數(shù)據(jù)包中發(fā)送能量的信息和數(shù)據(jù)包的接 收能量信息來估算無線信號(hào)從每個(gè)鄰居節(jié)點(diǎn)位置到查詢節(jié)點(diǎn)位置的路徑損耗;
[0008] 3)查詢節(jié)點(diǎn)在離線階段廣播一個(gè)時(shí)鐘校準(zhǔn)消息,收到時(shí)鐘校準(zhǔn)消息時(shí),鄰居節(jié)點(diǎn) 記錄收到消息的時(shí)間,并將該時(shí)間依次回傳給查詢節(jié)點(diǎn);查詢節(jié)點(diǎn)根據(jù)收到回傳消息的時(shí) 間以及消息數(shù)據(jù)中的時(shí)間來估算每個(gè)鄰居節(jié)點(diǎn)相對(duì)自己的時(shí)鐘偏移量;
[0009] 4)查詢節(jié)點(diǎn)根據(jù)每個(gè)鄰居節(jié)點(diǎn)的相對(duì)時(shí)鐘偏移量發(fā)送一定數(shù)目的空指令給鄰居 節(jié)點(diǎn),鄰居節(jié)點(diǎn)收到空指令的數(shù)目后,在查詢階段每次回復(fù)消息前都先執(zhí)行一定的空指令 然后才回復(fù)查詢消息;
[0010] 5)查詢節(jié)點(diǎn)根據(jù)每個(gè)鄰居節(jié)點(diǎn)的路徑損耗,給每個(gè)鄰居節(jié)點(diǎn)分配一個(gè)發(fā)送能量, 鄰居節(jié)點(diǎn)收到分配的發(fā)送能量消息后,在查詢階段每次回復(fù)消息時(shí)都以指定的發(fā)送能量發(fā) 送;
[0011] 6)查詢節(jié)點(diǎn)通過給每個(gè)鄰居節(jié)點(diǎn)分配一個(gè)發(fā)送能量使得每個(gè)鄰居節(jié)點(diǎn)的回復(fù)信 號(hào)到達(dá)查詢節(jié)點(diǎn)時(shí)能量大小都相同,然后根據(jù)多個(gè)回復(fù)信號(hào)疊加后的能量來估計(jì)鄰居節(jié)點(diǎn) 中滿足某一條件的節(jié)點(diǎn)數(shù)目;
[0012] 7)查詢節(jié)點(diǎn)通過給每個(gè)鄰居節(jié)點(diǎn)分配一個(gè)發(fā)送能量,使得鄰居節(jié)點(diǎn)回復(fù)的信號(hào)到 達(dá)查詢節(jié)點(diǎn)時(shí)能量大小都非常分散,然后根據(jù)多個(gè)回復(fù)信號(hào)疊加后的能量值來估計(jì)鄰居節(jié) 點(diǎn)中滿足某一條件的節(jié)點(diǎn)的身份信息(如節(jié)點(diǎn)號(hào)等);
[0013] 查詢節(jié)點(diǎn)廣播一個(gè)查詢條件后,所有鄰居節(jié)點(diǎn)根據(jù)自身的狀態(tài)同時(shí)恢復(fù)ACK或 NAK消息,多個(gè)消息會(huì)在查詢節(jié)點(diǎn)處產(chǎn)生疊加效果,查詢節(jié)點(diǎn)根據(jù)信號(hào)疊加后的接收能量來 判斷每個(gè)鄰居節(jié)點(diǎn)的狀態(tài)。
[0014] 查詢節(jié)點(diǎn)在進(jìn)行查詢前,需要在離線階段與每個(gè)鄰居節(jié)點(diǎn)通信,根據(jù)發(fā)送數(shù)據(jù)包 和接收數(shù)據(jù)包的能量值來確定每個(gè)鄰居節(jié)點(diǎn)到查詢節(jié)點(diǎn)的信號(hào)傳播路徑損耗;求出路徑損 耗后,查詢節(jié)點(diǎn)即可對(duì)任意鄰居節(jié)點(diǎn)在給定發(fā)送能量大小時(shí),估算鄰居節(jié)點(diǎn)接收發(fā)送信號(hào) 的能量。
[0015] 查詢節(jié)點(diǎn)在進(jìn)行查詢前,需要在離線階段與每個(gè)鄰居節(jié)點(diǎn)通信,根據(jù)發(fā)送數(shù)據(jù)和 接收數(shù)據(jù)的不同時(shí)刻來估算每個(gè)鄰居節(jié)點(diǎn)相對(duì)查詢節(jié)點(diǎn)的時(shí)鐘偏移量;算出時(shí)鐘偏移量 后,之后鄰居節(jié)點(diǎn)在每次回復(fù)ACK或NAK之前都執(zhí)行一定數(shù)目的空指令,使得所有信號(hào)都同 時(shí)到達(dá)查詢節(jié)點(diǎn)處,產(chǎn)生ConstructiveInterference;
[0016] 查詢節(jié)點(diǎn)給每個(gè)鄰居節(jié)點(diǎn)分配相似的發(fā)送能量,來估計(jì)滿足某一條件的鄰居節(jié)點(diǎn) 數(shù);或者給每個(gè)鄰居節(jié)點(diǎn)分配非常分散的發(fā)送能量,來估計(jì)滿足某一條件的鄰居節(jié)點(diǎn)的身 份信息。
[0017] 利用鄰居節(jié)點(diǎn)同時(shí)回復(fù)的ACK信號(hào)疊加之后的接收能量來判斷回復(fù)節(jié)點(diǎn)的數(shù)目 和身份信息;要實(shí)現(xiàn)信號(hào)疊加之后的能量預(yù)測(cè)模型,查詢節(jié)點(diǎn)需要知道每個(gè)鄰居節(jié)點(diǎn)的路 徑損耗和時(shí)鐘漂移系數(shù);而且信號(hào)疊加之后的能量不能超過查詢節(jié)點(diǎn)接收能量的上限;包 含下列步驟:
[0018] 1)鄰居節(jié)點(diǎn)路徑損耗估計(jì);
[0019] 2)鄰居節(jié)點(diǎn)時(shí)鐘漂移系數(shù)估計(jì);
[0020] 3)建立信號(hào)能量疊加模型;
[0021] 4)估計(jì)鄰居節(jié)點(diǎn)中滿足某一條件的節(jié)點(diǎn)數(shù)目或者節(jié)點(diǎn)身份信息;
[0022] 上述步驟中1) _3)需要在離線階段完成,且一次完成之后不需要再執(zhí)行步驟第4) 則是查詢節(jié)點(diǎn)在任何時(shí)候想要查詢鄰居狀態(tài)信息時(shí)在線完成的。
[0023] 第一階段:估計(jì)鄰居節(jié)點(diǎn)的路徑損耗
[0024] 考慮一個(gè)由查詢節(jié)點(diǎn)s和鄰居節(jié)點(diǎn)集合N所組成的靜態(tài)無線網(wǎng)絡(luò)。用L(s,i)來 表示節(jié)點(diǎn)i(ieN)到s的路徑損耗。本文中的L(s,i)表示的是i到s的實(shí)際路徑損耗, 不僅包含自由空間損耗還包括遮蔽和多徑效應(yīng)等。在靜態(tài)網(wǎng)絡(luò)中,我們假定L(s,i)的變化 很小,可以當(dāng)做一個(gè)常數(shù)來對(duì)待。用Ρα,1〇來表示當(dāng)單個(gè)節(jié)點(diǎn)i以發(fā)送能量h回復(fù)ACK 信號(hào)時(shí)查詢節(jié)點(diǎn)的接收能。,有P(i, =aihi+bi,這里ajPb;是待估系數(shù)。注意,a;是發(fā) 送能量h的放縮系數(shù),bi與背景噪音n以及路徑損耗L(s,i)有關(guān):b1=n-L(s,i)對(duì)于某 個(gè)特定的節(jié)點(diǎn),a;,bdPn都是常數(shù)。
[0025] 要在給定匕的情況下預(yù)測(cè)PahJ,查詢節(jié)點(diǎn)首先需要對(duì)鏈路(i,s)上的ajPbi 這兩個(gè)系數(shù)進(jìn)行估計(jì)。這需要至少兩個(gè)像(ρα,ιο,ιο這樣的元組樣本。為了降低估計(jì)誤 差,在實(shí)驗(yàn)中我們用了更多的這樣的元組樣本,然后用最小均方差來估計(jì) &1和bi。知道ai 和匕后就可以計(jì)算路徑損耗L,以及給定某鄰居節(jié)點(diǎn)的發(fā)送能量預(yù)測(cè)其接收能量了。
[0026] 第二階段:估計(jì)鄰居節(jié)點(diǎn)時(shí)鐘漂移系數(shù)
[0027] 1)信號(hào)傳播時(shí)延:是指信號(hào)在空中從查詢節(jié)點(diǎn)到接收節(jié)點(diǎn),再?gòu)慕邮展?jié)點(diǎn)到查詢 節(jié)點(diǎn)這兩趟的飛行時(shí)間;
[0028] 2)軟件時(shí)延:包括a).接收節(jié)點(diǎn)的通信芯片監(jiān)測(cè)到信號(hào)到達(dá)之后將其SFD引腳置 低電平到MCU監(jiān)測(cè)到SFD引腳上的低電平所產(chǎn)生的時(shí)延;b)MCU需要判斷接收包的謂語(yǔ)條 件以及向通信芯片發(fā)出回復(fù)ACK命令;這些上層邏輯的所對(duì)應(yīng)的底層指令的執(zhí)行所產(chǎn)生的 時(shí)延以及c)通信芯片監(jiān)測(cè)到的MCU所發(fā)出的回復(fù)ACK命令的時(shí)延;
[0029] 3)硬件時(shí)延:通信芯片在回復(fù)ACK之前需要調(diào)整其內(nèi)部的壓控振蕩器以及從接包 狀態(tài)
[0030] 轉(zhuǎn)移到發(fā)包狀態(tài)所需要的時(shí)延;
[0031 ] 查詢節(jié)點(diǎn)的數(shù)據(jù)發(fā)送時(shí)延與所有節(jié)點(diǎn)的數(shù)據(jù)接收時(shí)延都是相同的,由此估計(jì)每一 個(gè)接收節(jié)點(diǎn)相對(duì)查詢節(jié)點(diǎn)的時(shí)鐘漂移系數(shù);在獲得每一個(gè)節(jié)點(diǎn)的時(shí)鐘漂移系數(shù)后,查詢節(jié) 點(diǎn)給每個(gè)鄰居節(jié)點(diǎn)分配一定數(shù)目的空指令,所有鄰居節(jié)點(diǎn)的信號(hào)最后都同時(shí)到達(dá)查詢節(jié) 點(diǎn)。鄰居節(jié)點(diǎn)需要執(zhí)行的空指令數(shù)目由查詢節(jié)點(diǎn)在離線階段計(jì)算并發(fā)給每個(gè)節(jié)點(diǎn);
[0032] 第三階段、建立信號(hào)能量疊加模型
[0033] 考慮多個(gè)無線信號(hào)在查詢節(jié)點(diǎn)處疊加的情況。假