趙永志
(上海電力大學 電子與信息工程學院,上海 200090)
近年來,新冠肺炎疫情肆虐全球,導致全球經濟衰退,糧食供需趨緊。雖然我國農業能夠保障國內安全生產需要,但仍存在對土地性狀認識不清、水肥藥等要素投入較多的問題[1],需提高生產效率,精準投入生產要素,進一步節約成本與資源。隨著電子技術和無線網絡技術的發展,智慧農業成為各國農業工作者的研究熱點,通過無線網絡技術實時獲取農作物的生長狀況信息,進行精準的灌溉、調溫、施肥、打藥的自動控制,能夠提高生產要素的利用效率,推進農業生產實現自動化。
藍牙技術作為一種應用廣泛的物聯網技術,具有低功耗、低成本、安全性高的特點,適合用于智慧農業中的長時間、低功耗的環境監測。早期藍牙僅能以一對一、一對多的方式進行連接,在如今設備數量快速增長的時期已無法滿足實際需要。于是在2019年,藍牙技術聯盟發布了新的BLE Mesh規范,基于低功耗藍牙協議,以廣播中繼的方式實現多對多的節點連接,為智能硬件互聯互通提供了新的技術手段。
在BLE Mesh規范中,并不存在一個集中器路由的角色,通過廣播中繼的方式,將數據傳輸到不在直接無線電覆蓋范圍內的設備,擴大通信范圍。但是這種“網絡泛洪”方式,若不加以限制,很容易出現無限制的中繼轉發,進而使得網絡資源快速被耗盡。為此,藍牙規范采取了2個措施用來避免無限制中繼,分別為信息緩存隊列和TTL字段。
信息緩存隊列用來保證同一網絡數據包僅能被同一節點中繼一次。在每個節點的網絡層都包含一個信息緩存隊列,若某個剛收到的網絡數據包已經在緩存隊列中,則會將該數據包直接丟棄。
TTL字段用來限制網絡數據包傳輸的跳數。在每個數據包中都包含一個TTL字段,該數據包每次被中繼,該TTL字段將會減少1,若該數據包的TTL值已經小于2,則該數據包會被直接丟棄。
雖然上述2項措施在一定程度上減少了中繼轉發帶來的網絡資源消耗,但仍然存在無效轉發的問題。隨著電子技術的發展,藍牙傳輸距離已可以達到500 m,然而實際在水肥智能控制、農作物生長溫度調節等場景中,智能設備間距大多在幾十米左右,某一節點轉發消息,其廣播范圍內的設備都會進行轉發,增加了不必要的轉發,增大網絡擁塞和能源消耗。
自BLE Mesh規范發布以來,諸多學者也對BLE Mesh網絡的路由轉發機制進行了研究。孫吉武[2]提出了一種機會路由優化協議,綜合改進了機會路由中的后備節點集和協調策略,從路由機制的角度優化了網絡的時延與吞吐量指標。周曉明等[3]提出了基于改進的泛洪算法的藍牙Mesh路由方法,通過限制一次數據包傳輸過程中參與轉發的節點個數來減少不必要的節點轉發,根據每個節點的剩余能量確定該節點的轉發概率,從而均衡了整個網絡節點的能量消耗。李曉輝等[4]提出了一種基于藍牙Mesh網絡的節點及其控制方法,根據節點的接收信號強度和收包速率來計算節點是否轉發數據包和轉發延時,提升了數據傳輸的實時性,減少了廣播風暴、網絡堵塞的可能性。
然而,以上的路由協議大都采用復雜的交互機制或采用部分節點參與轉發的方式來優化路由協議。然而在實際實現方面,BLE Mesh規范以模型為基礎進行消息傳遞,且采用AppKey對應用層數據進行加密,轉發節點若無對應AppKey,只能提取數據包中的消息序列號、TTL值、源地址、目的地址等信息,對數據包判斷是否轉發存在問題。本文提出一種基于功率控制的BLE Mesh路由轉發機制,通過改變節點的發射功率,使用簡單的交互機制,讓廣播區域外層的節點進行數據轉發,減少了參與轉發節點的數量,降低了網絡數據包碰撞概率,減少了BLE Mesh網絡整體能源消耗,提升了網絡的可靠性。
隨著電子技術的發展,藍牙芯片的發射功率和接收機靈敏度不斷提高,其傳輸范圍也隨之增強。如Nordic的nRF52833芯片,在2.4 GHz、1Mbps速率下,其TX功率最高可達+8 dBm,最低為-20 dBm,并可以在范圍內以4 dB幅度進行調整。其接收機靈敏度也可達到-93 dBm。根據全向天線路徑損耗與傳輸距離的近似關系式(1)可以得到見表1的傳輸距離。


表1 路徑損耗與傳輸距離的關系
其中:Path Loss為路徑損耗,單位為dB;d為傳輸距離,單位為m。
由表1可知,藍牙設備的傳輸半徑變化范圍較大,通過合理的編碼設置便可控制其傳輸距離。為方便下文描述,設定ABC 3種TX功率傳輸等級,且功率A>B>C。
傳統的BLE Mesh網絡路由泛洪多采用單一輸出功率進行通信,其中繼轉發機制如圖1所示。圖中節點1作為收到數據包的轉發節點,節點2、3、4為轉發節點,節點5為數據包的目的節點。節點1在收到數據包且判斷需要轉發后,便開始以特定功率開始廣播,節點2、3處于廣播范圍內,收到數據包判斷后都會進行轉發,最后經節點4轉發到達目的節點5。該方式中,節點2、3都會進行消息轉發,但是實際上僅需節點3轉發即可。在實際情況中,如智能燈控場景下,智能設備的距離大都在2~3 m,采用此方式會造成大量的額外節點轉發,消耗網絡能量。

