跳到主要内容

Arduino 开发

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

Arduino 入门教程

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

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

配置开发环境

1. 安装和配置 Arduino IDE

请参考 安装和配置 Arduino IDE 教程 下载安装 Arduino IDE 并添加 ESP32 支持。

2. 安装库

要运行示例,需要安装对应的库。

可从 该处 下载 ESP32-S3-AUDIO-Board 开发板的示例程序包。包内的 arduino\libraries 目录已包含本教程所需的全部库文件。

库或文件名称说明版本安装方式
LVGLUI 图形库v8.3.10手动安装
ESP32-audioI2S-master音频解码库v2.0.0手动安装
es7210音频驱动库——手动安装
es8311音频驱动库——手动安装
esp_lcd_jd9853LCD 驱动库——手动安装
TCA9555扩展 IO 驱动库——手动安装
版本兼容性说明

LVGL 及其驱动库的版本之间存在较强的依赖关系。例如,为 LVGL v8 编写的驱动可能不兼容 LVGL v9。为确保示例能够稳定复现,推荐使用上表列出的特定版本。混合使用不同版本的库可能导致编译失败或运行时异常。

安装步骤:

  1. 进入已下载的示例程序包

  2. 将其 Arduino\libraries 目录下的所有文件夹(Arduino_DriveBus、GFX_Library_for_Arduino 等)复制到 Arduino 的库文件夹中。

    信息

    Arduino 库文件夹的路径通常是:c:\Users\<用户名>\Documents\Arduino\libraries

    也可以在 Arduino IDE 中通过 文件 > 首选项,查看“项目文件夹位置”来定位。库文件夹就是此路径下的 libraries 文件夹。

  3. 其他安装方式请参考:Arduino 库管理教程

示例程序

Arduino 示例程序位于 示例程序包Arduino/examples 目录中。

示例程序基础例程说明依赖库
01_LVGL_Arduino测试板载设备功能LVGL,ESP32-audioI2S-master

Arduino 工程参数设置

  • 若烧录的示例存在语音识别模型,则 Partition Scheme 选择 "ESP SR 16M (3MB APP/7MB SPIFFS/2.9MB MODEL)"
  • 若烧录的示例不存在语音识别模型,则 Partition Scheme 选择 "16M Flash (3MB APP/9.9MB FATFS)" 或其他

01_LVGL_Arduino

程序说明

  • 本示例演示了板载各个设备的功能,屏幕 2 显示 SD Card,Flash Size,背光调节滑动条等参数,屏幕 1 为音乐播放界面;另外,此示例增加语音识别功能,仅在播放音频前可使

硬件连接

  • 程序仅在连接带 MP3 文件的 SD 卡、屏幕和摄像头时才可完整运行。
  • 将开发板接入电脑

代码分析

  • setup:硬件初始化,配置外设等

    • 硬件初始化:setup() 内部主要执行多个初始化函数,用来配置和初始化与 Arduino 连接的硬件组件,如 RTC、陀螺仪、LCD 显示、SD 卡、音频模块、麦克风等。通过这些初始化,确保硬件能够正常工作
    • 图形界面初始化:调用 Lvgl_Init() 来初始化 LVGL(Light and Versatile Graphics Library),一个广泛用于嵌入式系统的图形库。Lvgl_Example1() 则是一个示例程序,用来展示如何在显示屏上渲染图形界面
    • 任务调度:Driver_Loop() 函数创建了一个任务(DriverTask),用于管理和循环执行一些外设的操作
  • loop:主要用于图形界面的更新和任务调度

    • LVGL 任务循环:Lvgl_Loop() 是一个 LVGL 库的循环函数,用于处理图形界面的更新、事件响应和其他与 UI 相关的操作。在嵌入式系统中,图形库通常需要在主循环中频繁调用,以保持界面的刷新和交互的实时性
    • 任务调度控制:vTaskDelay(pdMS_TO_TICKS(5)) 用于让任务暂停 5 毫秒。vTaskDelay 是 FreeRTOS 中的延时函数,目的是降低 CPU 的使用率,避免占用过多的时间片,确保系统的其他任务(如外设处理)也能够按时执行

运行效果

  • LCD 屏幕显示参数说明
参数功能说明
SD Card显示 SD 卡的大小连接 SD 卡,若识别失败请将 SD 卡格式化为 FAT32 格式(首次识别失败请等待一会后复位下再查看)
Flash Size显示 Flash 大小当前板载 16MB Flash
RTC Time显示 RTC 时间显示当前 RTC 时间,RTC 时间与当前时间不一致,是因为掉电状态下并不能留存数据,如需要保持 RTC 时间正常,则需连接 RTC 电池并更新 RTC 时间
Backlight brightness亮度滑动条调节屏幕亮度
  • 页面 2 为播放 SD 卡根目录下的 mp3 音频的 UI 页面
  • 本程序默认启用语音识别,唤醒词为 “hi esp”,唤醒后,背光变暗后即可说出指令(背光未变暗则表示未被唤醒,识别要求较为严格,发音需要标准,语速放缓)
  • 以下提供几种格式的 MIC 测试音频(请注意,每次 hi esp 唤醒失败的话请重新将音频调至该次唤醒词播放处重新播放)
  • 请不要在使用喇叭播放音频时进行语音识别
  • 测试音频中之所以播放两次唤醒词,是由于当前固件版本首次唤醒需要聚焦设备(比喻),并且当前固件并不允许关闭该功能

切换为中/英文识别模型

  • 环境初始状态默认为英文识别环境,按照以下步骤可切换为中文识别模型或还原为英文识别模型
  • 【切换为中文识别模型】
中文识别环境搭建
  • 下载提供的程序文件 使用中文模型的程序纸
  • 进入路径 C:\Users\Waveshare\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.2\libraries\ESP_SR\src (其中 Waveshare 为电脑用户名)
  • 使用下载的文件替换该路径下的 esp32-hal-sr.c
  • 下载中文模型 中文模型-唤醒词 hi 乐鑫
  • 进入路径 C:\Users\Waveshare\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-bd2b9390ef\esp32s3\esp_sr (其中 Waveshare 为电脑用户名)
  • 使用下载的文件替换该路径下的 srmodels.bin
  • 将程序中的识别指令修改为中文指令(拼音)
  • 【切换为英文识别模型】
英文识别环境搭建
  • 环境初始状态默认为英文识别环境,若未转为中文,则不进行以下修改
  • 若此前有将其修改为中文识别则,下载提供的程序文件 使用英文模型的程序
  • 进入路径 C:\Users\Waveshare\AppData\Local\Arduino15\packages\esp32\hardware\esp32\3.0.2\libraries\ESP_SR\src (其中 Waveshare 为电脑用户名)
  • 使用下载的文件替换该路径下的 esp32-hal-sr.c
  • 下载英文模型 英文模型-唤醒词 hi 乐鑫
  • 进入路径 C:\Users\Waveshare\AppData\Local\Arduino15\packages\esp32\tools\esp32-arduino-libs\idf-release_v5.1-bd2b9390ef\esp32s3\esp_sr (其中 Waveshare 为电脑用户名)
  • 使用下载的文件替换该路径下的 srmodels.bin
  • 将程序中的识别指令修改为英文指令