在物聯網的創客專案中,使用手機遠端控制家電是最經典的入門應用。本文將帶領大家使用 ESP32 開發板,結合新版 Blynk IoT 平台,透過 GPIO13 腳位控制繼電器,進而開關 USB 小夜燈。
完整影片手把手教學
如果你喜歡看影片跟著動手做,我們準備了詳細的手把手操作影片,包含新版 Blynk 網頁後台設定與手機 App 介面佈局:
電路接線說明
根據我們設計的系統架構,ESP32 負責處理 Blynk 雲端訊號,同時提供 5V 電源給繼電器與 USB 小夜燈,並由繼電器作為實體電源開關,控制 USB 母座的正極電源。

此電路圖展示了 ESP32 開發板透過 GPIO13 腳位連接 5V 繼電器模組,並結合快速接線端子與 USB 母座來控制 USB 小夜燈電源通斷的完整硬體配置。圖中明確標示了 VCC、GND、IN 訊號線以及電源正負極迴路的正確走線方式。
1. ESP32 與 5V 繼電器模組接線
-
VCC (紅線):接 ESP32 的 VIN / 5V(經麵包板正極軌共用 5V)
-
GND (黑線):接 ESP32 的 GND(經麵包板負極軌共地)
-
IN (藍線):接 ESP32 的 GPIO13
2. 繼電器端與 USB 電源迴路接線
-
ESP32 電源 5V (VCC/紅線):由 ESP32 的 5V/VIN 引出至麵包板正極軌,經過快速接線端子連接至繼電器的 COM(常規端/橘線)。
-
繼電器 NO(常開端/綠線):連接至 USB 母座的正極 (VCC/紅線)。
-
ESP32 GND (GND/黑線):直接連接至 USB 母座的負極(透過麵包板跳線與綠線形成共地迴路)。
-
USB 小夜燈:直接插在 USB 母座上,即可接受繼電器控制電源通斷。
新版 Blynk 平台與 APP 設定要點
在撰寫程式碼之前,請先確保已在新版 Blynk Console 完成以下設定(詳細步驟可參考上方教學影片):
-
建立 Template:命名為 ESP32,硬體選擇 ESP32。
-
新增 Datastream (數據流):
-
名稱:
relay -
Pin:選擇
Virtual Pin V2 -
Data Type:
Integer(Min: 0, Max: 1)
-
-
Web Dashboard / Mobile App:
-
拖入一個 Button (按鈕) 元件。
-
將按鈕綁定至 V2 虛擬腳位,並設定模式為 Switch。
-
Arduino 完整程式碼
請複製以下程式碼至 Arduino IDE,並填入你的新版 Blynk Template ID、Auth Token 以及 WiFi 密碼。
/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial
/* 請替換為你在新版 Blynk Console 獲得的資訊 */
#define BLYNK_TEMPLATE_ID "TMPLXXXXXX"
#define BLYNK_TEMPLATE_NAME "ESP32"
#define BLYNK_AUTH_TOKEN "YOUR_BLYNK_AUTH_TOKEN"
#include < WiFi.h>
#include < BlynkMultiClient.h>
// WiFi 設定
const char* ssid = "YOUR_WIFI_SSID"; // 請替換為您的 WiFi 名稱
const char* pass = "YOUR_WIFI_PASSWORD"; // 請替換為您的 WiFi 密碼
static WiFiClient blynkWiFiClient;
// 定義 ESP32 控制腳位 (根據電路圖選用 GPIO13)
#define RELAY_PIN 13
// 當 Blynk App 上的按鈕(綁定 V2)按下時觸發此函數
BLYNK_WRITE(V2) {
int switchState = param.asInt(); // 取得按鈕狀態 (1 為 ON,0 為 OFF)
// 輸出高/低電平控制繼電器
digitalWrite(RELAY_PIN, switchState);
Serial.print("ESP32 GPIO13 Relay State: ");
Serial.println(switchState ? "ON" : "OFF");
}
void connectWiFi() {
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi Connected!");
}
void setup() {
Serial.begin(115200);
// 初始化 GPIO13 為輸出模式,預設關閉 (LOW)
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
connectWiFi();
// Blynk 初始化與連線
Blynk.addClient("WiFi", blynkWiFiClient, 80);
Blynk.config(BLYNK_AUTH_TOKEN);
Blynk.connect();
}
void loop() {
// WiFi 斷線自動重連機制
if (WiFi.status() != WL_CONNECTED) {
connectWiFi();
return;
}
Blynk.run();
}
小貼士:如果你使用的繼電器模組是低電平觸發(Low-Level Trigger),按下 ON 燈沒亮時,請將 BLYNK_WRITE(V2) 中的控制改為 digitalWrite(RELAY_PIN, !switchState); 即可。
總結與延伸應用
透過本篇教學,你已經掌握了:
-
ESP32 如何使用 GPIO13 輸出數位訊號控制繼電器。
-
共用 ESP32 5V/GND 電源軌與繼電器 COM/NO 端的正確接線方式。
-
新版 Blynk V2 虛擬腳位的收發機制。
未來你可以將 USB 小夜燈替換成 110V 家用燈泡(需注意用電安全)、抽水馬達或風扇,實現完整的智慧家居控制!