一、 實驗說明:打造手機藍牙無線控制系統!
在智慧家庭與物聯網(IoT)應用中,使用手持行動裝置進行「遠端無線控制」是最受歡迎且實用的功能之一。傳統的開關控制受限於實體線路;若能透過微控制器結合藍牙無線技術,便能隨時隨地透過手機發送指令來操作硬體設備。 本實驗米羅將帶大家使用 ESP32 開發板 搭配 多色 LED 燈。透過藍牙接收手機傳送的控制碼,ESP32 將根據指令即時點亮或關閉對應的 LED 燈,帶您快速掌握物聯網手機無線控制的核心技巧!
二、 實驗材料準備清單
本篇實作 ESP32 與 iPhone BLE 藍牙通訊專案所需的硬體與軟體如下:
-
ESP32 開發板
-
麵包板 (Breadboard)
-
直插 LED 燈(紅、黃、綠各 1 顆)
-
220Ω 直插電阻
-
麵包板跳線
-
USB 傳輸線
-
Android 手機或平板
⭐ 一次備齊創客工具! 歡迎直接購買米羅科技的 ESP32 物聯網應用學習套件,免去東奔西跑湊零件的煩惱。內含 RGB LED 模組、各類感測器及基礎電子元件,是學校課堂教學與個人專案開發的最佳首選。
三、 核心知識:BluetoothSerial 藍牙序列埠通訊與接線原理
-
BluetoothSerial 藍牙序列埠通訊簡介 在 Arduino 的 ESP32 開發環境中,原廠提供了 BluetoothSerial.h 函式庫,讓開發者能夠非常直覺地將 ESP32 模擬成傳統藍牙序列埠(Bluetooth SPP)裝置。當手機與 ESP32 成功連線後,手機發送的字串指令(如 “1”、”2″)會透過藍牙無線傳送到 ESP32,ESP32 讀取後即可透過程式判斷來驅動 GPIO 腳位的高低電位(HIGH/LOW)。
- ESP32 與各模組接線對照表
| 元件名稱 | 元件針腳 / 標記 | 連接至 ESP32 腳位 | 腳位功能說明 |
| 紅色 LED | 正極 (+) 經 220Ω 電阻 | GPIO 16 | 數位輸出腳,給予高電位點亮紅燈 |
| 黃色 LED | 正極 (+) 經 220Ω 電阻 | GPIO 17 | 數位輸出腳,給予高電位點亮黃燈 |
| 綠色 LED | 正極 (+) 經 220Ω 電阻 | GPIO 5 | 數位輸出腳,給予高電位點亮綠燈 |
| LED 共用負極 | 負極 (-) | GND | 電源接地端 |
四、 實作實驗程式碼:藍牙指令讀取與 LED 遠端控制
請將以下程式碼複製到 Arduino IDE 中並上傳至 ESP32 開發板:
1. 範例程式碼
#include <BluetoothSerial.h>
BluetoothSerial SerialBT;
int led_1 =16; //紅色LED
int led_2 =17; //黃色LED
int led_3 =5; //綠色LED
void setup() {
Serial.begin(115200);
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);
pinMode(led_3, OUTPUT);
SerialBT.begin("ESP32_BT");
}
void loop() {
String value;
if (SerialBT.available()) {
value = SerialBT.readString();
if(value == "1"){
//收到1,開啟紅色LED
digitalWrite(led_1,HIGH);
Serial.println("收到1,開啟紅色LED");
}
if(value == "2"){
//收到2,關閉紅色LED
digitalWrite(led_1,LOW);
Serial.println("收到2,關閉紅色LED");
}
if(value == "3"){
//收到3,開啟黃色LED
digitalWrite(led_2,HIGH);
Serial.println("收到3,開啟黃色LED");
}
if(value == "4"){
//收到4,關閉黃色LED
digitalWrite(led_2,LOW);
Serial.println("收到4,關閉黃色LED");
}
if(value == "5"){
//收到5,開啟綠色LED
digitalWrite(led_3,HIGH);
Serial.println("收到5,開啟綠色LED");
}
if(value == "6"){
//收到6,關閉綠色LED
digitalWrite(led_3,LOW);
Serial.println("收到6,關閉綠色LED");
}
}
delay(50);
}
2. 燒錄與操作測試
將範例程式編譯並上傳程式碼到ESP32開發板後,接著我們開始設定手機端的部分。
- 開啟 Android 手機藍牙,搜尋並與裝置 ESP32_BT 完成配對。
- 開啟控制 App,點選「Buttons&Slider」進入 Buttons 頁面。

3. 點選右上角設定功能,進入「Command buttons configuration」修改按鈕對應值,分別將 Button E 對應的值設定為 5,Button F 對應的值設定為 6。


4. 在手機端依序點擊按鈕,即可在 ESP32 的序列視窗內接收到手機傳來的指令,並觀察 ESP32 上 LED 燈光的即時變化!

五、 初學者常見卡關問題與排錯指南(Troubleshooting)
-
手機搜尋不到 ESP32_BT 藍牙裝置?
-
供電與程式確認:請確認 ESP32 開發板已正常通電,且 SerialBT.begin(“ESP32_BT”); 有順利執行。可嘗試按壓 ESP32 開發板上的 EN/RST 重置按鈕重新啟動。
-
手機發送指令後,LED 燈完全沒有反應?
-
腳位與正負極檢查:請確認 LED 的長腳(正極)是否有透過 220Ω 電阻分別連接至 GPIO 16、17、5,短腳(負極)是否有確實接至 GND。
-
鮑率與設定對應:請確保 Arduino IDE 序列埠鮑率設定為 115200,且手機 App 按鈕設定的數值與程式碼中的判斷條件(如 “1”~”6″)完全一致。
六、 結語與下一篇教學
恭喜你!成功掌握了使用 ESP32 的 BluetoothSerial 藍牙功能,透過手機 App 發送無線指令控制實體硬體。這種無線遠端控制的方法,是物聯網智慧家電遙控、開關控制等情境非常經典且必學的範例!
ESP32 教學系列|延伸閱讀與章節導覽