跳到主要内容

ESP-IDF 开发

本章节包含以下部分,请按需阅读:

ESP-IDF 入门教程

初次接触 ESP32 ESP-IDF 开发,想要快速上手?我们为您准备了一套通用的 入门教程

请注意:该教程使用 ESP32-S3-Zero 作为教学示例,所有硬件代码均基于其引脚布局。在动手实践前,建议您对照手中的开发板引脚图,确认引脚配置无误。

配置 ESP-IDF 开发环境

注意

注意:ESP-IDF 从 V5.1 版本后才开始支持 ESP32-H2。安装 ESP-IDF 时需选择 V5.1 以上版本。

备注

以下内容以 Windows 系统为例,使用 VS Code + ESP-IDF 扩展 的方式进行开发。Mac/Linux 用户请参考 官方说明

安装 ESP-IDF 开发环境

  1. 前往 ESP-IDF Installation Manager 下载 ESP-IDF 安装管理器。这是乐鑫最新推出的跨平台安装工具,下文将演示如何使用其离线安装功能。

    在页面中点击 Offline Installer 标签,然后在筛选栏中选择 Windows 操作系统和你要安装的版本。

    下载 EIM 和整合包

    确认选择无误后,点击下载按钮。浏览器将自动同时下载两个文件:一个是 ESP-IDF 离线整合包(.zst),另一个是 ESP-IDF 安装器(.exe)

    下载 EIM 和整合包2

    请耐心等待两个文件下载完成。

  2. 下载完成后,双击运行 ESP-IDF 安装器(eim-gui-windows-x64.exe)

    启动后,可在右上角将界面语言切换为中文。

    切换 EIM 语言

    安装工具会自动检测同一目录下是否存在离线整合包。点击 从存档安装

    自动检测整合包

    接下来,选择安装路径。建议使用默认路径;若需自定义,请确保路径中不包含中文或空格。确认无误后,点击 开始安装

    选择安装路径
  3. 当看到如下界面时,表示 ESP-IDF 已安装成功。

    安装成功
  4. 建议同时安装驱动程序。点击 完成安装,然后点击 安装驱动程序

    用 ESP-IDF 安装管理器安装驱动

安装 Visual Studio Code 与 ESP-IDF 扩展

  1. 下载并安装 Visual Studio Code

  2. 安装时建议勾选 通过 Code 打开操作添加到 Windows 资源管理器文件上下文菜单,以便快速打开项目文件夹。

  3. 在 VS Code 中,点击侧边活动栏中的 扩展图标 扩展图标(或使用快捷键 Ctrl + Shift + X)打开 扩展 视图。

  4. 在搜索框中输入 ESP-IDF,找到 ESP-IDF 扩展并点击安装。

    在 VS Code 中搜索并安装 ESP-IDF 扩展

  5. ESP-IDF 扩展版本 ≥ 2.0 时,扩展会自动检测并识别上述步骤中安装的 ESP-IDF 环境,无需手动配置。

运行乐鑫官方示例程序

请参考 微雪 ESP-IDF 入门教程 - 第 2 节 运行示例

Hello Word

  • 官方示例路径:get-started -> hello_world
  • 示例效果:在 TERMINAL 窗口以 10 秒间隔输出 Hello world!

软件操作

  • 根据上方教程创建官方示例 hello_world

  • 程序兼容 ESP32-H2,无需修改程序内容即可使用

  • 修改好 COM 口及驱动对象 (建议优先使用 USB 对应的 COM 口,可通过设备管理器查看),点击编译并烧录即可运行程序

    ESP32-H2 TO Erase Flash 1.png

GPIO

  • 官方示例路径:peripherals -> gpio -> generic_gpio
  • 示例效果:LED 以 1 秒间隔进行闪烁

硬件连接

ESP32-H2LED
GPIO18(或 GPIO19)LED+
GNDLED-

