趙永志
(上海電力大學 電子與信息工程學院,上海 200090)
近年來,新冠肺炎疫情肆虐全球,導致全球經(jīng)濟衰退,糧食供需趨緊。雖然我國農(nóng)業(yè)能夠保障國內(nèi)安全生產(chǎn)需要,但仍存在對土地性狀認識不清、水肥藥等要素投入較多的問題[1],需提高生產(chǎn)效率,精準投入生產(chǎn)要素,進一步節(jié)約成本與資源。隨著電子技術和無線網(wǎng)絡技術的發(fā)展,智慧農(nóng)業(yè)成為各國農(nóng)業(yè)工作者的研究熱點,通過無線網(wǎng)絡技術實時獲取農(nóng)作物的生長狀況信息,進行精準的灌溉、調(diào)溫、施肥、打藥的自動控制,能夠提高生產(chǎn)要素的利用效率,推進農(nóng)業(yè)生產(chǎn)實現(xiàn)自動化。
藍牙技術作為一種應用廣泛的物聯(lián)網(wǎng)技術,具有低功耗、低成本、安全性高的特點,適合用于智慧農(nóng)業(yè)中的長時間、低功耗的環(huán)境監(jiān)測。早期藍牙僅能以一對一、一對多的方式進行連接,在如今設備數(shù)量快速增長的時期已無法滿足實際需要。于是在2019年,藍牙技術聯(lián)盟發(fā)布了新的BLE Mesh規(guī)范,基于低功耗藍牙協(xié)議,以廣播中繼的方式實現(xiàn)多對多的節(jié)點連接,為智能硬件互聯(lián)互通提供了新的技術手段。
在BLE Mesh規(guī)范中,并不存在一個集中器路由的角色,通過廣播中繼的方式,將數(shù)據(jù)傳輸?shù)讲辉谥苯訜o線電覆蓋范圍內(nèi)的設備,擴大通信范圍。但是這種“網(wǎng)絡泛洪”方式,若不加以限制,很容易出現(xiàn)無限制的中繼轉發(fā),進而使得網(wǎng)絡資源快速被耗盡。為此,藍牙規(guī)范采取了2個措施用來避免無限制中繼,分別為信息緩存隊列和TTL字段。
信息緩存隊列用來保證同一網(wǎng)絡數(shù)據(jù)包僅能被同一節(jié)點中繼一次。在每個節(jié)點的網(wǎng)絡層都包含一個信息緩存隊列,若某個剛收到的網(wǎng)絡數(shù)據(jù)包已經(jīng)在緩存隊列中,則會將該數(shù)據(jù)包直接丟棄。
TTL字段用來限制網(wǎng)絡數(shù)據(jù)包傳輸?shù)奶鴶?shù)。在每個數(shù)據(jù)包中都包含一個TTL字段,該數(shù)據(jù)包每次被中繼,該TTL字段將會減少1,若該數(shù)據(jù)包的TTL值已經(jīng)小于2,則該數(shù)據(jù)包會被直接丟棄。
雖然上述2項措施在一定程度上減少了中繼轉發(fā)帶來的網(wǎng)絡資源消耗,但仍然存在無效轉發(fā)的問題。隨著電子技術的發(fā)展,藍牙傳輸距離已可以達到500 m,然而實際在水肥智能控制、農(nóng)作物生長溫度調(diào)節(jié)等場景中,智能設備間距大多在幾十米左右,某一節(jié)點轉發(fā)消息,其廣播范圍內(nèi)的設備都會進行轉發(fā),增加了不必要的轉發(fā),增大網(wǎng)絡擁塞和能源消耗。
自BLE Mesh規(guī)范發(fā)布以來,諸多學者也對BLE Mesh網(wǎng)絡的路由轉發(fā)機制進行了研究。孫吉武[2]提出了一種機會路由優(yōu)化協(xié)議,綜合改進了機會路由中的后備節(jié)點集和協(xié)調(diào)策略,從路由機制的角度優(yōu)化了網(wǎng)絡的時延與吞吐量指標。周曉明等[3]提出了基于改進的泛洪算法的藍牙Mesh路由方法,通過限制一次數(shù)據(jù)包傳輸過程中參與轉發(fā)的節(jié)點個數(shù)來減少不必要的節(jié)點轉發(fā),根據(jù)每個節(jié)點的剩余能量確定該節(jié)點的轉發(fā)概率,從而均衡了整個網(wǎng)絡節(jié)點的能量消耗。李曉輝等[4]提出了一種基于藍牙Mesh網(wǎng)絡的節(jié)點及其控制方法,根據(jù)節(jié)點的接收信號強度和收包速率來計算節(jié)點是否轉發(fā)數(shù)據(jù)包和轉發(fā)延時,提升了數(shù)據(jù)傳輸?shù)膶崟r性,減少了廣播風暴、網(wǎng)絡堵塞的可能性。
然而,以上的路由協(xié)議大都采用復雜的交互機制或采用部分節(jié)點參與轉發(fā)的方式來優(yōu)化路由協(xié)議。然而在實際實現(xiàn)方面,BLE Mesh規(guī)范以模型為基礎進行消息傳遞,且采用AppKey對應用層數(shù)據(jù)進行加密,轉發(fā)節(jié)點若無對應AppKey,只能提取數(shù)據(jù)包中的消息序列號、TTL值、源地址、目的地址等信息,對數(shù)據(jù)包判斷是否轉發(fā)存在問題。本文提出一種基于功率控制的BLE Mesh路由轉發(fā)機制,通過改變節(jié)點的發(fā)射功率,使用簡單的交互機制,讓廣播區(qū)域外層的節(jié)點進行數(shù)據(jù)轉發(fā),減少了參與轉發(fā)節(jié)點的數(shù)量,降低了網(wǎng)絡數(shù)據(jù)包碰撞概率,減少了BLE Mesh網(wǎng)絡整體能源消耗,提升了網(wǎng)絡的可靠性。
隨著電子技術的發(fā)展,藍牙芯片的發(fā)射功率和接收機靈敏度不斷提高,其傳輸范圍也隨之增強。如Nordic的nRF52833芯片,在2.4 GHz、1Mbps速率下,其TX功率最高可達+8 dBm,最低為-20 dBm,并可以在范圍內(nèi)以4 dB幅度進行調(diào)整。其接收機靈敏度也可達到-93 dBm。根據(jù)全向天線路徑損耗與傳輸距離的近似關系式(1)可以得到見表1的傳輸距離。
表1 路徑損耗與傳輸距離的關系
其中:Path Loss為路徑損耗,單位為dB;d為傳輸距離,單位為m。
由表1可知,藍牙設備的傳輸半徑變化范圍較大,通過合理的編碼設置便可控制其傳輸距離。為方便下文描述,設定ABC 3種TX功率傳輸?shù)燃?,且功率A>B>C。
傳統(tǒng)的BLE Mesh網(wǎng)絡路由泛洪多采用單一輸出功率進行通信,其中繼轉發(fā)機制如圖1所示。圖中節(jié)點1作為收到數(shù)據(jù)包的轉發(fā)節(jié)點,節(jié)點2、3、4為轉發(fā)節(jié)點,節(jié)點5為數(shù)據(jù)包的目的節(jié)點。節(jié)點1在收到數(shù)據(jù)包且判斷需要轉發(fā)后,便開始以特定功率開始廣播,節(jié)點2、3處于廣播范圍內(nèi),收到數(shù)據(jù)包判斷后都會進行轉發(fā),最后經(jīng)節(jié)點4轉發(fā)到達目的節(jié)點5。該方式中,節(jié)點2、3都會進行消息轉發(fā),但是實際上僅需節(jié)點3轉發(fā)即可。在實際情況中,如智能燈控場景下,智能設備的距離大都在2~3 m,采用此方式會造成大量的額外節(jié)點轉發(fā),消耗網(wǎng)絡能量。
圖1 傳統(tǒng)的BLE Mesh網(wǎng)絡路由泛洪
本文提出的基于功率控制的BLE Mesh路由轉發(fā)機制以傳統(tǒng)泛洪算法為基礎,每次消息轉發(fā)采用2次發(fā)送方式,第一次以功率A發(fā)送數(shù)據(jù)包,包含所需發(fā)送信息。在隨機延時后以低一等級的功率B發(fā)送不轉發(fā)指令,為減小發(fā)送消耗,不轉發(fā)指令不包含數(shù)據(jù)信息PDU,其序列號、TTL值、源地址、目的地址和第一次發(fā)送數(shù)據(jù)包保持一致。由于2次數(shù)據(jù)發(fā)送功率不同,且第1次發(fā)送數(shù)據(jù)傳輸范圍較廣,其他轉發(fā)節(jié)點在接收到轉發(fā)消息后并不立即轉發(fā),開始偵聽不轉發(fā)指令,若接收到不轉發(fā)指令,則取消轉發(fā)。如圖2所示,節(jié)點2、3接收到數(shù)據(jù)包后,偵聽以B功率發(fā)送的不轉發(fā)指令,此時由于傳輸距離不同,節(jié)點2收到不轉發(fā)指令,則取消轉發(fā),而節(jié)點3由于距離較遠,接收不到不轉發(fā)指令,則進行轉發(fā),最后由節(jié)點4轉發(fā)至目的節(jié)點5。
圖2 基于功率控制的BLE Mesh路由轉發(fā)機制
BLE Mesh規(guī)范中規(guī)定了4種地址用來消息發(fā)布,其中單播地址和組播地址較為常用。目的地址為單播地址的數(shù)據(jù)包只能由1個元素進行處理。目的地址為組播地址的數(shù)據(jù)包可以由訂閱該地址的多個元素進行處理。目前數(shù)據(jù)包的TTL值若無心跳廣播輔助設置下,大多由經(jīng)驗值或全網(wǎng)統(tǒng)一值去設置??紤]如圖3所示情況,目的地址為節(jié)點2內(nèi)元素單播地址的數(shù)據(jù)包,若TTL值設置不合理,節(jié)點2、3收到數(shù)據(jù)包后,仍會進行轉發(fā)。此時節(jié)點4、5的轉發(fā)則為無效轉發(fā),浪費了網(wǎng)絡資源。
圖3 數(shù)據(jù)包目的地址在節(jié)點單跳廣播范圍內(nèi)
這種情況下就要求節(jié)點掌握其單跳范圍內(nèi)節(jié)點元素內(nèi)目的地址,由于BLE Mesh網(wǎng)絡內(nèi)消息大多基于模型去傳遞,為此本文提出創(chuàng)建新的Vendor模型,用來傳遞節(jié)點訂閱信息。網(wǎng)絡內(nèi)所有節(jié)點內(nèi)置Vendor模型,并將Vendor模型的訂閱和發(fā)布地址設置為Vendor組地址,這樣就可以由Vendor模型進行控制消息的傳遞。當網(wǎng)絡組建完成后,網(wǎng)絡內(nèi)節(jié)點將本節(jié)點內(nèi)元素單播地址封裝進數(shù)據(jù)包,將TTL值設置為0,表示非中繼數(shù)據(jù)包,并進行廣播發(fā)送。其他節(jié)點通過Vendor模型收集單跳廣播范圍內(nèi)節(jié)點的單播地址信息并存儲。若待轉發(fā)數(shù)據(jù)包的目的地址在本節(jié)點單跳范圍內(nèi),則將其TTL值設置為0,防止其再次被無效轉發(fā),并取消第二次不轉發(fā)指令發(fā)送。
考慮如圖4所示情況,目的節(jié)點5僅能收到節(jié)點2轉發(fā)的數(shù)據(jù)包,若節(jié)點2處于轉發(fā)節(jié)點1的B發(fā)射功率內(nèi),由于接收到不轉發(fā)指令,則不會將數(shù)據(jù)轉發(fā)至目的節(jié)點5。為解決上述情況,提高網(wǎng)絡的可靠性,加入功率調(diào)整重傳機制。若發(fā)送節(jié)點發(fā)送數(shù)據(jù)一定時間后并未獲得回傳消息,則會向網(wǎng)內(nèi)Vendor組地址發(fā)送攜帶有目的地址的非轉發(fā)指令功率降低的數(shù)據(jù)包,轉發(fā)節(jié)點通過Vendor模型接收后,會將該目的地址的非轉發(fā)指令傳輸功率等級降低,增加轉發(fā)節(jié)點數(shù)目,保證傳輸可靠性。若降低后仍然接收不到回傳消息,則繼續(xù)降低中繼節(jié)點對于該目的地址的傳輸功率等級,最低傳輸功率等級為取消發(fā)送不轉發(fā)指令。如圖4所示,即第2次發(fā)送的非轉發(fā)指令采用C功率發(fā)送,使得節(jié)點2、3都會進行數(shù)據(jù)包轉發(fā),保證數(shù)據(jù)包到達目的節(jié)點5。
圖4 功率調(diào)整重傳機制
綜上所述,本文提出的基于功率控制的BLE Mesh路由轉發(fā)機制轉發(fā)節(jié)點流程如圖5所示。
圖5 基于功率控制的BLE Mesh路由轉發(fā)機制流程圖
為測試基于功率控制的BLE Mesh路由轉發(fā)機制的性能,采用MATLAB R2021a計算平臺,基于Communications Toolbox Library for the Blue tooth Protocol進行實驗。如圖6所示,在160 m×160 m的農(nóng)田區(qū)域中均勻分布50個節(jié)點,所有節(jié)點都具有中繼功能。從節(jié)點1發(fā)送數(shù)據(jù)包至節(jié)點17。設置傳統(tǒng)的泛洪方式單跳廣播傳輸距離為40 m,基于功率控制的BLE Mesh路由轉發(fā)機制廣播傳輸距離為40 m,其中不轉發(fā)指令初始傳輸距離為30 m。
圖6 仿真節(jié)點部署模型
圖7給出了傳統(tǒng)的泛洪方式和基于功率控制的BLE Mesh路由轉發(fā)機制下,隨著傳輸時間的增加,網(wǎng)絡中所有節(jié)點的中繼消息數(shù)量變化對比圖?;诠β士刂频腂LE Mesh路由轉發(fā)機制在同時刻的中繼消息數(shù)量要小于傳統(tǒng)的泛洪方式,通過發(fā)送不轉發(fā)指令,選擇廣播外層的節(jié)點進行消息中繼,能夠減少網(wǎng)絡節(jié)點能量消耗,延長網(wǎng)絡的生存時間。
圖7 中繼消息數(shù)量變化對比圖
本文提出并設計了一種基于功率控制的BLE Mesh路由轉發(fā)機制。該機制基于較為簡單的功率控制去實現(xiàn),在智慧農(nóng)業(yè)應用場景下,能夠減少設備的能量消耗,降低農(nóng)作物的生產(chǎn)成本,具有一定的參考價值和使用價值。但是,該機制所采用的2次發(fā)送和功率切換在實際工程實現(xiàn)時會存在較大的延時,適用于對延時不敏感的場景下。并且由于僅由廣播范圍外層的節(jié)點進行轉發(fā),在節(jié)點布置較為稀疏的情況下可靠性會降低,在今后的研究中會致力于解決這些問題。