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

说实话,做嵌入式开发这么多年,我见过太多人卡在环境搭建这一步。明明代码逻辑没问题,就是编译报错、下载失败,最后发现是开发环境没配好。这一章,咱们就把ESP32的开发环境彻底搞定。

我会带你一步步配置Arduino IDE、安装ESP32板级支持包、搞定串口驱动,再介绍几个常用的库。嗯,跟着我来,半小时内你就能跑起第一个程序。

3.1 Arduino IDE的安装与配置

Arduino IDE,说白了就是个轻量级的编辑器+编译器。我个人的习惯是,不管用什么芯片,都先用Arduino IDE快速验证一下硬件是否正常。为什么呢?因为它简单、直接,不用折腾复杂的工程配置。

下载与安装

去官网下载最新版就行。Windows用户选Windows Installer,macOS用户选macOS版。安装过程一路默认,没什么坑。

配置中文界面

安装完后,打开Arduino IDE,点击 File → Preferences,在 Editor Language 里选择 简体中文,重启IDE就生效了。我个人建议用英文界面,因为报错信息更容易搜索。但如果你刚入门,中文界面确实友好一些。

小技巧: 我习惯把 Show verbose output during 里的两个选项都勾上。这样编译和下载时能看到详细信息,出问题好排查。

3.2 ESP32板级支持包安装

Arduino IDE默认不支持ESP32,需要手动添加板级支持包。这一步其实很简单,但很多新手会卡在下载速度上——因为服务器在国外。

添加开发板管理器地址

打开 文件 → 首选项,在 附加开发板管理器网址 里填入:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

如果你有多个地址,一行一个。我曾经遇到过地址写错导致安装失败的情况,所以建议你复制粘贴,别手打。

安装ESP32包

点击 工具 → 开发板 → 开发板管理器,搜索 ESP32,找到 esp32 by Espressif Systems,点击安装。版本我建议选最新的稳定版,大概2.0.x系列。

注意: 安装过程需要下载约200MB的文件。如果下载失败,可以尝试以下方法:
  • 使用手机热点(有时候比宽带快)
  • 换个时间段再试(避开高峰期)
  • 手动下载离线包(网上有教程)

安装完成后,在 工具 → 开发板 里就能看到 ESP32 Arduino 选项了。选 ESP32 Dev Module 作为默认开发板。

3.3 串口驱动与调试

ESP32开发板通常通过USB转串口芯片与电脑通信。常见的芯片有CP2102、CH340G、FT232等。你买开发板时,商家一般会告诉你用的什么芯片。

安装串口驱动

以CH340G为例,这是国内最常见的方案。去官网下载驱动,或者直接用驱动精灵安装。安装后插上开发板,在设备管理器里能看到 COM端口 下多了一个设备。

验证驱动是否正常

打开Arduino IDE,点击 工具 → 端口,看看有没有出现新的COM口。如果有,恭喜你,驱动装好了。如果没有,检查一下:

  • 数据线是不是只能充电不能传数据?我吃过这个亏,换了根线就好了
  • 驱动版本对不对?32位和64位系统要对应
  • USB口是不是有问题?换个口试试

串口调试小技巧:

我习惯在代码里加一些调试信息,比如:

void setup() {
  Serial.begin(115200);
  Serial.println("ESP32 启动成功!");
  Serial.printf("芯片频率: %d MHz\n", getCpuFrequencyMhz());
}

这样一上电就能看到芯片是否正常工作。波特率我一般用115200,稳定且速度快。

3.4 常用库介绍

做红外遥控项目,有几个库是绕不开的。我挑几个最常用的说说。

库名 用途 安装方式
IRremote 红外信号发送与接收 库管理器搜索安装
ArduinoJson JSON数据解析与生成 库管理器搜索安装
WiFi ESP32 WiFi功能 内置库,无需安装
EEPROM 数据持久化存储 内置库,无需安装

IRremote库——这个是我们项目的核心。它支持NEC、SONY、RC5等多种红外协议。我刚开始做红外遥控时,用的就是这个库,省了不少事。

ArduinoJson库——如果你想把遥控码存成JSON格式,这个库就派上用场了。比如:

StaticJsonDocument<200> doc;
doc["protocol"] = "NEC";
doc["address"] = 0xFF00;
doc["command"] = 0x10EF;

EEPROM库——用来保存学习到的红外码。ESP32的EEPROM模拟在Flash上,有断电保存功能。注意,写入次数有限,别频繁写。

我的建议: 刚开始别装太多库。用到什么装什么,不然库之间可能冲突。我遇到过两个红外库同时安装导致编译报错的情况,排查了半天才发现是库冲突。

3.5 第一个测试程序

环境搭好了,咱们跑个程序验证一下。打开Arduino IDE,新建一个文件,输入:

void setup() {
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
  Serial.println("LED 闪烁一次");
}

点击 上传 按钮,等编译完成,程序就会自动下载到ESP32。如果看到板载LED每隔1秒闪烁一次,串口监视器里打印出信息,那就说明环境搭建成功了。

常见问题:
  • 上传时按住开发板上的 BOOT 键,直到开始上传再松开。有些开发板需要这样操作。
  • 如果提示 A fatal error occurred: Failed to connect to ESP32,检查串口是否被占用,或者换个USB口。

好了,到这里ESP32的开发环境就搭建完成了。下一章咱们开始真正接触红外遥控,学习如何用ESP32接收和发送红外信号。说实话,第一次看到自己写的代码能控制空调时,那种成就感真的很棒。