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