ESP32, IOT物聯網

【ESP32教學】第二十一篇:ESP32 藍牙遠端控制 LED 燈實作(BluetoothSerial 應用)

一、 實驗說明:打造手機藍牙無線控制系統!

在智慧家庭與物聯網(IoT)應用中,使用手持行動裝置進行「遠端無線控制」是最受歡迎且實用的功能之一。傳統的開關控制受限於實體線路;若能透過微控制器結合藍牙無線技術,便能隨時隨地透過手機發送指令來操作硬體設備。 本實驗米羅將帶大家使用 ESP32 開發板 搭配 多色 LED 燈。透過藍牙接收手機傳送的控制碼,ESP32 將根據指令即時點亮或關閉對應的 LED 燈,帶您快速掌握物聯網手機無線控制的核心技巧!

 

二、 實驗材料準備清單

本篇實作 ESP32 與 iPhone BLE 藍牙通訊專案所需的硬體與軟體如下:

  • ESP32 開發板

  • 麵包板 (Breadboard)

  • 直插 LED 燈(紅、黃、綠各 1 顆)

  • 220Ω 直插電阻

  • 麵包板跳線

  • USB 傳輸線

  • Android 手機或平板

 

⭐ 一次備齊創客工具! 歡迎直接購買米羅科技的 ESP32 物聯網應用學習套件,免去東奔西跑湊零件的煩惱。內含 RGB LED 模組、各類感測器及基礎電子元件,是學校課堂教學與個人專案開發的最佳首選。

 

三、 核心知識:BluetoothSerial 藍牙序列埠通訊與接線原理

  1. BluetoothSerial 藍牙序列埠通訊簡介 在 Arduino 的 ESP32 開發環境中,原廠提供了 BluetoothSerial.h 函式庫,讓開發者能夠非常直覺地將 ESP32 模擬成傳統藍牙序列埠(Bluetooth SPP)裝置。當手機與 ESP32 成功連線後,手機發送的字串指令(如 “1”、”2″)會透過藍牙無線傳送到 ESP32,ESP32 讀取後即可透過程式判斷來驅動 GPIO 腳位的高低電位(HIGH/LOW)。

  2. 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開發板後,接著我們開始設定手機端的部分。

  1. 開啟 Android 手機藍牙,搜尋並與裝置 ESP32_BT 完成配對。
  2. 開啟控制 App,點選「Buttons&Slider」進入 Buttons 頁面。

 

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

 

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

 

五、 初學者常見卡關問題與排錯指南(Troubleshooting)

  1. 手機搜尋不到 ESP32_BT 藍牙裝置?

  • 供電與程式確認:請確認 ESP32 開發板已正常通電,且 SerialBT.begin(“ESP32_BT”); 有順利執行。可嘗試按壓 ESP32 開發板上的 EN/RST 重置按鈕重新啟動。

  1. 手機發送指令後,LED 燈完全沒有反應?

  • 腳位與正負極檢查:請確認 LED 的長腳(正極)是否有透過 220Ω 電阻分別連接至 GPIO 16、17、5,短腳(負極)是否有確實接至 GND。

  • 鮑率與設定對應:請確保 Arduino IDE 序列埠鮑率設定為 115200,且手機 App 按鈕設定的數值與程式碼中的判斷條件(如 “1”~”6″)完全一致。

 

六、 結語與下一篇教學

恭喜你!成功掌握了使用 ESP32 的 BluetoothSerial 藍牙功能,透過手機 App 發送無線指令控制實體硬體。這種無線遠端控制的方法,是物聯網智慧家電遙控、開關控制等情境非常經典且必學的範例!

 

ESP32 教學系列|延伸閱讀與章節導覽

 

 

相關文章