一、 實驗說明:打造無線藍牙遠端數據傳輸系統!
在物聯網(IoT)與智慧控制專題中,近距離無線通訊是非常實用的功能。傳統透過實線連接電腦 Serial 視窗除錯或傳輸資料,限制了裝置的移動性;若能利用 ESP32 內建的藍牙功能與隨身攜帶的手機連線,就能輕鬆實現無線監控、遠端遙控與資料傳輸!
本實驗米羅將帶大家使用 ESP32 開發板 搭配 Android 手機。ESP32 整合了傳統藍牙(Classic Bluetooth)與低功耗藍牙(BLE)。本篇將聚焦示範 ESP32 如何透過傳統藍牙的序列埠規範(Serial Port Profile – SPP)與 Android 手機建立連線,手把手教大家完成手機與 ESP32 之間的文字訊息雙向收發!
二、 實驗材料準備清單
本篇實作 ESP32 與 Android 手機藍牙通訊專案所需的硬體與軟體如下:
ESP32 開發板
Android 手機或平板
Android APP:
Arduino Bluetooth Control(可至 Google Play 商店免費下載)USB 傳輸線
🛒 一次備齊創客工具!
歡迎直接購買米羅科技的 ESP32 物聯網應用學習套件,免去東奔西跑湊零件的煩惱。內含 ESP32 開發板與豐富感測元件,是學校教學與專案開發的最佳首選!
相關知識:
藍牙Bluetooth無線通訊傳輸,通常用於近端點對點通訊,為了確保藍牙裝置間的互通性,藍牙技術聯盟(SIG)定義了許多Profile,稱為藍牙規範(Bluetooth profile),例如藍牙立體聲音訊傳輸規範(A2DP)、人機介面規範 (HID)、序列埠規範 (SPP)、藍牙耳機規範(HSP)、免手持裝置規範 (HFP)等等…。本篇將會使用序列埠規範 (Serial Port Profile – SPP)與手機的藍牙進行數據傳輸。
若需要了解更詳細的藍牙規範細節,可參考SIG網站:https://www.bluetooth.com/specifications/specs/
▼ESP32集成了低功耗藍牙(BLE)和傳統藍牙兩種藍牙功能。在數據傳輸有兩種模式:主模式和從模式。
Master mode (主模式):
在這種模式下,工作在主設備中完成,它可以與從設備連線。我們可以搜索並選擇附近的從設備進行連線。當一個設備在主模式下發起連線請求時,它需要其他藍牙設備的信息,包括它們的MAC Address和Passkey 。配對完成後,就可以直接連線。
Slave mode(從機模式)
從模式的藍牙模組只能接受來自主模式的連線請求,而不能主動發起連線請求。與主設備連線後,它可以向主設備發送數據或從主機設備接收數據。
藍牙設備之間可以進行數據交互傳送,一個是主模式,另一個則是從模式。在進行數據交互傳送時,主模式下的藍牙設備會搜索並選擇附近的藍牙設備進行連接,在藍牙建立連接後就可以交互進行傳送與接收資料。手機與ESP32交互傳送數據時,通常手機為主模式,ESP32 則是從模式。
程式:
#include <BluetoothSerial.h>
BluetoothSerial SerialBT;
void setup() {
Serial.begin(115200);
SerialBT.begin("ESP32_BT"); //藍牙顯示名稱,可自行更改,需避免與他人重複命名
}
void loop() {
if (Serial.available()) {
SerialBT.write(Serial.read());
}
if (SerialBT.available()) {
Serial.println(SerialBT.readString());
}
delay(50);
}
程式說明:
將範例程式編譯並上傳程式碼到ESP32開發板後,接著我們開始設定手機端的部分。
▼首先,請至Android App Store 下載並安裝『Arduino Bluetooth Control』
▼手機安裝好APP後,請先開啟Android手機『設定』並打開藍牙,點擊“搜索”附近的藍牙設備,選擇ESP32_BT進行配對連線。
▼接著,開啟『Arduino Bluetooth Control』APP,選擇ESP32_BT進行連線。
▼進入APP之後,請點擊Terminal序列通訊功能,接著就會看到上下兩個視窗,分別是用來『接收資料的顯示視窗』與『發送資料的顯示視窗』
▼接下來在ESP32的序列視窗發送訊息後,我們即可在手機視窗內接收到ESP32傳來的文字訊息。注意鮑率需要設定在115200。
▼一樣在手機端的序列通訊功能下方的資料發送欄位,輸入文字後並按鍵盤處的完成鍵送出資料,我們即可在ESP32的序列視窗內接收到手機傳來的文字訊息。
▼【ESP32教學】教學總索引頁面







