
对于刚接触物联网(IoT)的开发者来说,通过手机远程控制一盏LED灯是绝佳的入门项目。这个项目将引导你使用 ESP32 开发板连接 Wi-Fi,并通过 Blynk IoT 平台与手机 App 联动,让你在任意有网络的地方都能控制硬件。整个实践过程会涉及 Wi-Fi 连接、云端通信、虚拟引脚(Virtual Pin)等物联网核心概念。
一、准备清单
在开始动手之前,请准备好以下硬件:
- ESP32 开发板
- USB-A 转 Micro-USB 数据线
- ESP32 30Pin 扩展板(可选,用于更方便接线)
- 红色 LED
- 330Ω 电阻(1 个)
- 杜邦线若干
- 面包板
二、Blynk Cloud 端配置
我们首先需要在云端配置好设备模型和控制界面。
1)登录云端与进入开发者区域
- 打开 Blynk Cloud 并登录你的账号(如果没有,请先注册)。
- 从左侧菜单进入 Developer Zone(开发者区域),这里用于创建设备模板和进行相关配置。


2)创建 Template(模板)
在 New Template 中填写以下信息:
- Name:
led controller esp32
- Hardware: ESP32(选择你实际使用的板卡类型)
- Connection Type: WiFi
填写完成后,点击 Done。


3)创建 Datastream:Virtual Pin(虚拟引脚)
在刚创建的模板中,进入 Datastreams → New Datastream → Virtual Pin,并进行如下设置:
- Name:
LED
- Pin:
V0
- Data Type: Integer
- Min: 0
- Max: 1
创建后,记得点击页面上的 Save 按钮保存配置。




4)搭建 Web Dashboard(网页控制台)
接下来,我们为设备创建一个网页控制界面。进入 Web Dashboard → Edit 页面。
- 从左侧控件箱中添加一个 Switch(开关)控件到画布上。
- 点击这个开关控件进行设置:
- Datastream: 选择
LED (V0)
- ON value: 1
- OFF value: 0
- 配置完成后,先保存开关控件的设置,然后务必再点击一次页面顶部的 Save 按钮,完成双重保存。





5)从模板创建设备,并复制三行关键参数
云端模型配置好后,我们需要基于它创建一个真实的设备实例。
- 进入 Devices → New Device → Create From Template。
- 选择你刚刚创建的
led controller esp32 模板,然后创建设备。
- 设备创建成功后,页面上会显示三行关键的代码定义。请复制它们,稍后需要粘贴到 Arduino 代码中:
#define BLYNK_TEMPLATE_ID "....."
#define BLYNK_TEMPLATE_NAME "led controller esp32"
#define BLYNK_AUTH_TOKEN "....."





6)复制设备凭据(Device Credentials)
另一种获取凭证的方式是:
- 在设备列表中,点击你刚创建的设备进入详情页。
- 找到 Development tools 部分。
- 在底部,通常会有一个可以直接复制全部代码片段(包含上述三行定义)的区域,点击复制即可。



三、Arduino IDE 环境配置
现在,我们来配置本地的编程环境。
1)在 Arduino IDE 添加 ESP32 开发板地址
为了让 Arduino IDE 支持 ESP32,需要添加开发板源。
- 打开 Arduino IDE,进入 File > Preferences。
- 在 Additional Board Manager URLs 字段中,填入以下地址:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
- 点击 OK。


2)安装与选择开发板、串口
- 打开 Tools > Board > Boards Manager...。
- 搜索并安装 esp32 by Espressif Systems。
- 安装完成后,在 Tools > Board 中选择你使用的 ESP32 板型,例如
ESP32 Dev Module。
- 通过电脑的设备管理器(Windows)确认 ESP32 连接后对应的串口(COM)编号。
- 在 Arduino IDE 的 Tools > Port 菜单中选择对应的串口。




