首頁 > 評測 > NUCLEO開發(fā)板的最佳BLE伴侶:X-NUCLEO-IDB05A1 BLE

NUCLEO開發(fā)板的最佳BLE伴侶:X-NUCLEO-IDB05A1 BLE

NUCLEO   X-NUCLEO   IDB05A1   BLE   拓展板   無線通信   ST   
  • 作者:SATURN
  • 來源:21ic
  • [導(dǎo)讀]
  • X-NUCLEO-IDB05A1 BLE是ST的藍(lán)牙拓展板,此外還有配套SDK供菜鳥邊體驗(yàn)邊學(xué)習(xí)BLE技術(shù)。本文就帶大家來體驗(yàn)一下用官方藍(lán)牙SDK,基于藍(lán)牙拓展板來進(jìn)行demo開發(fā)的過程。

 無線通信一直是物聯(lián)網(wǎng)中非常重要的環(huán)節(jié)。無線通信不需要使用通信線路來連接設(shè)備,使得物聯(lián)設(shè)備在布署時靈活性大大增強(qiáng)了,沒有了物理線路的束縛,產(chǎn)品配置時除了靈活性之外,整體美觀也是不得不考慮的一個因素。試想客戶購買了一個物聯(lián)產(chǎn)品,還得大費(fèi)周章打墻穿孔布線,熱情頓時少了三分!

在各種無線通信技術(shù)中,從WiFi、紅外、藍(lán)牙到遠(yuǎn)距離的LoRa、NBIoT,BLE一直備受青睞,為什么呢?答案無外乎兩個原因,一是現(xiàn)在的移動終端,無論是手機(jī)還是平板,BLE幾乎都是標(biāo)配設(shè)備,接入非常容易;另一個原因應(yīng)該歸結(jié)于BLE的低功耗特性,省電省心!

ST的NUCLEO系列開發(fā)板一直以來以質(zhì)優(yōu)價廉深受ST愛好者推崇,在簡單的入門之后,是時候體驗(yàn)下無線操控的體驗(yàn)了,X-NUCLEO-IDB05A1 BLE專門為NUCLEO系列開發(fā)板設(shè)計,無縫對接,確實(shí)是非常好的搭配。

image1.jpg

X-NUCLEO-IDB05A1 BLE包裝沿用ST開發(fā)板產(chǎn)品的封裝風(fēng)格,透明包裝,產(chǎn)品一覽無余。

image2.jpg

擴(kuò)展板只包含SPBTLE-RF,所以電路設(shè)計也相對簡單,引出的接口完全兼容STM32 NUCLEO開發(fā)板接口。

image3.jpg

ARDUINO接口默認(rèn)提供,至于蝴蝶接口只引出了焊盤,如果用戶想要使用該接口的話,需要自行操作。

image4.jpg

X-NUCLEO-IDB05A1是基于SPBTLE-RF BlueNRG-MS射頻模塊的藍(lán)牙低功耗評估板,用于擴(kuò)展STM32 Nucleo板卡。SPBTLE-RF模塊通過了FCC(FCC ID:S9NSPBTLERF)和IC認(rèn)證(IC:8976C-SPBTLERF)。

X-NUCLEO-IDB05A1與ST Morpho和Arduino UNO R3連接器布局兼容(如果需要,用戶可以安裝ST Morpho連接器)。X-NUCLEO-IDB05A1通過SPI引腳與STM32微控制器連接,用戶可以通過更換評估板上的一個電阻來更改默認(rèn)的SPI時鐘、SPI片選和SPI IRQ。

X-NUCLEO-IDB05A1 BLE的主要特征

• STM32擴(kuò)展板,基于STM32 Nucleo的SPBTLE-RF模塊

• X-NUCLEO-IDB05A1包含F(xiàn)CC和IC認(rèn)證模塊SPBTLE-RF(FCC ID:S9NSPBTLERF和IC:8976C-SPBTLERF)

• SPBTLE-RF:

– 低功耗藍(lán)牙FCC和基于藍(lán)牙IC認(rèn)證模塊® SMART 4.1網(wǎng)絡(luò)處理器BlueNRG-MS

