Skip to content

IoT:ESP32 通用开发流程总结

ESP32 开发全景图

ESP32 的开发主要可以通过三种路径进行,下图清晰地展示了它们的区别和联系,您可以根据自身情况选择最适合的路径。

mermaid
flowchart TD
    A[开始ESP32开发] --> B{选择开发方式};

    B -- 初学者推荐 --> C[Arduino框架];
    B -- 追求性能与专业度 --> D[ESP-IDF框架];
    B -- 物联网快速原型 --> E[PlatformIO工具];

    subgraph C [路径一: Arduino框架]
        C1[安装Arduino IDE<br>安装ESP32板支持包] --> C2[使用简单易用的<br>Arduino API编写代码] --> C3[一键编译与上传];
    end

    subgraph D [路径二: ESP-IDF框架]
        D1[安装乐鑫官方IDF<br>(或VSCode扩展)] --> D2[使用功能强大的<br>原生IDF API编写代码] --> D3[使用idf.py命令<br>编译与烧录];
    end

    subgraph E [路径三: PlatformIO]
        E1[在VSCode中<br>安装PlatformIO扩展] --> E2[选择Arduino或ESP-IDF<br>作为底层框架] --> E3[使用PIO命令或GUI<br>进行编译与上传];
    end

    C3 --> F[调试与监控];
    D3 --> F;
    E3 --> F;

    F --> G{结果验证};
    G -- 成功 --> H[项目完成];
    G -- 失败 --> I[检查硬件连接<br>审查代码逻辑<br>查看日志输出];
    I --> C2 & D2 & E2;

路径一:使用 Arduino (IDE) 进行开发(最适合初学者)

这种方式利用了熟悉的 Arduino 生态,上手速度最快。

阶段一:环境搭建

  1. 安装 Arduino IDE

  2. 安装 ESP32 开发板支持

    • 打开 Arduino IDE,进入 文件 -> 首选项
    • “附加开发板管理器网址” 中输入以下网址(如果已有其他,用逗号隔开): https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
    • 点击 “确定”
    • 然后进入 工具 -> 开发板 -> 开发板管理器
    • 搜索 “esp32”,找到由 Espressif Systems 提供的包,点击 “安装”
  3. 安装 USB 驱动程序

    • 大多数 ESP32 开发板使用 CP2102 或 CH340 芯片进行 USB 转串口。
    • CP2102 驱动: 硅实验室官网下载
    • CH340 驱动: 在网上搜索“CH340 驱动”即可找到。

阶段二:硬件准备

  1. 选择 ESP32 开发板:如 ESP32-DEVKITC V4、NodeMCU-32S 等。
  2. 连接电脑:使用 USB 数据线将开发板连接到电脑。
  3. 选择端口和开发板
    • 在 IDE 中,工具 -> 开发板 选择你的 ESP32 型号(如 “ESP32 Dev Module”)。
    • 工具 -> 端口 选择对应的串行端口(在 Windows 上是 COMx,在 Linux/Mac 上是/dev/cu.usbserial-xxx)。

阶段三:编写和上传代码

  1. 创建一个新项目

    • 文件 -> 示例 -> 01.Basics -> Blink,打开一个示例程序。
  2. 修改代码(以 Blink 为例)

    • ESP32 的板载 LED 引脚通常不是 13,而是 GPIO2。修改代码如下:
    cpp
    // 将 LED_BUILTIN 改为 2
    const int ledPin = 2; // 根据你的开发板调整引脚号
    
    void setup() {
      pinMode(ledPin, OUTPUT);
    }
    
    void loop() {
      digitalWrite(ledPin, HIGH); // 点亮LED
      delay(1000);                // 等待1秒
      digitalWrite(ledPin, LOW);  // 熄灭LED
      delay(1000);                // 等待1秒
    }
  3. 编译与上传

    • 点击 “验证”(对勾图标)编译代码。
    • 编译无误后,点击 “上传”(右箭头图标)将代码烧录到 ESP32。
    • 注意:有些 ESP32 开发板需要手动进入下载模式。在上传时,可能需要按住“BOOT”按钮,然后按一下“EN”按钮复位,再松开“BOOT”按钮。

阶段四:监视串口输出

  • 上传完成后,点击 “串口监视器”(右上角的放大镜图标)。
  • 设置正确的波特率(通常为 115200),你可以在代码中使用 Serial.begin(115200); 来初始化。

路径二:使用 ESP-IDF 进行开发(官方框架,更专业)

