1. ESP32 开发环境搭建:工欲善其事,必先利其器

说实话,做嵌入式开发这么多年,我见过太多人在环境搭建这一步就卡住了。不是装不上驱动,就是 IDE 报错,折腾半天连个 LED 都点不亮。这一章,咱们就把 ESP32 的开发环境彻底捋顺。

我会带你走两条路:一条是 Arduino IDE,适合快速验证、原型开发;另一条是 PlatformIO,适合工程化、多平台管理。两条路我都会讲清楚,你根据自己的习惯选就行。

本章目标: 装好环境、点亮板子、跑通串口。就这么简单。

1.1 开发工具选型:Arduino IDE vs PlatformIO

先说说这两个工具的区别。我个人的习惯是:小项目用 Arduino IDE,大项目用 PlatformIO。为什么?你看下面这个表就明白了。

对比项 Arduino IDE PlatformIO
上手难度 极低,开箱即用 中等,需要了解 VS Code
项目管理 单个 .ino 文件 多文件、多库、多环境
库管理 内置库管理器 pio lib 命令行 + 图形化
调试支持 串口打印 原生调试器 + 串口监视器
多平台 需手动切换板型 自动识别,一键切换
编译速度 较慢(单线程) 较快(多线程)

你看,Arduino IDE 的优势就是简单。你下载、安装、选板子、写代码、上传,完事。但如果你要做 WebSocket 优化、前端交互这种稍微复杂点的项目,我建议你直接上 PlatformIO。我在做 ESP32 的 MQTT 网关项目时,就是因为用了 PlatformIO 的多环境配置,才没被不同板子的引脚定义搞疯。

1.2 Arduino IDE 环境搭建

好,咱们先从 Arduino IDE 开始。这是最基础的路子,也是很多人的入门选择。

1.2.1 下载与安装

  1. 去 Arduino 官网下载最新版 IDE(我写这章时是 2.x 版本)。
  2. Windows 用户直接运行安装包,macOS 用户拖到 Applications 文件夹,Linux 用户解压后运行 install.sh。
  3. 安装完成后,打开 IDE,你会看到一个简洁的界面——嗯,确实有点简陋,但够用。
小提示: 如果你用的是 Windows,安装路径尽量不要有中文或空格。我曾经因为路径里有“程序文件”四个字,折腾了半天编译报错,最后才发现是路径问题。

1.2.2 安装 ESP32 板级支持包

Arduino IDE 默认不支持 ESP32,需要手动添加板级支持包。步骤如下:

  1. 打开 文件 > 首选项(Windows)或 Arduino IDE > 设置(macOS)。
  2. 在“附加开发板管理器网址”里填入:
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  3. 点击 工具 > 开发板 > 开发板管理器,搜索 esp32。
  4. 找到 esp32 by Espressif Systems,点击安装(大约 200MB,需要等一会儿)。

安装完成后,你会在开发板列表里看到一大串 ESP32 型号。选你手头的那块就行,比如 ESP32 Dev Module 或 NodeMCU-32S。

注意: 安装过程如果卡住,多半是网络问题。你可以试试科学上网,或者换个时间段再试。实在不行,手动下载包然后放到 %LOCALAPPDATA%/Arduino15/staging/packages 目录下。

1.2.3 串口驱动安装

ESP32 开发板通常使用 CP2102 或 CH340 串口芯片。插上板子后,如果电脑没识别到串口,就需要手动装驱动。

  • CP2102 驱动: 去 Silicon Labs 官网下载。
  • CH340 驱动: 去 WCH 官网下载,或者直接用驱动精灵。

装好驱动后,打开设备管理器(Windows)或 ls /dev/tty.*(macOS/Linux),你应该能看到类似 COM3 或 /dev/ttyUSB0 的设备。

1.3 PlatformIO 环境搭建

如果你打算认真做项目,我强烈推荐 PlatformIO。它基于 VS Code,功能强大得多。

1.3.1 安装 VS Code 与 PlatformIO 插件

  1. 下载并安装 Visual Studio Code。
  2. 打开 VS Code,点击左侧扩展图标,搜索 PlatformIO IDE。
  3. 点击安装,等待完成(第一次安装会下载核心工具,大约 300MB)。

安装完成后,VS Code 底部会出现一个 蚂蚁头图标——那就是 PlatformIO 的入口。

