編者按:這個由兩部分組成的系列的第1部分詳細介紹了藍牙網(wǎng)格1.0協(xié)議的體系結(jié)構(gòu)和功能。在這里,第2部分介紹了如何將藍牙網(wǎng)絡(luò)集成到使用芯片和開發(fā)套件的藍牙低功耗設(shè)計中。
藍牙網(wǎng)絡(luò)為流行的短程協(xié)議帶來了顯著的網(wǎng)絡(luò)優(yōu)勢。第1部分對此進行了詳細討論。但是,規(guī)范也帶來了新的設(shè)計挑戰(zhàn),特別是在實現(xiàn)其模型時。
克服這些挑戰(zhàn)的關(guān)鍵在于利用升級的開發(fā)工具來更好地了解藍牙網(wǎng)絡(luò)。本文介紹如何使用選擇的藍牙硬件和軟件,開發(fā)套件(DK)和軟件開發(fā)套件(SDK)來設(shè)置和構(gòu)建藍牙網(wǎng)格應(yīng)用程序。
藍牙網(wǎng)格開發(fā)工具
藍牙網(wǎng)狀網(wǎng)絡(luò)堆棧包含一個全新的主機層,與BLE主機層共享一些概念,但與其不兼容。早期版本的藍牙網(wǎng)格堆棧現(xiàn)在可用于工程開發(fā),通常作為SDK的一部分。
由于藍牙網(wǎng)絡(luò)是藍牙核心規(guī)范的補充規(guī)范,因此供應(yīng)商不需要更新其藍牙低功耗(BLE)物理層(PHY)或軟件堆棧來支持它。但是,添加藍牙網(wǎng)絡(luò)要求供應(yīng)商為他們的客戶推出他們自己的堆棧實現(xiàn)。
例如,BLE供應(yīng)商Nordic Semiconductor已經(jīng)推出了Mesh的nRF5 SDK。該套件包括一個藍牙網(wǎng)絡(luò)堆棧,選擇驅(qū)動程序,庫和網(wǎng)格應(yīng)用程序的示例。該SDK的幾個集成開發(fā)環(huán)境(IDE)和編譯器,包括工作SEGGER嵌入式工作室從套件含有Segger微控制器系統(tǒng)和CMake的。
由于藍牙網(wǎng)格兼容所有版本的BLE(即:4.0,4.1,4.2和5),Nordic的網(wǎng)格SDK最終將與其所有BLE芯片一起工作。但是,目前的版本僅適用于該公司最新的nRF52系列BLE解決方案,例如中檔藍牙5兼容nRF52832芯片。
由于BLE PHY或軟件堆棧沒有變化,因此可以在包含目標(biāo)設(shè)備的現(xiàn)有DK上執(zhí)行藍牙網(wǎng)格開發(fā)工作。推薦用于nRF52832的DK是nRF52 DK(圖1)。
圖1:北歐半導(dǎo)體的網(wǎng)格SDK將與包含nRF52832 SoC目標(biāo)器件的nRF52 DK配合使用。(圖片來源:北歐半導(dǎo)體)
網(wǎng)格開發(fā)需要至少三個(最好是更多)設(shè)備來進行通信和模擬網(wǎng)狀環(huán)境。理想情況下,可以使用幾個DK來表示網(wǎng)格中的節(jié)點,但是這具有顯著增加開發(fā)硬件成本的缺點。另一種方法是使用一個DK并購買經(jīng)測試和驗證的BLE模塊(基于目標(biāo)設(shè)備)以形成附加節(jié)點。對于使用Nordic nRF52832進行開發(fā),Rigado的BMD-300或Laird的BL652-SA-01-T / R是很好的模塊選件。
賽普拉斯半導(dǎo)體對北歐采取了類似的方法。該公司為BCM92073XWICED Smart DK提供藍牙網(wǎng)格SDK,該DKM基于賽普拉斯的BCM20736S藍牙v4.1 PHY。基于此PHY的網(wǎng)格開發(fā)工作的合適BLE模塊包括Inventek的ISM20736S。
了解模型
北歐和賽普拉斯的硬件,軟件和開發(fā)工具均附有示例和教程,以指導(dǎo)開發(fā)人員完成構(gòu)建簡單的藍牙網(wǎng)格應(yīng)用程序的步驟。但是在開始第一個設(shè)計之前,它有助于貫穿相關(guān)教程,以了解藍牙網(wǎng)格體系結(jié)構(gòu)的獨特特性,因為它對設(shè)計過程有重大影響。
這些教程強調(diào),盡管藍牙網(wǎng)格節(jié)點有四種通用類型(參見這兩部分系列文章的第1部分),但每種類型的功能都取決于其模型。了解模型是充分利用藍牙網(wǎng)絡(luò)功能的關(guān)鍵。
藍牙網(wǎng)格提供了構(gòu)建新型網(wǎng)格應(yīng)用所需的靈活性,因為開發(fā)人員可以構(gòu)建模型,使設(shè)備具有許多自定義行為。模型定義了所需的狀態(tài),作用于這些狀態(tài)的消息以及相關(guān)的行為。所有通過網(wǎng)狀網(wǎng)絡(luò)的通信都通過消息來促進。
狀態(tài)是表示元素狀態(tài)的值。元素是設(shè)備或節(jié)點的可尋址實體。每個設(shè)備至少有一個(主要)元素,并可能有一個或多個次要元素。元素的數(shù)量和結(jié)構(gòu)在整個節(jié)點的生命周期中都不會改變。“暴露”狀態(tài)的元素稱為服務(wù)器。元素“訪問”狀態(tài)被稱為客戶端。
重要的是,模型有三種類型;服務(wù)器,客戶端和控制。服務(wù)器模型由跨越一個或多個元素的一個或多個狀態(tài)組成。它定義了一組可發(fā)送或接收的強制性消息,發(fā)送和接收消息時的元素行為以及發(fā)送或接收消息后發(fā)生的任何其他行為。
客戶端模型定義了一組客戶端用于請求,更改或“消耗”相應(yīng)服務(wù)器狀態(tài)的消息,如服務(wù)器模型所定義的。客戶端模型沒有狀態(tài)。
控制模型可以結(jié)合客戶端模型功能(與其他服務(wù)器模型進行通信)和服務(wù)器模型功能(與其他客戶端模型進行通信)。控制模型還可能包含控制邏輯 - 一組規(guī)則和行為,用于協(xié)調(diào)控制模型與控制模型連接的其他模型之間的交互作用(圖2)。
圖2:所示為實現(xiàn)控制模型的藍牙網(wǎng)狀設(shè)備的元件模型結(jié)構(gòu)。設(shè)備C可以作為客戶端(分別為消息X,Y和Z以及消息R,S和T)與客戶端模型(在設(shè)備D內(nèi))作為服務(wù)器與服務(wù)器模型(設(shè)備A和B內(nèi))進行通信(支持消息A,B和C)。(圖片來源:藍牙SIG)
為了說明模型在實際應(yīng)用中的用途,考慮一個電源板,它包括兩個獨立的電源插座,每個電源插座都能夠控制功率輸出,并集成一個BLE收音機,從而允許連接藍牙網(wǎng)絡(luò)。
該設(shè)備(電源板)具有兩個代表兩個電源插座的元件。每個元素的功能由通用功率級別服務(wù)器模型定義,該模型定義服務(wù)器上的一組狀態(tài),以及一組對這些狀態(tài)進行操作的消息。通用功率電平設(shè)置消息可以被發(fā)送到設(shè)備以控制輸出功率。該消息被發(fā)送到一個套接字的元素。
套接字也可以由實現(xiàn)通用級客戶端模型的通用設(shè)備(如調(diào)光器)控制。該模型將期望水平設(shè)置為零,最大值或兩者之間的值。通過狀態(tài)綁定來控制插座的電源。在每個電源插座中,通用電源實際狀態(tài)都綁定到通用電平狀態(tài)。通用級客戶端將通用級消息發(fā)送到通用級服務(wù)器。通用級別狀態(tài)發(fā)生改變,反過來(通過已定義的綁定)改變控制功率輸出的通用功率實際狀態(tài)。
因為元素可以報告狀態(tài),所以每個套接字可以報告功率水平以及插入插座的設(shè)備的能量消耗。使用Sensor Server模型定義的消息報告能耗。
構(gòu)建藍牙網(wǎng)狀網(wǎng)絡(luò)
假設(shè)開發(fā)人員已經(jīng)對藍牙網(wǎng)格體系結(jié)構(gòu)和BLE開發(fā)有所了解(請參閱Digi-Key文章:“藍牙4.1,4.2和5兼容的藍牙低功耗SoC和工具滿足IoT挑戰(zhàn)”以了解關(guān)于通用BLE設(shè)計的更多信息),并配備藍牙網(wǎng)格SDK,主機SDK,DK和附加模塊或DK來建立網(wǎng)絡(luò),開發(fā)人員可以相對輕松地配置藍牙網(wǎng)格實現(xiàn)。
第一步是構(gòu)建網(wǎng)格堆棧。在北歐的情況下,堆棧是使用選定的IDE構(gòu)建的。例如,使用SEGGER Embedded Studio,通過使用Bluetooth mesh SDK中包含的一個示例(例如“l(fā)ight switch”示例)和使用IDE進行編譯來構(gòu)建堆棧。
然后,DK上的目標(biāo)PHY被擦除,并用編譯的藍牙網(wǎng)格堆棧和BLE堆棧重新編程。一旦堆棧被編程和驗證,SDK就可以用來設(shè)置和建立網(wǎng)狀網(wǎng)絡(luò)。
配置:Nordic的開發(fā)工具包括配置應(yīng)用程序編程接口(API),用于將新設(shè)備添加到網(wǎng)狀網(wǎng)絡(luò)。供應(yīng)由供應(yīng)商(已經(jīng)連接到網(wǎng)絡(luò)并且先前為供應(yīng)任務(wù)配置的設(shè)備)處理,用于向新設(shè)備提供他們需要加入網(wǎng)狀網(wǎng)絡(luò)所需的信息。最初,設(shè)備提供了一個網(wǎng)絡(luò)密鑰,一個地址和一個設(shè)備密鑰,用于在配置之后建立用于配置的安全通道。
API允許開發(fā)人員開始監(jiān)聽在BLE的三個廣告頻道中的一個上發(fā)送的未提供(或供應(yīng)商 - 要添加到網(wǎng)絡(luò)的設(shè)備)節(jié)點的廣播信標(biāo)。藍牙網(wǎng)格使用BLE的廣告通道而不是37個全帶寬數(shù)據(jù)通道傳輸和接收消息。通道上的入局鏈接請求將被自動接受。
鏈接建立后,使用帶外(OOB)方法對其進行身份驗證,以確保加入網(wǎng)絡(luò)的設(shè)備是預(yù)期的目標(biāo)。使用OOB方法可以減少設(shè)備監(jiān)聽BLE頻譜分配的“中間人”攻擊機會。API事件然后為設(shè)備提供配置數(shù)據(jù)和設(shè)備密鑰。
配置:Nordic的“燈開關(guān)”應(yīng)用程序(包含在SDK中)顯示了如何開發(fā)具有供應(yīng)者和供應(yīng)者角色的應(yīng)用程序。在演示中,一個燈開關(guān)客戶端模型(開關(guān))是供應(yīng)商,燈開關(guān)服務(wù)器模型(燈泡)是供應(yīng)商。
Nordic的例子充分利用了藍牙網(wǎng)絡(luò)規(guī)范中最簡單的服務(wù)器是Generic OnOff服務(wù)器的事實,表示服務(wù)器處于開啟或關(guān)閉狀態(tài)。例如,最簡單的客戶端是通用OnOff客戶端,它能夠通過通用OnOff模型定義的消息來控制通用OnOff服務(wù)器。
當(dāng)此服務(wù)器模型從客戶端模型接收到GET或(可靠)SET消息時,它將發(fā)送OnOff狀態(tài)的當(dāng)前值作為響應(yīng)。這可以使客戶端了解服務(wù)器狀態(tài)(圖3)。
Name定義操作碼描述參數(shù)參數(shù)大小組SIMPLE_ON_OFF_OPCODE_SET0xc1設(shè)置當(dāng)前的開/關(guān)狀態(tài)新的狀態(tài)1個字節(jié)得到SIMPLE_ON_OFF_OPCODE_GET為0xC2獲取當(dāng)前的開/關(guān)狀態(tài)N / A沒有參數(shù)SET不可靠SIMPLE_ON_OFF_OPCODE_SET_UNRELIABLE0xc3設(shè)置當(dāng)前的開/關(guān)狀態(tài)新的狀態(tài)1個字節(jié)狀態(tài)SIMPLE_ON_OFF_OPCODE_STATUS0xc4包含當(dāng)前狀態(tài)當(dāng)前狀態(tài)1個字節(jié)圖3:通用OnOff模型支持的消息和ATT操作碼。(圖片來源:北歐半導(dǎo)體)
配置服務(wù)器用于表示設(shè)備的網(wǎng)狀網(wǎng)絡(luò)配置,并且是藍牙網(wǎng)狀節(jié)點的強制要求。配置服務(wù)器處理與配置客戶端(由配置器控制)的通信以及來自配置客戶端的指令。
配置完成后開始配置。供應(yīng)商讀取供應(yīng)商的組成數(shù)據(jù)以識別設(shè)備的元數(shù)據(jù)以及哪些模型綁定到設(shè)備中的元素。接下來,將應(yīng)用程序和/或網(wǎng)絡(luò)密鑰添加并綁定到不同的模型(圖4)。
圖4:nRF5 SDK for Mesh的配置和配置流程圖。“nrf_mesh ...”標(biāo)注是API函數(shù)。(圖片來源:北歐半導(dǎo)體)
向網(wǎng)絡(luò)添加更多設(shè)備僅僅是為每個新節(jié)點重復(fù)供應(yīng)和配置過程的情況。
發(fā)布和訂閱:設(shè)置和構(gòu)建初始應(yīng)用程序的最后階段是配置模型的發(fā)布狀態(tài)。例如,用于發(fā)布狀態(tài)事件的地址,使用什么密鑰,使用什么“生存時間”(TTL)值,以及設(shè)置訂閱。
消息在從每個模型的發(fā)布地址發(fā)布時發(fā)送。例如,通過傳感器節(jié)點定期報告數(shù)據(jù)來使用發(fā)布。消息只能發(fā)布一次或重復(fù)發(fā)送,并發(fā)送到單播,組或虛擬地址(請參閱本文的第1部分)。客戶機模型也使用發(fā)布向服務(wù)器模型發(fā)送消息。
發(fā)布相關(guān)狀態(tài)的配置通常由配置者通過配置模型來控制。
使用Nordic SDK時,使用“access_model_publish()”API函數(shù)發(fā)布消息,該函數(shù)將根據(jù)發(fā)布模型的發(fā)布設(shè)置(間隔,目標(biāo))發(fā)布消息。
訂閱允許模型監(jiān)聽來自特定地址的傳入消息。例如,這可用于偵聽從傳感器節(jié)點發(fā)布的周期性消息。Nordic SDK允許模型通過使用“access_model_subscription_list_alloc()”API函數(shù)分配預(yù)訂列表來預(yù)訂地址。
請注意,使用客戶端模型時,不需要訂閱發(fā)送消息的地址以接收對這些消息的回復(fù)。訂閱僅用于接收來自節(jié)點的未經(jīng)請求的消息。
在開發(fā)過程中,將非藍牙網(wǎng)格功能的設(shè)備連接到藍牙網(wǎng)格可能會有所幫助。一個例子可能是開發(fā)人員希望用來控制原型智能照明網(wǎng)格應(yīng)用的智能手機。手機和網(wǎng)狀網(wǎng)絡(luò)之間的互動是通過藍牙堆棧中的智能電話和節(jié)點設(shè)備的通用屬性配置文件(GATT)接口實現(xiàn)的,而不是藍牙網(wǎng)狀網(wǎng)絡(luò)堆棧。
結(jié)論
藍牙網(wǎng)格為BLE應(yīng)用程序增加了新功能。然而,由于它不是原始核心規(guī)范的一部分,網(wǎng)格的采用已經(jīng)引入了一些折衷并增加了設(shè)計過程的一些復(fù)雜性。熟悉使用藍牙協(xié)議棧進行設(shè)計的開發(fā)人員對那些沒有知識的人來說是一個優(yōu)勢,但即使對于經(jīng)驗豐富的工程師來說,實現(xiàn)藍牙網(wǎng)絡(luò)也需要學(xué)習(xí)一種新的體系結(jié)構(gòu)并了解它的細微差別,例如狀態(tài),元素和模型。
通過與Nordic半導(dǎo)體或賽普拉斯半導(dǎo)體等供應(yīng)商合作,可以緩解設(shè)計挑戰(zhàn)。這些供應(yīng)商現(xiàn)在已經(jīng)發(fā)布了藍牙網(wǎng)格堆棧,以補充他們成熟的BLE解決方案。該堆棧附帶有專門設(shè)計的軟件開發(fā)工具包,可讓開發(fā)人員使用他們熟悉的芯片,固件和設(shè)計工具加速設(shè)計藍牙網(wǎng)格應(yīng)用程序的學(xué)習(xí)過程。
參考
-
“Mesh Profile”,藍牙規(guī)范v1.0,藍牙SIG,2017年7月。
-
藍牙
+關(guān)注
關(guān)注
116文章
6077瀏覽量
173981 -
低功耗
+關(guān)注
關(guān)注
11文章
2808瀏覽量
104920
發(fā)布評論請先 登錄

超小藍牙模組,遠距離,低功耗#藍牙芯片 #低功耗藍牙 #物聯(lián)網(wǎng) #硬聲創(chuàng)作季
低功耗藍牙的應(yīng)用領(lǐng)域
基于BlueNRG-MS低功耗藍牙智能IC
藍牙4.0和低功耗藍牙是一回事嗎?這篇文章解答這個疑問

如何在Android 4.3平臺進行藍牙低功耗開發(fā)操作?(2)
第2部分:了解低功耗藍牙(BLE)的布局
低功耗藍牙BLE的功能和操作模式
芯科科技升級EFR Connect 2.3低功耗藍牙移動應(yīng)用程序
智能寵物喂食機第2部分—具有語音識別功能的喂食應(yīng)用程序

【應(yīng)用筆記】STM32WB 低功耗藍牙無線接口
國產(chǎn)藍牙模組 | 低功耗藍牙應(yīng)用

評論