这种方式能发挥 ESP32 的全部潜力,访问所有底层功能。

阶段一:环境搭建

  1. 官方方法(乐鑫官方教程)

    • 访问 ESP-IDF 编程指南
    • 按照指南安装 ESP-IDF 和工具链(包括编译器、调试器等)。这可以通过乐鑫的安装工具或命令行完成。
  2. 推荐方法:使用 VSCode 扩展

    • 安装 Visual Studio Code
    • 在 VSCode 的扩展商店中搜索并安装 “Espressif IDF” 扩展。
    • 按照扩展的指引,它会自动帮你下载和设置 ESP-IDF 环境,非常方便。

阶段二:创建项目

  1. 打开 VSCode,通过命令面板 (Ctrl+Shift+P) 运行 “ESP-IDF: Show Examples Projects”
  2. 选择一个示例项目(例如 get-started -> blink),并将其保存到你的本地目录。

阶段三:配置与编译

  1. 项目结构

    • main/:主要源代码目录。
      • main.c:程序主文件。
    • CMakeLists.txt:构建系统配置文件。
    • sdkconfig:项目配置文件(首次编译后生成)。
  2. 配置项目

    • 在 VSCode 终端或使用 idf.py menuconfig 命令打开配置菜单。
    • 在这里你可以配置 Wi-Fi、内核、外设等所有参数。对于 Blink 示例,你可能需要在这里指定 LED 的 GPIO 引脚。
  3. 编译项目

    • 在终端中,进入项目目录,运行 idf.py build

阶段四:烧录与监视

  1. 烧录:运行 idf.py -p PORT flash(将 PORT 替换为你的实际端口,如 COM3/dev/cu.usbserial-110)。
  2. 监视串口:运行 idf.py -p PORT monitor 来查看日志输出。
    • 同时执行烧录和监视,可以使用 idf.py -p PORT flash monitor
  3. 退出监视器:按 Ctrl+]

路径三:使用 PlatformIO 进行开发(平衡了易用性与专业性)

PlatformIO 是一个跨平台的嵌入式开发工具,构建在 VSCode 之上,可以同时支持 Arduino 和 ESP-IDF 框架。

阶段一:环境搭建

  1. 安装 VSCode。
  2. 在 VSCode 扩展商店中搜索并安装 “PlatformIO IDE”

阶段二:创建项目

  1. 点击 PIO 主页的 “New Project”
  2. 输入项目名称。
  3. “Board” 中搜索 ESP32 并选择你的型号(如 Espressif ESP32 Dev Module)。
  4. “Framework” 中选择 ArduinoESP-IDF
  5. 点击 “Finish”

阶段三:开发与部署

  1. 项目结构

    • src/:存放源代码(如 main.cpp)。
    • include/:存放头文件。
    • platformio.ini项目配置文件,这是核心
  2. 配置 platformio.ini

    ini
    [env:esp32-devkit-c]
    platform = espressif32
    board = esp32-devkit-c
    framework = arduino
    monitor_speed = 115200
    ; 使用Arduino框架的LED闪烁示例配置

    如果你想改用 ESP-IDF,将 framework = arduino 改为 framework = espidf 即可。

  3. 编写代码:在 src/main.cpp 中编写。

  4. 编译与上传

    • 编译:点击底部状态栏的 “✓”(Build)图标。
    • 上传:点击 “→”(Upload)图标。
    • 串口监视:点击 “插头”(Serial Monitor)图标。

通用开发流程总结

无论选择哪种路径,一个完整的 ESP32 项目开发都遵循以下核心步骤:

  1. 明确需求:确定项目要实现什么功能(如:连接 Wi-Fi、读取传感器、控制电机)。
  2. 硬件选型与连接:选择合适的 ESP32 开发板和外围器件(传感器、执行器等),并正确连接电路。
  3. 环境搭建:选择一种开发方式(Arduino, ESP-IDF, PlatformIO)并安装好对应的软件环境。
  4. 编写代码
    • 初始化配置(串口、Wi-Fi、外设等)。
    • 实现主循环逻辑。
    • 合理使用 delay() 或定时器来处理非阻塞任务。
  5. 编译与烧录:将代码编译成二进制文件并烧录到 ESP32 的 Flash 中。
  6. 调试与测试
    • 核心手段串口打印。使用 Serial.println() 输出变量值和程序状态,这是最有效的调试方法。
    • 观察硬件反应。
    • 使用逻辑分析仪等工具进行深层调试。
  7. 迭代优化:根据测试结果修改代码,修复 Bug,优化性能。