软件操作

  • 根据上方教程创建官方示例 generic_gpio

  • 程序兼容 ESP32-H2,无需修改程序内容即可使用

  • 修改好 COM 口及驱动对象 (建议优先使用 USB 对应的 COM 口,可通过设备管理器查看),点击编译并烧录即可运行程序

    ESP32-H2_TO_Sample

  • 进入程序宏定义位置,查看实际处理的 GPIO

    ESP32-H2_TO_Sample_1

  • 右键,进入 GPIO 定义位置

    ESP32-H2_TO_Sample_1

  • 实际处理的 GPIO 为 GPIO8、GPIO9

    ESP32-H2_TO_Sample_1

RGB

  • 官方示例路径:get-started -> blink
  • 示例效果:板载 RGB 灯珠以 1 秒间隔进行闪烁

软件操作

  • 根据上方教程创建官方示例 blink

  • 程序兼容 ESP32-H2,无需修改程序内容即可使用

  • 修改好 COM 口及驱动对象 (建议优先使用 USB 对应的 COM 口,可通过设备管理器查看),点击编译并烧录即可运行程序

    ESP32-H2_TO_Sample

UART

  • 官方示例路径:peripherals -> uart-> uart_async_rxtxtasks
  • 示例效果:短接 GPIO4 与 GPIO5 情况下进行 UART 的数据自收发

硬件连接

ESP32-H2ESP32-H2(同一块)
GPIO4GPIO5

软件操作

  • 根据上方教程创建官方示例 uart_async_rxtxtasks

  • 程序兼容 ESP32-H2,无需修改程序内容即可使用

  • 修改好 COM 口及驱动对象 (建议优先使用 USB 对应的 COM 口,可通过设备管理器查看),点击编译并烧录即可运行程序

    ESP32-H2_TO_Sample

  • 根据使用的 GPIO 进行硬件连接

    ESP32-H2_TO_Sample

  • 可转到定义文件中查看实际使用的 GPIO(选中 GPIO_NUM_4 -> 右键 -> Go to Definition)

    ESP32-H2_TO_Sample

I2C

  • 官方示例路径:peripherals -> lcd-> i2c_oled
  • 示例效果:点亮 0.96inch OLED (A),显示一段字符

硬件连接

0.96inch OLED (A)ESP32-H2
VCC3V3
GNDGND
DINGPIO3
CLKGPIO4
CSGND
D/CGND
RESGPIO9

软件操作

  • 根据上方教程创建官方示例 i2c_oled

  • 修改程序使之兼容 0.96inch OLED (A)

    ESP32-H2_TO_Sample

  • 适配 0.96inch OLED (A),定义 RES 引脚为 GPIO9

    ESP32-H2_TO_Sample

  • 修改好 COM 口及驱动对象(建议优先使用 USB 对应的 COM 口,可通过设备管理器查看),点击编译并烧录即可运行程序

    ESP32-H2_TO_Sample

  • 效果如下

    ESP32-H2_TO_Sample

  • 可查看实际使用的 GPIO

    ESP32-H2_TO_Sample

SPI

  • 官方示例路径:peripherals -> spi_master-> lcd
  • 示例效果:在 2.4inch LCD Module 上动态显示图片

硬件连接

2.4inch LCD ModuleESP32-H2
VCC3V3
GNDGND
DINGPIO5
CLKGPIO4
CSGPIO1
D/CGPIO10
RESGPIO11
BLGPIO12