– 集成巴倫(BALF-NRG-01D3)

– 芯片天線

• 與STM32 Nucleo板兼容

• 配備Arduino UNO R3連接器

• 可擴(kuò)展的解決方案,可將多個電路板級聯(lián)到更大的系統(tǒng)

• 免費(fèi)的綜合開發(fā)固件庫和BlueNRG-MS示例,與STM32Cube固件兼容

• 符合RoHS標(biāo)準(zhǔn)

從工程師的角度來看,BLE雖好,然而真正的開發(fā)過程卻是比較麻煩的,一是BLE中名詞概念太多,剛?cè)腴TBLE的用戶首先就被一堆名詞給搞暈了!再有由于歷史的原因,藍(lán)牙通信技術(shù)包含早期的Classic Bluetooth和新的BLE技術(shù),例如藍(lán)牙音箱一般使用的是Classic,而現(xiàn)在物聯(lián)網(wǎng)中的大部分則使用的是BLE即低功耗藍(lán)牙,主要的差別就在低功耗上,當(dāng)然還有其它的一現(xiàn)細(xì)節(jié)。

不過這不是問題,因?yàn)镾T推出的配套SDK完全能讓菜鳥邊體驗(yàn)邊學(xué)習(xí)BLE技術(shù)。SDK不僅封裝了GATT等底層細(xì)節(jié),同時也提供了大量的DEMO代碼供用戶參考,簡單的了解SDK的框架后,就可以在現(xiàn)有的DEMO上進(jìn)行適當(dāng)?shù)男薷,達(dá)到自己的要求。

image5.png

應(yīng)用程序框架包括底層的硬件、CMSIS、BLE及Profile framework組成,最上層就是應(yīng)用程序。應(yīng)用程序通過SDK提供的各種API來實(shí)現(xiàn)用戶需求。

SDK兼容STM32CUBE庫,可以使用STM32CUBE來生成應(yīng)用程序的底層框架,再引入SDK就可以實(shí)現(xiàn)用戶自定義的功能。SDK基于SIG的標(biāo)準(zhǔn)GATT配置文件,STM32開發(fā)板及X-NUCLEO-IDB05A1 BLE充當(dāng)GAP設(shè)備,根據(jù)配置好的profile來進(jìn)行數(shù)據(jù)的收發(fā)。

image6.png

SDK包括文檔、中間件及DEMO等要素,主要包括文檔,驅(qū)動、中間件及演示工程文件,目前提供的現(xiàn)有DEMO工程主要涵蓋了STM32F401RE-Nucleo、STM32L053R8-Nucleo及STM32L476RG-Nucleo開發(fā)板,當(dāng)然如果要移植到其它開發(fā)板上,也只需要簡單的移植即可實(shí)現(xiàn)功能。

應(yīng)用程序內(nèi)部使用狀態(tài)機(jī)來進(jìn)行BLE相關(guān)操作的管理,一個典型的狀態(tài)機(jī)如下

image7.png

例如BLE做為外設(shè)使用的話,通過需要廣播信息、接受來自外部的連接及響應(yīng)各種事件,使用狀態(tài)機(jī)可以很好的處理這些狀態(tài)。

接下來分析一個非常經(jīng)典的應(yīng)用SensorDemo,看看從這個DEMO從我們能了解和學(xué)習(xí)到什么。

SensorDemo應(yīng)用中,STM32開發(fā)板及BLE擴(kuò)展板被配置成一個外設(shè)傳感器站點(diǎn),智能手機(jī)充當(dāng)Central,通過手機(jī)的BLE來讀取來自開發(fā)板的傳感器數(shù)據(jù)。

main函數(shù)的主要框架如下

int main(void)

{

...

HAL_Init();

BSP_PB_Init(BUTTON_KEY, BUTTON_MODE_GPIO);

/* USER CODE END Init */

/* Configure the system clock */

SystemClock_Config();

BNRG_SPI_Init();

/* Initialize the BlueNRG HCI */

HCI_Init();

/* Reset BlueNRG hardware */

BlueNRG_RST();

ret = Add_Acc_Service()

/* Set output power level */

ret = aci_hal_set_tx_power_level(1,4);

/* USER CODE END 2 */

/* Infinite loop */

/* USER CODE BEGIN WHILE */

while(1)

{

/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */

HCI_Process();

User_Process(&axes_data);

}

}

