1. ESP32开发环境搭建:Arduino IDE与ESP-IDF双平台配置
做嵌入式开发这么多年,我始终觉得环境搭建是入门的第一道坎。ESP32 的开发环境其实不复杂,但选错工具链、装错驱动,能让你折腾一整天。今天咱们就把 Arduino IDE 和 ESP-IDF 两个平台都搭起来,再跑个 Hello World 验证一下。
1.1 开发环境选型:Arduino IDE vs ESP-IDF
很多新手会纠结到底学哪个。我的建议是:两个都要装。Arduino IDE 适合快速验证、原型开发;ESP-IDF 适合做产品级项目,资源调度更精细。
| 对比项 | Arduino IDE | ESP-IDF |
|---|---|---|
| 上手难度 | 低,5分钟跑通 | 中高,需要熟悉 CMake |
| 编译速度 | 快 | 较慢(全量编译) |
| FreeRTOS 支持 | 封装后使用 | 原生完整支持 |
| OTA 升级 | 需第三方库 | 原生组件支持 |
| 适用场景 | 原型、教学、简单采集 | 产品、多任务、低功耗 |
我个人习惯用 Arduino IDE 做快速验证,等逻辑稳定了再迁移到 ESP-IDF 做优化。你想想看,如果每次改个引脚定义都要等两分钟编译,那效率得多低?
1.2 硬件准备与驱动安装
先确认你手上的 ESP32 开发板。市面上常见的有 ESP32-DevKitC、NodeMCU-32S、以及各种合宙、安信可的模组。不管哪种,核心都是 ESP32 芯片,开发流程一样。
1.2.1 驱动安装(CP2102 / CH340)
大部分 ESP32 开发板用的串口芯片是 CP2102 或 CH340。插上 USB 线后,如果电脑没识别到串口,那就是驱动没装。
- CP2102:去 Silicon Labs 官网下载驱动,Windows 一般自动更新能装上
- CH340:国内板子常用,去 WCH 官网下载,注意区分 32/64 位
1.2.2 确认串口编号
Windows 下打开设备管理器,展开「端口 (COM 和 LPT)」,看到类似 Silicon Labs CP210x USB to UART Bridge (COM3) 就对了。记下这个 COM 号,后面烧录要用。
Linux/Mac 下用 ls /dev/ttyUSB* 或 ls /dev/tty.* 查看。
1.3 Arduino IDE 环境搭建
这是最快捷的路径。我个人很喜欢 Arduino IDE 2.x 版本,界面清爽,还自带串口监视器。
1.3.1 安装步骤
- 从 arduino.cc 下载 Arduino IDE(推荐 2.x 版本)
- 安装后打开,进入 文件 > 首选项
- 在「附加开发板管理器网址」里填入:
https://espressif.github.io/arduino-esp32/package_esp32_index.json - 打开 工具 > 开发板 > 开发板管理器,搜索
esp32,点击安装
https://mirrors.tuna.tsinghua.edu.cn/ 替换默认地址。
1.3.2 选择开发板
安装完成后,在 工具 > 开发板 > ESP32 Arduino 下找到你的板型。如果找不到完全匹配的,选 ESP32 Dev Module 基本都能用。
关键参数设置:
- Flash Size:4MB(大部分板子默认)
- Partition Scheme:Huge APP (3MB No OTA) 或 Default 4MB
- Upload Speed:921600(如果下载失败,降到 115200)
1.4 ESP-IDF 环境搭建
说实话,ESP-IDF 的安装比 Arduino IDE 复杂不少。但它是乐鑫官方推荐的开发框架,OTA、WiFi 配网、低功耗这些功能支持得最好。
1.4.1 安装方式选择
| 方式 | 适用系统 | 难度 | 说明 |
|---|---|---|---|
| VSCode + ESP-IDF 插件 | Win/Mac/Linux | 低 | 一键安装,推荐新手 |
| 命令行手动安装 | Linux/Mac | 中 | 灵活,适合 CI/CD |
| Docker 镜像 | 全平台 | 中 | 隔离环境,团队统一 |
我建议 Windows 用户直接用 VSCode 插件。打开 VSCode,搜索 ESP-IDF,安装后按 Ctrl+Shift+P,输入 ESP-IDF: Configure,跟着向导走就行。
1.4.2 验证安装
打开终端,运行:
idf.py --version
如果看到类似 ESP-IDF v5.1.2 的输出,说明安装成功。
python --version。
1.5 第一个 Hello World 程序
环境搭好了,咱们跑个程序验证一下。这里分别给出 Arduino IDE 和 ESP-IDF 的版本。
1.5.1 Arduino IDE 版本
新建一个 Arduino 项目,粘贴以下代码:
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("Hello World from ESP32!");
Serial.printf("Chip model: %s\n", ESP.getChipModel());
Serial.printf("Flash size: %d bytes\n", ESP.getFlashChipSize());
}
void loop() {
Serial.printf("Uptime: %lu ms\n", millis());
delay(2000);
}
点击上传按钮,等待编译和烧录。打开串口监视器(波特率 115200),你应该能看到 Hello World 和芯片信息。
1.5.2 ESP-IDF 版本
创建一个新项目:
idf.py create-project hello_world
cd hello_world
编辑 main/hello_world_main.c:
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_chip_info.h"
#include "esp_flash.h"
void app_main(void)
{
printf("Hello World from ESP-IDF!\n");
esp_chip_info_t chip_info;
esp_chip_info(&chip_info);
printf("Chip model: %d cores, WiFi%s%s\n",
chip_info.cores,
(chip_info.features & CHIP_FEATURE_BT) ? "/BT" : "",
(chip_info.features & CHIP_FEATURE_BLE) ? "/BLE" : "");
unsigned flash_size;
esp_flash_get_size(NULL, &flash_size);
printf("Flash size: %d MB\n", flash_size / (1024 * 1024));
int64_t uptime = 0;
while (1) {
printf("Uptime: %lld s\n", uptime / 1000);
vTaskDelay(2000 / portTICK_PERIOD_MS);
uptime += 2000;
}
}
编译烧录:
idf.py set-target esp32
idf.py build
idf.py -p COM3 flash monitor
按 Ctrl+] 退出监视器。
1.6 开发环境全景图
下面这张图展示了整个开发环境的组件关系和流程。我画这张图的时候,特意把驱动层、工具链、应用层分开了,方便你理解每一层的作用。
1.7 常见问题与避坑指南
环境搭建过程中,我遇到过不少坑。这里列几个最常见的,你遇到了可以直接翻到这里查。
原因:ESP32 没有进入下载模式。
解决:按住开发板上的 BOOT 键,再按一下 EN 键(复位),然后松开 BOOT 键。或者检查串口线是否接触不良。
原因:系统默认 Python 版本太低。
解决:安装 Python 3.8+,并将
python3 软链接到 python,或者设置环境变量 ESP_IDF_PYTHON=python3。
原因:波特率不匹配,或者串口被其他程序占用。
解决:检查代码里的
Serial.begin(115200) 和监视器右下角的波特率是否一致。关闭其他串口工具(如 Putty、串口助手)。
1.8 验证清单
环境搭完,别急着往下走。花两分钟确认一下这些项都通过了:
- ✅ 设备管理器能识别到串口(COM 号已知)
- ✅ Arduino IDE 能编译并上传 Hello World
- ✅ 串口监视器能正常显示输出
- ✅ ESP-IDF 能编译并烧录 Hello World
- ✅ 两个平台都能读取芯片信息和 Flash 大小
如果以上都通过了,恭喜你,开发环境已经就绪。后面咱们就可以正式开始数据采集和 OTA 升级的实战了。