前面文章 使用C語言控制樹莓派的周邊介面,需要安裝WringPi的介面函式庫。同樣地,使用Python語言也需要一套介面函式庫,稱為 smbus 。樹莓派上的介面,如:I2C、SPI...必須借用smbus函式庫接口來控制這些通訊介面,參考底下的連結,有詳細的說明與使用。 RPi.GPIO Library Raspberry Pi 硬體控制 Using I2C LCD on Raspberry Pi 樹莓派3B+上面的操作系統已經內建smbus函式庫了,當我把I2C LCM1602模組接上後,在命令列輸入sudo i2cdetect -y 1,工具便能搜尋到模組的位址在0x27,表示smbus已經成功在系統內了。接下來,繼續用Python來開發LCM模組的控制,如下圖所示。 圖一:LCM1602 in Python
實作目的 本文要實現一個藍芽 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 開發板,它廣播的名稱為 " ...
留言