跳到主要内容

ESP-IDF

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

ESP-IDF 入门教程

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

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

配置 ESP-IDF 开发环境

信息

对于 ESP32-S3-LCD-1.85 开发板,需要使用 ESP-IDF V5.3.1 以上版本。

备注

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

版本选择

此部分图示以安装 ESP-IDF V5.5.2 为例示范,安装时请选用与您开发板示例匹配的 ESP-IDF 版本。

安装 ESP-IDF 开发环境

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

    在页面中点击 Offline Installer 标签,然后在筛选栏中选择 Windows 操作系统和你需要的 ESP-IDF 版本(图示仅为参考,请以实际为准)。

    下载 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 环境,无需手动配置。

示例程序

Demo-flow-01

ESP32-S3-LCD-1.85 示例程序

示例程序基础例程说明
ESP32-S3-LCD-1.85-Test测试板载设备功能

ESP32-S3-LCD-1.85-Test

【程序说明】

  • 本示例演示了板载各个设备的功能,页面一显示 SD Card,Flash Size,Battery Voltage 等参数,页面二为音乐播放界面;另外,此示例增加语音识别功能。

【硬件连接】

  • 将 SD 卡插入开发板中
  • 将喇叭与开发板连接
  • 将开发板接入电脑

ESP32-S3-LCD-1

【代码分析】

  • MIC_Speech_init()
    • 该函数主要用于初始化语音识别模块。首先设置初始状态,接着初始化 I2S 接口以接收麦克风音频数据。然后配置 AFE(音频前端处理)模块参数,并创建 AFE 数据实例。最后创建两个任务,一个负责音频数据读取和处理( feed_handler ),另一个负责语音命令检测和识别( detect_hander
  • detect_hander()
    • 此函数在独立任务中运行,处理 AFE 模块输出结果以检测语音命令。它根据配置确定多网络模型,打印活动语音命令。在循环中,不断从 AFE 模块获取结果,根据不同唤醒状态和多网络检测状态进行处理,如检测到唤醒词时进行相应操作,检测到语音命令时设置命令状态和调整 LCD 背光等。任务结束时销毁多网络模型实例释放资源

【运行效果】

  • LCD 屏幕显示参数说明
参数功能说明
SD Card显示 SD 卡的大小连接 SD 卡,若识别失败请将 SD 卡格式化为 FAT32 格式(首次识别失败请等待一会后复位下再查看)
Flash Size显示 Flash 大小当前板载 16MB Flash
Battery Voltage电池电压连接电池时可检测到电池电压
Angular deflection显示板子角度偏移显示三个方向的偏移
RTC Time显示 RTC 时间显示当前 RTC 时间 RTC 时间与当前时间不一致,是因为掉电状态下并不能留存数据,如需要保持 RTC 时间正常,则需连接 RTC 电池并更新 RTC 时间
Wireless scan显示扫描到的 WIFI 个数扫描结束会在末尾显示 Scan Finish
Backlight brightness亮度滑动条调节屏幕亮度
  • 页面 2 为播放 SD 卡根目录下的 mp3 音频的 UI 页面
  • 本示例可以通过 BOOT 按键与 PWR 按键进行部件选择,以模拟触摸功能,同时按下这两个按键则表示确定按下
  • 本程序默认启用语音识别,唤醒词为 “hi esp”,唤醒后,背光变暗后即可说出指令(背光未变暗则表示未被唤醒,识别要求较为严格,发音需要标准,语速放缓)
  • 以下提供几种格式的 MIC 测试音频(请注意,每次 hi esp 唤醒失败的话请重新将音频调至该次唤醒词播放处重新播放)
  • 请不要在使用喇叭播放音频时进行语音识别
  • 测试音频中之所以播放两次唤醒词,是由于当前固件版本首次唤醒需要聚焦设备(比喻),并且当前固件并不允许关闭该功能
// 指令
Turn on the backlight
Turn off the backlight
Backlight is brightest
Backlight is darkest

切换为中/英文识别模型

环境初始状态默认为英文识别环境,按照以下步骤可切换为中文识别模型或英文识别模型

【切换为中/英文识别模型】

  • 删除工程中的两个文件
ESP32-S3-Touch-LCD-1
  • 进入文件 sdkconfig.defaults,找到此处。
    • 使用 "#" 注释①处则切换为英文识别模型
    • 使用 "#" 注释②处则切换为中文识别模型
      ESP32-S3-Touch-LCD-1

生成语音控制指令

环境准备
  • 检查电脑是否有 Python 环境
  • 打开命令行:win+r ->输入 cmd
    Python-install-04
  • ①. 输入 python --version 出现 Python 版本号,则表示已安装
  • ②. 输入 where python 查看 Python 安装位置
    • C 盘下的 Python 环境为安装 VS Code 时自动安装的 Python 环境
    • E 盘下是以下步骤用到的 Python 环境
信息

若没有安装环境请查看 python 环境安装教程,已安装请继续

  • 命令行输入 pip install g2p_en 安装 g2p_en 包
  • 安装 资源包 放在对应用户的 C:\Users\用户名\AppData\Roaming 路径下,双击解压文件
  • 命令行输入 pip install pypinyin 安装 pypinyin 库
生成中文拼音
  • 下载 中文指令生成文件
  • 命令行切换路径至中文指令生成文件夹下(路径因人而异,以下仅参考)
cd /d E:\download\Generate_Chinese_command
  • 命令行执行 multinet_pinyin.py 生成中文拼音

    python multinet_pinyin.py "要转为拼音的中文"

    例:

    python multinet_pinyin.py "你好微雪电子"
    ESP32-S3-Touch-LCD-1
生成英文音素
  • 下载 英文指令生成文件

  • 命令行切换路径至英文指令生成文件夹下(路径因人而异,以下仅参考)

    cd /d E:\download\Generate_English_command
  • 命令行执行 gen_sr_commands.py 生成音素指令

    python gen_sr_commands.py "要转为音素的英文"

    例:

    python gen_sr_commands.py "hello waveshare"
    ESP32-S3-Touch-LCD-1
指令修改
  • Arduino 下

    ESP32-S3-Touch-LCD-1
  • ESP-IDF 下

    • 中文指令
    ESP32-S3-Touch-LCD-1
    • 英文指令
    ESP32-S3-Touch-LCD-1