實(shí)際的代碼比較多,這只是摘取其中部分代碼后的樣本。代碼里包括STM32硬件的初始化過程,然后是BLUENRG的初始化,因?yàn)槭褂玫牡腟PI接口,所以這里的代碼還包括SPI的初始化工作,然后是添加BLE服務(wù)等工作。GATT服務(wù)及Characteristics等,具體的細(xì)節(jié)就不詳述了。正是通過GATT Service及Characteristic等,手機(jī)等移動終端可以訪問并控制相關(guān)的外設(shè)。

代碼的最后是用戶事件的處理,例如用戶請求某個Characteristic,用戶上傳相關(guān)的數(shù)據(jù)等,都是放在循環(huán)體內(nèi)實(shí)現(xiàn),可以參考這些代碼來設(shè)計自己的功能。

編譯并上傳代碼到開發(fā)板后,BLE開始工作,要測試BLE的工作狀態(tài),需要使用BLE USB DONGLE或者手機(jī)來進(jìn)行,下面在手機(jī)端安裝并打開ST官方提供的BLUENRG應(yīng)用來進(jìn)行測試。

image8.jpg

image9.jpg

手機(jī)程序啟動后自動開始掃描BLE設(shè)備,找到設(shè)備后顯示設(shè)備名稱及MAC地址。

APP包括三個選項卡,第一個是MOTION,這里用到的都是FAKE數(shù)據(jù),即模擬出來的結(jié)果,用戶通過按壓開發(fā)板上的USER按鍵,實(shí)現(xiàn)不同數(shù)據(jù)的發(fā)送,該數(shù)據(jù)可以同步在APP上顯示出來,上圖演示的是其中的一個狀態(tài),注意數(shù)據(jù)值上方的立方體,該立方體會實(shí)時顯示立方體的位置情況。

image10.jpg

第2個選項卡顯示的是環(huán)境相關(guān)的數(shù)據(jù),如溫度、濕度及大氣壓等數(shù)據(jù)。

image11.jpg

最后一個選項卡顯示的是RSSI信號強(qiáng)度,RSSI強(qiáng)度也可以用來近似估算兩個節(jié)點(diǎn)的距離,在很多室內(nèi)定位的應(yīng)用中,就是根據(jù)RSSI來計算設(shè)備的位置。

Projects目錄下還提供了很多其它演示程序,包括低功耗、虛擬串口等,通過使用這些DEMO,用戶可以很快速度STM32 BLE產(chǎn)品的相關(guān)細(xì)節(jié)。

X-NUCLEO-IDB05A1 BLE是ST X-NUCLEO系列開發(fā)板中的一員,其它類似的擴(kuò)展板還包括WIFI、電機(jī)、傳感器等系列,X-NUCLEO系列與NUCLEO開發(fā)板在接口上完全一致,同時各配套開發(fā)板也都提供了相關(guān)的SDK庫,結(jié)合ST提供的STM32CUBEMX工程工具,可以迅速的上手體驗(yàn)并在短期內(nèi)搭建產(chǎn)品原型并進(jìn)行評估。

只是這些擴(kuò)展板一般來說功能比較單一,像X-NUCLEO-IDB05A1 BLE就只提供了BLE的擴(kuò)展功能,如果ST能將這些擴(kuò)展板都集成到一塊板上,來個全家桶,不知道ST的粉絲們會不會瘋狂?!

參考資源:

X-NUCLEO-IDB05A1:https://www.st.com/zh/ecosystems/x-nucleo-idb05a1.html

SDK: https://www.st.com/content/st_com/zh/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32cube-expansion-packages/x-cube-ble1.html

  • 本文系21ic原創(chuàng),未經(jīng)許可禁止轉(zhuǎn)載!

網(wǎng)友評論

  • 聯(lián)系人:巧克力娃娃
  • 郵箱:board@21ic.com
  • 我要投稿
  • 歡迎入駐,開放投稿

熱門標(biāo)簽
項目外包 more+