跳转到内容

Arduino IDE兼容性

本节介绍Arduino IDE作为ESP32的开发环境。通过本节学习,你将能够:

  • 在Arduino IDE中安装和配置ESP32开发板支持包
  • 管理ESP32开发的库
  • 编写、编译和上传基本的ESP32草图
  • 已安装Arduino IDE(推荐2.x版本)
  • ESP32开发板和USB线
  • 已安装USB-UART驱动程序(CP2102或CH340)

Arduino IDE是最容易上手的ESP32开发环境。它抽象了复杂的工具链配置,让开发者专注于应用逻辑。ESP32 Arduino Core(由乐鑫维护)提供完整的API兼容性。

Arduino IDE与ESP32的工作方式

  1. 你编写一个草图(.ino文件),包含setup()loop()函数
  2. IDE使用ESP32工具链(XTensa GCC)编译草图
  3. 编译后的二进制文件通过串行引导加载程序上传到ESP32
  4. ESP32在复位后执行固件
  • 完整的Wi-Fi和蓝牙API(类似于标准Arduino以太网库)
  • 外设API:GPIO、ADC、DAC、I2C、SPI、UART、PWM(LEDC)、I2S
  • FreeRTOS任务管理(底层调度器)
  • OTA(空中升级)支持
  • 深度睡眠和电源管理
  • 文件系统支持(SPIFFS、LittleFS)

Arduino IDE 2.x(推荐)

  1. 打开Arduino IDE
  2. 进入 File > Preferences(macOS下为 Arduino IDE > Settings
  3. 在”Additional Boards Manager URLs”字段中,添加:
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  4. 点击 OK
  5. 进入 Tools > Board > Boards Manager
  6. 搜索”ESP32”
  7. 找到 esp32 by Espressif Systems
  8. 点击 Install(安装包约500 MB,需要几分钟) (这种安装方式对于身处中国大陆的用户很不友好,至于是github封了中国大陆,还是中国大陆官方封了github,我们不得而知,解决方案比较简单粗暴,就是向周围的朋友,或者在互联网上寻找能访问外网的方法)

Arduino IDE 1.8.x(旧版)

步骤相同。注意IDE 1.8.x编译速度可能较慢。

  1. 进入 Tools > Board > ESP32 Arduino
  2. 选择你的开发板型号:
    • 标准DevKit:ESP32 Dev Module
    • NodeMCU-32S:NodeMCU-32S
    • M5Stack Core2:M5Stack-Core2
    • XIAO ESP32-C3:XIAO_ESP32C3
    • ESP32-CAM:AI Thinker ESP32-CAM
  3. Tools > Port 下选择正确的端口
  4. 验证上传速度:Tools > Upload Speed > 921600(如果不稳定则用115200)

常见ESP32库及其安装方式:

用途安装方式
PubSubClientMQTT客户端库管理器:“PubSubClient by Nick O’Leary”
ArduinoJsonJSON解析/创建库管理器:“ArduinoJson by Benoit Blanchon”
DHT sensor libraryDHT11/DHT22库管理器:“DHT sensor library by Adafruit”
Adafruit Unified Sensor传感器抽象层库管理器:“Adafruit Unified Sensor”
U8g2OLED显示屏库管理器:“U8g2 by Oliver Kraus”
WiFiManagerWi-Fi配置入口库管理器:“WiFiManager by tzapu”

通过库管理器安装:

  1. 进入 Tools > Manage Libraries(或Ctrl+Shift+I)
  2. 搜索库名称
  3. 点击 Install

新建一个草图(File > New)并输入:

#include <WiFi.h>
const char* ssid = "YourWiFiSSID";
const char* password = "YourWiFiPassword";
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("ESP32 Test Sketch");
Serial.print("Connecting to Wi-Fi");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("Connected! IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
Serial.print("Uptime: ");
Serial.print(millis() / 1000);
Serial.println(" seconds");
delay(5000);
}

上传步骤

  1. 通过USB连接ESP32
  2. 选择正确的开发板和端口(Tools > Board、Tools > Port)
  3. 将ESP32置于刷写模式:
    • 按住 BOOT 按钮
    • 按下并松开 EN(复位)按钮
    • 松开 BOOT 按钮 (某些较新的开发板自动复位,不需要此步骤)
  4. 点击 Upload 按钮(右箭头)或按Ctrl+U
  5. 等待”Connecting…”然后出现上传进度条
  6. “Done uploading”后,打开串行监视器(Tools > Serial Monitor,115200波特率)
  7. 按EN按钮复位ESP32并观察输出

串行监视器预期输出:

ESP32 Test Sketch
Connecting to Wi-Fi............
Connected! IP address: 192.168.1.100
Uptime: 1 seconds
Uptime: 6 seconds
Uptime: 11 seconds
  • 安装后ESP32开发板出现在板管理器列表中
  • 所选开发板匹配实际硬件
  • USB端口被检测到并且可选
  • 草图编译无错误
  • 上传完成到100%
  • 串行监视器显示预期输出
  • Wi-Fi连接成功,获取到正确的IP地址

上传时显示”Failed to connect to ESP32: Timed out”

Section titled “上传时显示”Failed to connect to ESP32: Timed out””

原因

  • ESP32未处于刷写/下载模式
  • 选择了错误的端口
  • USB线仅充电(无数据线)

解决方案

  1. 按住BOOT,按EN,松开BOOT,然后重试上传
  2. 验证选择了正确的COM/端口
  3. 尝试另一根USB线(最好是有数据传输经验的线)
  4. 将上传速度降低到115200波特率

”A fatal error occurred: MD5 of file does not match data in flash”

Section titled “”A fatal error occurred: MD5 of file does not match data in flash””

原因

  • 串行连接不稳定
  • 上传过程中电源波动

解决方案

  1. 使用更短的USB线
  2. 将上传速度降低到115200
  3. 通过外部5V电源为ESP32供电,而非USB

原因

  • 库管理器未正确安装
  • 库与ESP32不兼容

解决方案

  1. 重启Arduino IDE
  2. 验证库是否出现在 Sketch > Include Library > Manage Libraries
  3. 手动从GitHub下载库并将其放置在libraries文件夹中

常见原因

  1. 在ESP32上使用AVR特定代码(如avr/pgmspace.h
  2. 缺少ESP32开发板包

解决方案

  1. 检查架构特定代码并替换为ESP32等效代码
  2. 重新安装ESP32开发板支持包
  3. 将Arduino IDE更新到最新版本
  • 使用Arduino IDE 2.x:具有现代编辑器、更快的编译速度和内置串行绘图器
  • 维护库版本:记录库版本以确保可重现的构建
  • 检查开发板选择:错误的开发板选择可能导致编译错误或引脚映射不正确
  • 保持ESP32 Core更新:乐鑫频繁发布更新;每几个月在板管理器中检查更新
  • 使用专用USB端口:避免使用USB集线器以确保稳定的通信,特别是在上传时
  1. Arduino IDE需要ESP32开发板支持包(通过板管理器URL添加)
  2. 开发板选择必须匹配实际硬件以获得正确的引脚映射
  3. 通过库管理器安装库(PubSubClient、ArduinoJson等)
  4. 上传需要ESP32处于刷写模式(按住BOOT,按EN)
  5. 推荐使用Arduino IDE 2.x而非1.8.x以获得更好性能