3)安装 Blynk 库
我们需要安装 Blynk 库来实现与云端的通信。
- 打开 Sketch > Include Library > Manage Libraries...。
- 搜索 Blynk,找到并安装 Blynk by Volodymyr Shymanskyy。
四、上传程序
最关键的一步来了:编写并上传控制代码到 ESP32。
代码示例与说明
将你在 Blynk Cloud 中复制的 BLYNK_TEMPLATE_ID、BLYNK_TEMPLATE_NAME 和 BLYNK_AUTH_TOKEN,以及你的 Wi-Fi 名称和密码,填入下面的代码对应位置。
#define BLYNK_TEMPLATE_ID "填入你的模板ID"
#define BLYNK_TEMPLATE_NAME "led controller esp32"
#define BLYNK_AUTH_TOKEN "填入你的设备令牌"
/* 基础示例:使用 Blynk IoT + ESP32 控制LED开关 */
// 包含 Blynk 库
#include <BlynkSimpleEsp32.h>
#include <WiFi.h>
// 在此填入你的Wi-Fi凭证
char ssid[] = "你的Wi-Fi名称";
char pass[] = "你的Wi-Fi密码";
const int LED_PIN = 18; // LED连接的引脚(例如 GPIO 18)
// 当手机App上的开关控制虚拟引脚V0时,此函数被调用
BLYNK_WRITE(V0) {
int pinValue = param.asInt(); // 从App获取值,0或1
digitalWrite(LED_PIN, pinValue); // 控制LED亮灭
}
void setup() {
pinMode(LED_PIN, OUTPUT);
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass); // 连接Blynk和Wi-Fi
}
void loop() {
Blynk.run(); // 保持与Blynk云端的连接和通信
}
代码逻辑解析:
当你在 Blynk App 或网页控制台上操作开关时,状态值(0 或 1)会通过云端发送到 ESP32。BLYNK_WRITE(V0) 是一个回调函数,它负责接收这个值,并通过 digitalWrite 函数将其写入到 LED_PIN 对应的物理 GPIO 引脚上,从而实时控制 LED 的亮灭。

五、硬件接线
按照简单的电路原理进行连接:
- 将 LED 的长脚(正极)与一个 330Ω 电阻串联。
- 电阻的另一端连接到 ESP32 的 GPIO18(与代码中
LED_PIN = 18 对应)。
- LED 的短脚(负极)直接连接到 ESP32 的 GND 引脚。

六、常见报错处理
上传代码时,你可能会遇到一个典型错误:“Failed to connect to ESP32: Wrong boot mode detected!”。这通常是因为 ESP32 没有进入下载模式。
解决方法:
- 在 Arduino IDE 中点击 Upload(上传)按钮。
- 当输出窗口显示 “Connecting...” 时,立即按下并按住 ESP32 板上的 BOOT 按钮不放。
- 等待程序上传进度开始(出现一连串的点)后,即可松开 BOOT 按钮。
- 补充提示:有时程序上传成功后不会自动运行,此时可以按一下 ESP32 的 RESET 键让其正常启动。

七、验证与手机端控制
1)用 Web Dashboard 先验证
一切就绪后,回到 Blynk Console 的 Devices 页面。你的设备状态应该显示为 Online。点击进入设备,操作 Web Dashboard 上的开关,观察面包板上的 LED 是否随之亮灭。


2)在 Blynk 手机 App 添加开关控件
网页控制成功,意味着云端和硬件通信正常。现在让我们在手机上实现控制:
- 在手机上下载并打开 Blynk IoT App,使用同一账号登录。
- 在设备列表中找到你的设备并进入。
- 点击界面上的 “+” 或铅笔图标进入编辑模式。
- 在控件箱中找到 Switch 控件,将其拖放到屏幕上。
- 点击这个 Switch 控件进行设置:
- Datastream: 选择
LED (V0)。
- 你还可以在 Design 选项卡中为开关重命名(例如改为“LED”),并调整其样式、位置和大小。
- 保存设置后,你就可以随时随地用手机上的开关控制远程的 LED 灯了。
总结
至此,你已经成功完成了一个完整的 IoT 应用闭环:在云端定义数据模型和虚拟引脚 → 在网页和手机端配置控制界面 → ESP32 联网并与云端建立通信 → 通过回调函数驱动物理 GPIO → 最终实现 LED 的实时响应。
这个项目是物联网开发的基石。掌握了这套流程后,你可以轻松地进行扩展:例如将 LED 替换为继电器来控制台灯或风扇;创建更多虚拟引脚来实现多路设备控制;或者在 Dashboard 中添加图表、滑块等控件,将一个简单的开关升级为功能丰富的可视化设备控制面板。这正是物联网的魅力所在——将想法快速变为可交互的现实。欢迎到 云栈社区 分享你的项目成果或探索更多进阶玩法。