1.3.2 创建第一个 ESP32 项目

  1. 点击蚂蚁头图标,选择 Open > New Project。
  2. 输入项目名称,比如 esp32_websocket_demo。
  3. 在 Board 里搜索 ESP32 Dev Module,选中它。
  4. Framework 选择 Arduino(当然你也可以选 ESP-IDF,但咱们这课程用 Arduino 框架)。
  5. 点击 Finish,PlatformIO 会自动创建项目结构并下载依赖。

项目结构长这样:

esp32_websocket_demo/
├── .pio/          # 编译缓存,不用管
├── .vscode/       # VS Code 配置
├── include/       # 头文件
├── lib/           # 第三方库
├── src/           # 源代码
│   └── main.cpp   # 主程序
├── test/          # 测试文件
├── platformio.ini # 项目配置文件
└── README.md

嗯,比 Arduino IDE 那种单文件结构清晰多了吧?

1.3.3 配置 platformio.ini

这个文件是 PlatformIO 的灵魂。我一般会这样配置:

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
lib_deps = 
    bblanchon/ArduinoJson @ ^6.21.0
    links2004/WebSockets @ ^2.4.0

这里 monitor_speed 设置串口波特率,lib_deps 声明依赖库。PlatformIO 会自动下载这些库,不用你手动去翻 GitHub。

我的习惯: 每次新建项目,我都会先把 monitor_speed 设成 115200,因为 ESP32 默认就是这个波特率。如果你用 9600,串口打印会乱码——别问我怎么知道的。

1.4 串口调试工具链搭建

环境搭好了,怎么确认板子能正常工作?串口调试是第一步。

1.4.1 串口监视器

Arduino IDE 自带串口监视器,在 工具 > 串口监视器 里打开。PlatformIO 也有内置的串口监视器,点击底部 Serial Monitor 按钮就行。

我个人更喜欢用 PuTTY(Windows)或 screen(macOS/Linux),因为它们更稳定,不会丢数据。

# macOS/Linux 下用 screen 连接串口
screen /dev/ttyUSB0 115200

# 退出 screen:Ctrl+A,然后按 K

1.4.2 测试代码:点亮板载 LED

来,写个最简单的程序,验证环境是否正常。

// Arduino IDE 版本
void setup() {
  Serial.begin(115200);
  pinMode(2, OUTPUT);  // ESP32 板载 LED 通常接 GPIO2
}

void loop() {
  digitalWrite(2, HIGH);
  Serial.println("LED ON");
  delay(1000);
  digitalWrite(2, LOW);
  Serial.println("LED OFF");
  delay(1000);
}

上传后,如果板载 LED 开始闪烁,串口监视器里打印出 "LED ON" 和 "LED OFF",恭喜你,环境搭建成功了。

踩坑提醒: 上传时如果报错 A fatal error occurred: Failed to connect to ESP32,多半是没按住 BOOT 按钮。ESP32 需要在上传时进入下载模式。具体操作:按住 BOOT,按一下 EN,松开 BOOT。嗯,我刚开始玩 ESP32 时,这个操作练了十几次才形成肌肉记忆。

1.5 知识体系总览

下面这张图,把本章的知识结构串起来了。你可以把它当成一张地图,随时回来对照。

ESP32 开发环境搭建知识体系 ESP32 开发环境搭建知识体系 开发环境搭建 Arduino IDE PlatformIO 下载安装 板级支持包 串口驱动 测试代码 VS Code + 插件 项目创建 platformio.ini 库管理 💡 小项目用 Arduino IDE,大项目用 PlatformIO 两者共用同一套串口驱动和调试工具链

1.6 常见问题与避坑指南

最后,我把这些年遇到过的坑整理一下,你遇到了可以直接翻这里。

问题 原因 解决方案
上传失败:Failed to connect 未进入下载模式 按住 BOOT,按 EN,松开 BOOT
串口打印乱码 波特率不匹配 检查 Serial.begin() 和监视器波特率是否一致
编译报错:esp32 未找到 板级支持包未安装 重新安装 ESP32 包,检查 JSON 地址
PlatformIO 下载库失败 网络问题或库名错误 检查 lib_deps 格式,或手动下载放到 lib/ 目录
Windows 不识别串口 驱动未安装 安装 CP2102 或 CH340 驱动
我的经验: 如果你用的是 macOS,插上 ESP32 后没反应,试试用 ls /dev/tty.* 看看有没有新设备。有时候系统会把它识别成 /dev/tty.wchusbserial*,而不是 ttyUSB0。