本文旨在說明如何用手機透過藍牙跟 ESP32-Cam 作溝通,看完之後您將會發現這將是一件非常簡單的事。
ESP32-Cam 開發板搭載了一個低功耗藍牙,它跟一般的 HC-05、HC-06 藍牙有點兒不同,這方面您可以參考一下維基百科,在「無線電介面」章節裡有詳細介紹他們的區別。
ESP32-Cam 發送訊息給手機
以下這個程式會讓 ESP32-Cam 每隔 1 秒鐘發送一次 "Hello World!" 字串給手機。
#include <BluetoothSerial.h>
BluetoothSerial BT; // 宣告藍芽物件,名稱為BT
void setup() {
Serial.begin(115200);
BT.begin("RobotWolfGroup"); // 指定藍芽裝置的名稱
}
void loop() {
BT.println("Hello World!");
delay(1000);
}
您有沒有發現程式碼才短短幾行?
是的,免設定密碼、鮑率...等有的沒的,它就是這麼簡單好用。
藍牙配對
在 ESP32-Cam 端程式上傳完畢後,接下來需要用手機跟它的藍牙配對。
Step1 打開手機藍牙,選擇「配對新裝置」。
Step2 找到「RobotWolfGroup」這個藍牙裝置後,點擊它並配對。這個 BLE 在配對時是不需要輸入密碼的。
手機安裝 APP
我們需要在手機裡安裝 APP,才可以接收來自 BLE 的訊息。
Step1 請打開手機的「PLAY商店」,在裡面搜尋「Arduino Bluetooth」。
Step2 找到「Arduino Bluetooth Control」,安裝它。
Step3 安裝完成後,請開啟它。開啟後如下圖
Step4 點選畫面右上角落的圓形雙箭頭,搜尋「RobotWolfGroup」藍牙裝置,找到後點選它。
Step5 再點選畫面右上角落的「Terminal」,然後您就會看到如下畫面
手機發送訊息給 ESP32-Cam
以下這個程式可以讓手機發送訊息給 ESP32-Cam,請將該程式上傳到 ESP32-Cam。
#include <BluetoothSerial.h>
BluetoothSerial BT;//宣告藍芽物件,名稱為BT
void setup() {
Serial.begin(115200);
BT.begin("RobotWolfGroup"); //指定藍芽裝置的名稱
}
void loop() {
//檢查藍芽內是否有資料
while (BT.available()) {
//讀取藍芽資料
String str = BT.readString();
//顯示在序列視窗
Serial.println(str);
}
delay(10);
}
上傳完成後,請打開「序列埠監看視窗」。
開啟手機 APP 並完成選取藍牙裝置(如果之前有順利選取可用裝置,當再次啟動 APP 時它會自動連線」。
點選畫面右上角落的「Terminal」,然後在視窗最下方的「Type in data to send」欄位內輸入訊息,然後您就會看到如下畫面。
接著請您再檢查一下「序列埠監視視窗」裡是否有接收到訊息,如下圖
手機收發 ESP32-Cam 訊息
將上面兩個程式合併,就可以讓手機收發 ESP32-Cam 訊息。
這個程式是手機鍵入 "A",ESP32-Cam 會回應 "Apple";手機鍵入 "B",ESP32-Cam 會回應 "Banana";若手機鍵入 "A" 、"B" 以外的字,ESP32-Cam 會回應 "N/A"。
請將下方程式上傳到 ESP32-Cam。
#include <BluetoothSerial.h>
BluetoothSerial BT; // 宣告藍芽物件,名稱為BT
void setup() {
Serial.begin(115200);
BT.begin("RobotWolfGroup"); // 指定藍芽裝置的名稱
}
void loop() {
// 檢查藍芽內是否有資料
while (BT.available()) {
// 讀取藍芽資料
String str = BT.readString();
// 顯示在序列視窗
Serial.println(str);
// 回訊給手機
if (str == "A")
BT.println("Apple");
else if (str == "B")
BT.println("Banana");
else
BT.println("N/A");
}
delay(10);
}
開啟手機 APP 並完成選取藍牙裝置(如果之前有順利選取可用裝置,當再次啟動 APP 時它會自動連線」。
點選畫面右上角落的「Terminal」,然後在視窗最下方的「Type in data to send」欄位內輸入訊息,然後您就會看到如下畫面。
使用幾次之後,發現這訊息時間不對,而且訊息一去一回大約花了 2 秒鐘時間,速度還真是慢啊,應該是這個 APP 的問題吧?
不過這個 APP 還是有可取之處,它的語音控制功能 (Voice Control) 還不錯,可以設定 10 組的語音與相對應要發送的字串,這個用來控制家電倒是蠻不錯的,我用它來控制 5 種電器的開與關。
語音控制功能這部分跟 ESP32-Cam 無關,我們就不多介紹了,那就請您自行練習囉。
採購資訊
Micro SD 4G 記憶卡 https://www.ruten.com.tw/item/show?22033106394834
ESP32 開發指南(書) https://www.ruten.com.tw/item/show?22023657661505
ESP32-Cam 開發板 https://www.ruten.com.tw/item/show?22018501441929
ESP32-Cam 雙軸雲台(基本款)套件 https://www.ruten.com.tw/item/show?22024688065979
ESP32-Cam 雙軸雲台(人體偵測款)套件 https://www.ruten.com.tw/item/show?22024688076465
您好,您的範例使用的是傳統藍芽,並不是BLE低功率藍芽喔!
回覆刪除我電子信箱是pingsinoca@gmail.com 您好,我想用ESP32 CAM BT藍芽影像顯示在手機,請問我要怎改和增加代碼?
回覆刪除