開發 nRF54L15 低功耗藍芽模組,以 Zephyr 範例程式說明
前一文章講解 nRF54L15 模組在 VS Code 環境的開發,本文則說明藍芽程式的開發。在 SDK 中,與藍芽相關功能的範例放在 \ncs\v3.1.1\zephyr\samples\bluetooth 目錄,如下所示。我們選擇 peripheral 範例程式,並添加 build configuration 後,開啟 prj.conf 檔案,裡面定義了藍芽服務的參數,如下方圖所示。 BAS 是定義電池的服務, HRS 是定義心律的服務, IAS 是定義即時告警的服務, CTS 是定義目前時間的服務。編譯前,我們可以設 y 或 n 決定啟用或關閉服務,設定好之後,先重新生成 build config ( 最好執行 Clean Build Configuration ,再生成 ) ,然後再重新編譯所有的 code 。底下這個函數 API 是廣播設備的屬性,其中 ad 是屬性內容和 sd 是設備名稱。 bt_le_adv_start (BT_LE_ADV_CONN_FAST_1, ad , ARRAY_SIZE(ad), sd , ARRAY_SIZE(sd)); 在手機端,下載 nRF Connect for Mobile ,安裝後打開 APP 。先掃描藍芽設備,看到藍芽名為 Zephyr Peripheral… ,就是上圖程式中定義的名稱。連線後,如下圖,顯示這設備的屬性,包含 Heart Rate 的屬性 (Notify 、 Read 、 Write) 。 除了藍芽所定義的服務之外,下圖是這設備 GATT 的通用屬性 配置屬性的 API 函數,包含 vnd 變數與 uuid 。 bt_gatt_find_by_uuid ( vnd_svc .attrs, vnd_svc .attr_count, &vnd_enc_uuid.uuid); 範例中,開啟藍芽認證模式, API 函數如下,其中 GATT 的某些欄位需要認證才能進行讀與寫。 bt_conn_auth_cb_register ( &auth_cb_display ); 變更 BT 位址 在原始範例所生成的 prj.conf 檔案中,定義 CONFIG_BT_PRIVACY=y ,意思是隨...