圖1 傳統的BLE Mesh網絡路由泛洪
本文提出的基于功率控制的BLE Mesh路由轉發機制以傳統泛洪算法為基礎,每次消息轉發采用2次發送方式,第一次以功率A發送數據包,包含所需發送信息。在隨機延時后以低一等級的功率B發送不轉發指令,為減小發送消耗,不轉發指令不包含數據信息PDU,其序列號、TTL值、源地址、目的地址和第一次發送數據包保持一致。由于2次數據發送功率不同,且第1次發送數據傳輸范圍較廣,其他轉發節點在接收到轉發消息后并不立即轉發,開始偵聽不轉發指令,若接收到不轉發指令,則取消轉發。如圖2所示,節點2、3接收到數據包后,偵聽以B功率發送的不轉發指令,此時由于傳輸距離不同,節點2收到不轉發指令,則取消轉發,而節點3由于距離較遠,接收不到不轉發指令,則進行轉發,最后由節點4轉發至目的節點5。

圖2 基于功率控制的BLE Mesh路由轉發機制
BLE Mesh規范中規定了4種地址用來消息發布,其中單播地址和組播地址較為常用。目的地址為單播地址的數據包只能由1個元素進行處理。目的地址為組播地址的數據包可以由訂閱該地址的多個元素進行處理。目前數據包的TTL值若無心跳廣播輔助設置下,大多由經驗值或全網統一值去設置。考慮如圖3所示情況,目的地址為節點2內元素單播地址的數據包,若TTL值設置不合理,節點2、3收到數據包后,仍會進行轉發。此時節點4、5的轉發則為無效轉發,浪費了網絡資源。

圖3 數據包目的地址在節點單跳廣播范圍內
這種情況下就要求節點掌握其單跳范圍內節點元素內目的地址,由于BLE Mesh網絡內消息大多基于模型去傳遞,為此本文提出創建新的Vendor模型,用來傳遞節點訂閱信息。網絡內所有節點內置Vendor模型,并將Vendor模型的訂閱和發布地址設置為Vendor組地址,這樣就可以由Vendor模型進行控制消息的傳遞。當網絡組建完成后,網絡內節點將本節點內元素單播地址封裝進數據包,將TTL值設置為0,表示非中繼數據包,并進行廣播發送。其他節點通過Vendor模型收集單跳廣播范圍內節點的單播地址信息并存儲。若待轉發數據包的目的地址在本節點單跳范圍內,則將其TTL值設置為0,防止其再次被無效轉發,并取消第二次不轉發指令發送。
考慮如圖4所示情況,目的節點5僅能收到節點2轉發的數據包,若節點2處于轉發節點1的B發射功率內,由于接收到不轉發指令,則不會將數據轉發至目的節點5。為解決上述情況,提高網絡的可靠性,加入功率調整重傳機制。若發送節點發送數據一定時間后并未獲得回傳消息,則會向網內Vendor組地址發送攜帶有目的地址的非轉發指令功率降低的數據包,轉發節點通過Vendor模型接收后,會將該目的地址的非轉發指令傳輸功率等級降低,增加轉發節點數目,保證傳輸可靠性。若降低后仍然接收不到回傳消息,則繼續降低中繼節點對于該目的地址的傳輸功率等級,最低傳輸功率等級為取消發送不轉發指令。如圖4所示,即第2次發送的非轉發指令采用C功率發送,使得節點2、3都會進行數據包轉發,保證數據包到達目的節點5。

圖4 功率調整重傳機制
綜上所述,本文提出的基于功率控制的BLE Mesh路由轉發機制轉發節點流程如圖5所示。

圖5 基于功率控制的BLE Mesh路由轉發機制流程圖
為測試基于功率控制的BLE Mesh路由轉發機制的性能,采用MATLAB R2021a計算平臺,基于Communications Toolbox Library for the Blue tooth Protocol進行實驗。如圖6所示,在160 m×160 m的農田區域中均勻分布50個節點,所有節點都具有中繼功能。從節點1發送數據包至節點17。設置傳統的泛洪方式單跳廣播傳輸距離為40 m,基于功率控制的BLE Mesh路由轉發機制廣播傳輸距離為40 m,其中不轉發指令初始傳輸距離為30 m。

圖6 仿真節點部署模型
圖7給出了傳統的泛洪方式和基于功率控制的BLE Mesh路由轉發機制下,隨著傳輸時間的增加,網絡中所有節點的中繼消息數量變化對比圖。基于功率控制的BLE Mesh路由轉發機制在同時刻的中繼消息數量要小于傳統的泛洪方式,通過發送不轉發指令,選擇廣播外層的節點進行消息中繼,能夠減少網絡節點能量消耗,延長網絡的生存時間。

圖7 中繼消息數量變化對比圖
本文提出并設計了一種基于功率控制的BLE Mesh路由轉發機制。該機制基于較為簡單的功率控制去實現,在智慧農業應用場景下,能夠減少設備的能量消耗,降低農作物的生產成本,具有一定的參考價值和使用價值。但是,該機制所采用的2次發送和功率切換在實際工程實現時會存在較大的延時,適用于對延時不敏感的場景下。并且由于僅由廣播范圍外層的節點進行轉發,在節點布置較為稀疏的情況下可靠性會降低,在今后的研究中會致力于解決這些問題。