嵌入式开发 ESP32入门教程2026|从零开始:引脚图 + 第一个LED闪烁项目 + Wi-Fi连接
你是不是在搜索”eps32”?其实正确的拼写是 ESP32(Espressif Systems 出品的双核 Wi-Fi + 蓝牙微控制器)。这个小小的芯片已经成为 IoT 开发者和电子爱好者的首选平台,原因很简单:价格便宜(开发板约 ¥20-40)、性能强大(双核 240MHz)、自带 Wi-Fi 和蓝牙,而且社区资源极其丰富。
本教程将带你从零开始,完成 ESP32 的第一个项目。即使你从未接触过嵌入式开发,也能在 30 分钟内让 LED 闪烁起来。
为什么选择 ESP32?
在 ESP8266 之后,乐鑫推出了 ESP32,性能全面提升:
| 特性 | ESP8266 | ESP32 | ESP32-S3 |
|---|---|---|---|
| CPU | 单核 80MHz | 双核 240MHz | 双核 240MHz |
| Wi-Fi | 802.11 b/g/n | 802.11 b/g/n | 802.11 b/g/n |
| 蓝牙 | 无 | Bluetooth 4.2 + BLE | Bluetooth 5.0 + BLE |
| GPIO | 17 | 34 | 45 |
| Flash | 外部 | 4-16MB | 8-16MB |
| PSRAM | 无 | 4MB | 8MB |
ESP32 的典型应用场景:
- 智能家居设备(配合 Matter 协议)
- 传感器数据采集与上传
- 无线遥控器和 IoT 网关
- SDR 软件定义无线电 DIY 项目
- 低功耗电池供电设备
你需要准备什么?
硬件清单
| 物品 | 数量 | 参考价格 | 说明 |
|---|---|---|---|
| ESP32 开发板 | 1 | ¥20-40 | 推荐 ESP32-DevKitC 或 ESP32-WROOM-32 |
| Micro-USB 数据线 | 1 | ¥5-10 | 注意必须是数据线,不是充电线 |
| LED 发光二极管 | 1 | ¥0.1 | 任意颜色 |
| 220Ω 电阻 | 1 | ¥0.1 | 限流保护 LED |
| 面包板 | 1 | ¥5-10 | 830 孔标准面包板 |
| 杜邦线 | 若干 | ¥5 | 公对公、公对母各备一些 |
重要提醒:很多新手买错线——必须买 Micro-USB 数据线,不是充电线!充电线只有电源线没有数据线,插上电脑后无法识别设备。
软件环境
-
下载 Arduino IDE 2.x:https://www.arduino.cc/en/software
-
添加 ESP32 开发板支持:
- 打开 Arduino IDE → 文件 → 首选项
- 在”附加开发板管理器网址”中添加:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json- 工具 → 开发板 → 开发板管理器 → 搜索 “esp32” → 安装
-
安装 USB 驱动(根据开发板芯片选择):
- CP2102:Silicon Labs 官网下载
- CH340:沁恒官网下载(国产芯片,很多便宜开发板用这个)
认识 ESP32 开发板
以最常用的 ESP32-DevKitC V4 为例:
┌─────────────────────┐
│ ESP32 │
│ ┌───────────┐ │
USB ───┤ │ ESP-WROOM │ ├─── 3V3 EN VP VN D34-D39
│ │ -32 │ │
│ └───────────┘ ├─── GND D2 D4 RX2 TX2
│ │
└─────────────────────┘
关键引脚说明
| 引脚 | 功能 | 注意事项 |
|---|---|---|
| 3V3 | 3.3V 电源输出 | 最大 500mA |
| GND | 地线 | 多个 GND 引脚可任选 |
| GPIO2 | 板载 LED | 很多开发板自带蓝色 LED |
| GPIO0 | 启动模式选择 | 下载固件时必须拉低 |
| EN | 复位/使能 | 拉低复位芯片 |
| TX0/RX0 | 串口通信 | 连接 USB 转串口芯片 |
| TX2/RX2 | 第二串口 | 可用于与其他设备通信 |
提示:不同厂家的开发板引脚排列可能略有不同,购买前请对照数据手册确认。如果不确定,可以搜索你的开发板型号 + “pinout” 查找引脚图。
第一个项目:让 LED 闪烁
这是嵌入式开发的”Hello World”——让一个 LED 以 1 秒间隔闪烁。
接线图
ESP32 GPIO2 ──── 220Ω电阻 ──── LED正极(长脚)
│
LED负极(短脚)
│
ESP32 GND ────────────────────────┘
实物接线步骤:
- 将 ESP32 插入面包板
- 用杜邦线连接 GPIO2 到电阻一端
- 电阻另一端连接 LED 正极(长脚)
- LED 负极(短脚)连接到 ESP32 的 GND
编写代码
打开 Arduino IDE,输入以下代码:
// ESP32 LED 闪烁示例
#define LED_PIN 2 // GPIO2,很多开发板自带蓝色 LED
void setup() {
// 初始化 LED 引脚为输出模式
pinMode(LED_PIN, OUTPUT);
// 初始化串口通信(用于调试)
Serial.begin(115200);
Serial.println("ESP32 LED 闪烁程序启动");
}
void loop() {
digitalWrite(LED_PIN, HIGH); // 点亮 LED
Serial.println("LED ON");
delay(1000); // 等待 1 秒
digitalWrite(LED_PIN, LOW); // 熄灭 LED
Serial.println("LED OFF");
delay(1000); // 等待 1 秒
}
上传固件
- 选择开发板:工具 → 开发板 → ESP32 Arduino → “ESP32 Dev Module”
- 选择端口:工具 → 端口 → 选择你的 COM 口(Windows)或 /dev/ttyUSB0(Linux)/dev/cu.usbserial-*(macOS)
- 点击上传按钮(→ 箭头)
常见问题:
- “Failed to connect to ESP32”:按住开发板上的 BOOT 按钮(GPIO0),再点击上传,看到”Connecting…”后松开 BOOT 按钮
- “COM port not found”:检查 USB 线是否是数据线,驱动是否安装正确
进阶:连接 Wi-Fi
ESP32 最强大的功能之一是内置 Wi-Fi。下面是一个连接 Wi-Fi 并通过串口输出 IP 地址的示例:
#include <WiFi.h>
const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println();
Serial.print("正在连接 Wi-Fi: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
// 等待连接成功
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("Wi-Fi 连接成功!");
Serial.print("IP 地址: ");
Serial.println(WiFi.localIP());
Serial.print("信号强度: ");
Serial.print(WiFi.RSSI());
Serial.println(" dBm");
}
void loop() {
// 主循环可以添加其他逻辑
delay(1000);
}
上传后打开串口监视器(工具 → 串口监视器,波特率 115200),你会看到:
正在连接 Wi-Fi: YourWiFiName
.....
Wi-Fi 连接成功!
IP 地址: 192.168.1.100
信号强度: -45 dBm
下一步:探索更多 ESP32 功能
完成本教程后,你可以继续学习:
- ESP32 进阶功能:EEPROM 存储、UART 串口通信、OTA 空中升级
- ESP32-C6 Matter 智能家居:用 ESP32-C6 搭建 Matter 协议智能家居
- ESP32-S3 SDR DIY:用 ESP32-S3 制作全波段软件定义无线电
- ESP32 实时 AI SDK:在 ESP32 上运行语音识别和图像分类
常见问题排查
Q: 搜索”eps32”能找到 ESP32 吗?
A: 可以!“eps32” 是 “ESP32” 的常见拼写错误。Google 会自动纠正拼写,所以搜索 “eps32” 会显示 “ESP32” 的结果。本教程也包含了这个关键词,方便拼写错误的用户找到。
Q: ESP32 和 Arduino 有什么区别?
A: Arduino 是开发平台和编程语言(基于 C++),ESP32 是硬件芯片。你可以用 Arduino IDE 给 ESP32 编程,也可以用 ESP-IDF(乐鑫官方 SDK)直接开发。本教程使用 Arduino 框架,适合入门。
Q: ESP32 能直接驱动 5V 设备吗?
A: 不能。ESP32 的 GPIO 是 3.3V 电平,直接连接 5V 设备可能损坏芯片。需要使用电平转换模块(如 TXS0108E)或分压电阻。
Q: 为什么我的 ESP32 经常重启?
A: 常见原因:
- 电源不足:USB 线质量差或 USB 口供电不足,换一根好的数据线
- 代码问题:看门狗超时(watchdog timeout),检查是否有死循环
- 内存溢出:PSRAM 未正确初始化,大数组导致栈溢出