软件操作

  • 右键 VScode 图标,以管理员身份运行 VScode

    ESP32-H2_TO_Sample

  • 根据上方教程创建官方示例 lcd

  • 修改程序使之兼容 2.4inch LCD Module

    ESP32-H2_TO_Sample

  • 跳转到定义位置

    ESP32-H2_TO_Sample

  • 当前使用的为 ESP32-H2, 屏蔽其他芯片定义

    ESP32-H2_TO_Sample

  • 并宏定义 ESP32-H2 , CONFIG_IDF_TARGET_ESP32H2

    ESP32-H2_TO_Sample

  • 等待读取 ID

    ESP32-H2_TO_Sample

  • 添加读取延时,防止读取失败

    ESP32-H2_TO_Sample

  • 修改背光

    ESP32-H2_TO_Sample

  • 改为 gpio_set_level(PIN_NUM_BCKL, 1);

    ESP32-H2_TO_Sample

  • 修改好 COM 口及驱动对象(建议优先使用 USB 对应的 COM 口,可通过设备管理器查看),点击编译并烧录即可运行程序

    ESP32-H2_TO_Sample

  • 效果如下

    ESP32-H2_TO_Sample

Bluetooth

  • 官方示例路径:bluetooth -> bluedroid -> ble -> gatt_server
  • 示例效果:ESP32-H2 与手机端蓝牙调试助手进行数据传输

软件操作

  • 在手机端安装蓝牙调试助手

  • 根据上方教程创建官方示例 gatt_server

  • 程序兼容 ESP32-H2,无需修改程序内容即可使用

  • 蓝牙名称以及 UUID,蓝牙名称为 ESP_GATTS_DEMO

    ESP32-H2_TO_Sample

  • 修改好 COM 口及驱动对象(建议优先使用 USB 对应的 COM 口,可通过设备管理器查看),点击编译并烧录即可运行程序

    ESP32-H2_TO_Sample

  • 在手机端连接 ESP_GATTS_DEMO 蓝牙设备

    ESP32-H2_TO_Sample

  • 连接成功效果如下

    ESP32-H2_TO_Sample

  • 根据程序中 UUID 的值可知为下方两个服务器,选择其中一个进行上行发送

    ESP32-H2_TO_Sample

  • ESP32-H2 接收到数据

    ESP32-H2_TO_Sample

Zigbee

  • 官方示例 1 路径:Zigbee-> light_sample-> HA_on_off_switch
  • 官方示例 2 路径:Zigbee-> light_sample-> HA_on_off_light
  • 示例效果:两块 ESP32-H2,使用其中一块(烧录 HA_on_off_switch 程序)的 BOOT 按键控制另一块的 RGB 灯珠的亮灭
信息

注:请先往一块烧录 HA_on_off_switch 程序,再往另一块烧录 HA_on_off_light 程序

软件操作 1

  • 根据上方教程创建官方示例 HA_on_off_switch

  • 程序兼容 ESP32-H2,无需修改程序内容即可使用

  • 修改好 COM 口及驱动对象 (请使用 UART 对应的 COM 口,可通过设备管理器查看) ,点击编译并烧录即可运行程序

    ESP32-H2_TO_Sample

软件操作 2

  • 根据上方教程创建官方示例 HA_on_off_light

  • 程序兼容 ESP32-H2,无需修改程序内容即可使用

  • 修改好 COM 口及驱动对象 (请使用 UART 对应的 COM 口),点击编译并烧录即可运行程序 (需要等待片刻,让两块芯片建立连接)

    ESP32-H2_TO_Sample

  • 连接成功,对应的按键程序和 LED 程序会打印相关数据

    ESP32-H2_TO_Sample

  • 若出现初始化失败的情况,则可能是由于这个设备有残留的其他网络信息,可以擦除设备信息,再重新组网。

擦除设备 Flash

  • 解压软件资源包(Flash 调试软件

  • 打开 flash_download_tool_3.9.5.exe 软件,选择 ESP32-H2 及 UART

    ESP32-H2 TO Erase Flash 1.png

  • 选择 UART 的端口号,点击 START (不选择任何 bin 文件)

    ESP32-H2 TO Erase Flash 2.png

  • 等待烧录完成,点击擦除

    ESP32-H2 TO Erase Flash 3.png

  • 等待擦除完成

    ESP32-H2 TO Erase Flash 4.png