藍芽與 WiFi 都是用來通訊的,藍芽通常用於近端點對點通訊,所謂的點對點就像是藍芽無線耳機與手機連接,用來播放音樂,又如藍芽滑鼠鍵盤功能是輸入文字,它只是一種序列通訊,功能較為簡單,而 WiFi 則常用來連入網際網路,相比之下 WiFi 需要比較複雜的設定,而藍芽只需配對就能取用服務。
與藍芽同位階的應該算是紅外線,不過紅外線有方向性,必須對準裝置才能傳輸,其速度慢不說,距離大概不能超過 10 公尺,而藍芽無方向性,因此不用對準,且傳輸距離遠,速度也比紅外線快很多。
本章先簡介 ESP32 的藍牙通訊設定與使用,由於它是藍芽內建的,所以不用接線或設定 AT COMMAND,也不用宣告 TXRX 相關的通訊協定,值得一提的是,而且它屬於低功率藍芽(BLE:Bluetooth Low Energy),耗電量較少外,傳輸距離理論可達 300 公尺遠,實際測試 30 公尺也沒問題,相對常見搭配 UNO 使用的 HC-05 屬於藍芽 2.1,理論傳輸距離只有 10 公尺。
藍芽單向傳輸
這邊會說明如何使用 ESP32 藍芽將資訊傳遞給藍芽裝置(手機)進行接收,另由於 bluetooth 函式庫與 iOS 手機不相容的原因,接下來都將使用 Android 裝置進行解說。
ESP32 藍芽的開啟僅需幾個步驟:
- 使用藍芽函式庫:#include <BluetoothSerial.h>
- 宣告藍芽序列通訊物件:BluetoothSerial BT;//BT 為藍芽通訊物件
- 在 Setup 中開啟藍芽:BT.begin("BTName");// BTName 為藍芽廣播名稱
- 當要傳輸資訊時:BT.print("要傳輸的文字");//println 則是換行
我們先來做一個簡單的測試,就是每秒傳輸一次「Hello World!」到手機中,程式如下:
#include <BluetoothSerial.h>BluetoothSerial BT;//宣告藍芽物件,名稱為BT
void setup() {
Serial.begin(115200);
BT.begin("Eric1030");//請改名例如英文+生日,以免與其他同學名稱重複
}
void loop() {
BT.println("Hello World!");
delay(1000);
}
完成程式上傳後,我們來處理手機的部份,請開啟 Android 手機的 App store,並搜尋 Arduino Bluetooth Control,其圖示如下,APP Store 有很多類似的 APP,功能也都差不多,但是我們選定的這個 APP 有提供語音辨識的功能;若無法找到該 APP,可能是版本不相容,但可以從我的雲端空間下載備份 APK 檔案。
Arduino Bluetooth Control(圖片來源:Google Play)
手機安裝好 APP 後,啟動藍芽連線設定,如果未在「可用裝置」中出現,請點選「不常用類型裝置」。
只需不到短短一分鐘...
輸入您的信箱與ID註冊即可享有一切福利!
會員福利
免費電子報
會員搶先看
主題訂閱
好文收藏