實作目的 本文要實現一個藍芽 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 晶片(Cortex-M33)本身有語音運算且具有藍芽連接的能力,所以採用 BLE 來達到這項目的。本文的最後一段,有影片呈現實現的結果。 架構中,做為 BLE server 的設備,就是等待其他周邊設備的連接請求,所以連線之前需要發出廣播與配對 (advertising) 的訊號到空中。另一方面,做為 BLE client 的設備,本身要進入掃描模式,查看空中有哪些 server 設備,然後再對特定的 server 提出連線的請求。等連線成功後,client 便可以取得 server 端的 GATT 各種屬性。 圖一:BLE client / server 架構圖 ESP32 client 在 Arduino IDE 開發環境中,ESP32 提供不少範例程式,其中打開範例 ESP32 BLE Arduino\BLE_client,這是一個 client 端的應用,它會開啟 scan 模式,掃描周圍能提供服務的藍芽設備,並將名稱顯示在 COM port 上,如下圖所示,這個範例能掃描到藍芽位址,設備名稱,以及服務的 UUID。一般來說,client 設備上會有顯示資訊,讓我們選擇連線哪一個藍芽設備,在 ESP32 BLE 模組就先用 COM port 充當顯示囉! 圖二:BLE client 掃描設備的結果 如果 client 端要連線某一指定的設備,要先知道設備名稱,比如我們這個實驗打算連線的是 Filogic 130A 開發板,它廣播的名稱為 " ...
物聯網一詞是今年相當熱門的話題之一,靠著萬物皆可連的概念讓未來的生活多出很多的想像空間。2015年初,金屬中心智慧系統組提出一個手持裝置偵測器的想法,首先浮出腦海的方式就是採用藍芽與手機連通。自從一兩年前開始,手機的藍芽規格逐漸發展並升級到4.0,加上有了低功耗的連接模式,資料擷取的應用便越來越多,比如家庭或工業上的監控訊號擷取,醫療量測的資料擷取...等。 為了開發設計出手持裝置偵測器,我們從網路上找到 HC-08 藍芽 4.0 模組,它讓使用者能比較快速進入藍芽通訊的領域,透過串列端口控制這塊模組的各項參數,縮短的開發時程。雖然藍芽模組縮短我們進入的門檻,但模組的擴充性卻有所限制,因此需要從外部搭配 MCU 晶片來整合全系統。不過,初步來看這樣的設計還不夠完美,卻也能達到基本的要求。下面的圖示就是以 Arduino Pro Mini 為控制核心,再加上藍芽模組所組成的系統。 圖一:Arduino Pro Mini + HC08 BLE 4.0 模組 設計一個手持裝置遇到最大的麻煩就是耗電,要解決這個問題,以目前的電路設計而言,分成運算時脈和系統的工作電壓兩點。以同等級的 MCU 來說,時脈變慢的話通常耗電量會降低 (雖然運算速度也變慢),假設裝置的運算量不複雜的話,倒是可以盡量讓輸入 MCU 的時脈變慢。通常市面上的 Arduino 板子都是 16MHz,不過用這個概念,我們找到 Arduion Pro Mini 8MHz 3.3V 的開發板。另外,要減少耗電量還可以考慮降低系統的電壓,選用的元件也盡量以低電壓為主,這樣整體耗電會比較低。 此外,在解決耗電問題上,可從 Arduino 韌體設計考慮,當藍芽未連接的情況下,讓 Arduino 進入 power down 模式,這樣可以達到省電的效果。而這塊藍芽模組也有四種操作模式可以設定,只要進入休眠情況,整體系統的耗電都能改善不少。底下是實驗的數據 <全速情況> A...
留言