實作目的

        本文要實現一個藍芽 BLE client/server 的架構,以 Filogic 130A 開發板做為智慧音箱的 BLE server 端,另外 ESP32 的藍芽遙控器做為 BLE client 端,架構圖如下所示。在先前的文章https://han-ya.blogspot.com/2022/04/smart-speaker-on-filogic-130a-kit.html 已經實現智慧音箱的功能,不只是聲控方式,我們還希望能再增加無線遙控的功能。然而,由於 MT7933 晶片具有藍芽連接的能力,所以採用 BLE 來達到這項目的。本文的最後一段,有影片呈現實現的結果。
 
        架構中,做為 BLE server 的設備,連線之前需要廣播 (advertising),而 BLE client 設備要進入掃描模式,然後再對 server 提出連線的請求。連線成功後,client 便可以取得 server 端的 GATT 各種屬性。
 
圖一:BLE client / server 架構圖

 

 

ESP32 client

        在 Arduino IDE 開發環境中,ESP32 提供不少範例程式,其中打開範例 ESP32 BLE Arduino\BLE_client,這是一個 client 端的應用,它會開啟 scan 模式,掃描周遭的藍芽設備,並將名稱顯示在 COM port 上,如下圖所示,能掃描到藍芽位址,設備名稱,以及服務的UUID。
 
圖二:BLE client 掃描設備的結果

 


        如果 client 端要連線某一指定的設備,要先知道設備名稱,比如我們這個實驗打算連線的是 Filogic 130A 開發板,它廣播的名稱為 "BLE_SMTCN",那 client 端的程式只要掃瞄到這個名稱就向設備進行連線。連線成功後,COM port 訊息如下,接下來我們就可以透過 BLE 的服務 UUID 通道傳送資料到 server 端。
 
圖三:BLE 連線成功

 

 

BLE server

        在藍芽 server 端是 Filogic 130A 開發板,它本身就具備多個無線連結的功能(WiFi 和 BT),底下說明如何啟用 BLE server 的功能。首先,初始化並開啟 BLE 的程式碼,如下:
 
        printf("BT INIT MODE\n");
        if ( bt_get_init_mode() != BT_BOOT_INIT_MODE_GATTS )   // 開機模式為 GATT
        {
           if ( bt_save_init_mode((uint8_t)BT_BOOT_INIT_MODE_GATTS) )
           bt_reboot_system();
        }
 
        printf("BT INIT\n");
        init_connection_info();  // 初始化
        bt_create_task();   // 開啟藍芽功能
 
雖然 Filogic 130A 開啟了藍芽,但是這個 BLE server 還沒廣播本身服務 UUID,因此需要調用底下的函數,讓這個設備進入廣播,也就是 pairing (advertising),等待 BLE client 的連線。
 
        printf("BLE SMTCN INIT\n");
        ble_smtcn_init();    // 初始化 pair 數據
        ble_smtcn_start_adv(NULL, 0);   // 開始 pairing
 
 

手機連線 (client 端)

        手機上的 APP (BLE Scanner) 也可以做為 BLE client 端的測試工具,當連線到 Filogic 130A 板子後,呈現的畫面如下圖四,我們可以清楚看到 server 端所提供的服務與 UUID,服務的屬性。該板子有提供 "Write" 屬性,代表 client 端可以上傳資料到 server 端,server 端收到資料後,便能做處理達到藍芽遙控器的功能。
 
圖四:手機 app -- BLE Scanner 連線畫面

        最後,我們將實現的結果拍成影片,影片中不只用藍芽來遙控音樂的播放,也可以使用聲控的方式控制音樂播放與停止。YouTube 影片連結如下:https://youtu.be/esCSL31hE9I
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 漢亞科技 Han-Ya 的頭像
    漢亞科技 Han-Ya

    漢亞科技 Han-Ya

    漢亞科技 Han-Ya 發表在 痞客邦 留言(0) 人氣()