ESP32-S3-Touch-LCD-1.85B 使用教程

板载资源


  1. ESP32-S3R8 Wi-Fi 和蓝牙 SoC,240MHz 运行频率,叠封 8MB PSRAM
  2. 16MB NOR Flash
  3. QMI8658 六轴惯性测量单元 (IMU),包含一个 3 轴陀螺仪和一个 3 轴加速度计
  4. 双麦克风设计 配合回声消除电路,能够更高质量地采集音频
  5. 板载贴片天线 支持 2.4GHz Wi-Fi (802.11 b/g/n) 和蓝牙 5 (LE)
  6. 屏幕接口
  7. ES7210 回声消除算法芯片 可用于消除回声,提高音频采集准度
  8. ES8311 音频编解码芯片
  9. BQ27220 电量检测芯片
  10. BOOT 按键 用于设备启动和功能调试
  11. PWR 电源按键 可控制电源通断,支持自定义功能
  12. Type-C 接口 ESP32-S3 USB 接口,可烧录程序及打印日志
  13. MX1.25 锂电池接口 MX1.25 2PIN 连接器,可用于接入 3.7V 锂电池,支持充放电
  14. 板载扬声器焊盘
  15. 串口通信接口 SH1.0 4PIN 连接器
  16. I2C 接口 SH1.0 4PIN 连接器

外设速查

模块器件 / 功能接口地址 / 参数GPIO / 信号
LCDST77916QSPI360×360,常用 RGB565,16-bit 色深CS=GPIO21,PCLK=GPIO40,DATA0=GPIO46,DATA1=GPIO45,DATA2=GPIO42,DATA3=GPIO41,RST=GPIO3,BL=GPIO5
触摸CST816S 电容触摸I2C7-bit 地址 0x15SCL=GPIO10,SDA=GPIO11,RST=GPIO1,INT=GPIO4
IMUQMI8658 6 轴传感器I2C7-bit 地址 0x6BSCL=GPIO10,SDA=GPIO11
音频输出ES8311 音频编解码I2C + I2S7-bit 地址 0x30I2C SCL=GPIO10,SDA=GPIO11;MCLK=GPIO2,BCLK=GPIO48,LRCK=GPIO38,DOUT=GPIO47,DIN=GPIO39,PA=GPIO9
音频输入ES7210 回声消除算法芯片 / 双麦克风I2C + I2S7-bit 地址 0x80I2C SCL=GPIO10,SDA=GPIO11;MCLK=GPIO2,BCLK=GPIO48,LRCK=GPIO38,DIN=GPIO39
电量检测BQ27220I2C7-bit 地址 0x55SCL=GPIO10,SDA=GPIO11
RTCPCF85063 实时时钟I2C7-bit 地址 0x51SCL=GPIO10,SDA=GPIO11,INT=GPIO6
Micro SDSDMMCSDMMC 4-bit支持 SD_MMCCLK=GPIO15,CMD=GPIO14,D0=GPIO16,D1=GPIO17,D2=GPIO12,D3=GPIO13
USB Type-CESP32-S3 原生 USBUSB下载、日志USB_N=GPIO19,USB_P=GPIO20
UART0串口通信接口UARTSH1.0 4PIN 连接器U0TXD=GPIO43,U0RXD=GPIO44
BOOT 按键BOOT / 下载模式GPIO上拉,按下拉低GPIO0

引脚定义

在使用 ESP32-S3-Touch-LCD-1.85B 板上预留的接口时需注意接线颜色和对应功能,避免接线惯性导致烧坏开发板。

扩展接口

类型信号
电源5V / 3V3 / GND
I2CSCL(GPIO10) / SDA(GPIO11)
UARTTXD(GPIO43) / RXD(GPIO44)
USB 焊盘DN(GPIO19) / DP(GPIO20)

GPIO 完整分配

下表列出板上电路已占用的 GPIO 及已引出到扩展口的引脚。

GPIO信号名连接到备注
GPIO0BOOTBOOT 按键Strapping pin;长按上电再松开,进入下载模式
GPIO1TP_RSTCST816S 触摸复位-
GPIO2I2S_MCLKES8311 / ES7210 音频时钟-
GPIO3LCD_RSTST77916 LCD 复位-
GPIO4TP_INTCST816S 触摸中断-
GPIO5LCD_BLLCD 背光控制PWM 调光
GPIO6RTC_INTPCF85063 实时时钟中断-
GPIO9PA_CTRL功放控制音频输出功放使能
GPIO10I2C_SCL触摸、IMU、音频芯片、电量检测共享 I2C SCL;也接出到 I2C 接口I2C 设备见外设速查表
GPIO11I2C_SDA触摸、IMU、音频芯片、电量检测共享 I2C SDA;也接出到 I2C 接口I2C 设备见外设速查表
GPIO12SD_D2Micro SD D2SDMMC 4-bit
GPIO13SD_D3Micro SD D3SDMMC 4-bit
GPIO14SD_CMDMicro SD CMDSDMMC
GPIO15SD_CLKMicro SD CLKSDMMC
GPIO16SD_D0Micro SD D0SDMMC
GPIO17SD_D1Micro SD D1SDMMC
GPIO19USB_NUSB Type-C D-ESP32-S3 原生 USB
GPIO20USB_PUSB Type-C D+ESP32-S3 原生 USB
GPIO21LCD_CSST77916 QSPI 片选-
GPIO38I2S_LRCKES8311 / ES7210 左右声道时钟-
GPIO39I2S_DINES8311 / ES7210 I2S 输入数据录音数据输入
GPIO40LCD_PCLKST77916 QSPI 时钟-
GPIO41LCD_DATA3ST77916 QSPI 数据线 3-
GPIO42LCD_DATA2ST77916 QSPI 数据线 2-
GPIO43U0TXD串口通信接口 TXD调试 / 扩展
GPIO44U0RXD串口通信接口 RXD调试 / 扩展
GPIO45LCD_DATA1ST77916 QSPI 数据线 1-
GPIO46LCD_DATA0ST77916 QSPI 数据线 0-
GPIO47I2S_DOUTES8311 I2S 输出数据播放数据输出
GPIO48I2S_BCLKES8311 / ES7210 I2S 位时钟-

使用注意

  • 外接 I2C 设备时,需要避开 0x150x6B0x300x800x510x55 等板载 I2C 地址冲突。
  • GPIO19/GPIO20 已连接 USB Type-C,不建议当普通 GPIO 使用。
  • GPIO0 是 BOOT 引脚,不建议作为普通用户输入。
  • LCD、触摸、音频、SDMMC 等板载外设已占用的 GPIO 不建议复用,否则可能导致对应功能异常。

LCD 屏幕参数

参数名称参数
显示面板LCD
显示尺寸1.85 英寸
分辨率360 × 360
显示色彩262K 彩色
显示接口QSPI
显示驱动ST77916
触控芯片CST816S
触控接口I2C

产品参数

参数名称参数
接口USB Type-C
主控芯片ESP32-S3R8
SRAM / ROM512KB SRAM / 384KB ROM
PSRAM / Flash8MB PSRAM / 16MB Flash
屏幕类型TFT LCD
屏幕控制芯片Display: ST77916
Touch: CST816S
板载设备QMI8658 六轴传感器
ES8311 音频编解码芯片
ES7210 回声消除算法芯片
BQ27220 电量检测芯片
PCF85063 实时时钟
双麦克风阵列
板载扬声器焊盘
Micro SD
锂电池充放电接口
引出接口I2C、UART、USB 焊盘
供电接口USB Type-C / 3.7V 锂电池接口

产品尺寸


出厂固件使用说明

为了让用户能够快速了解产品的各个功能,我们提供了出厂测试程序,方便客户了解板载屏幕、触摸、音频、IMU、RTC、电量检测、SD 卡等功能的使用。除了 ESP32-S3-Touch-LCD-1.85B 主机和配套线材之外,为了能够运行全部例程,需要准备的器件如下:

器件准备

  • ESP32-S3-Touch-LCD-1.85B ×1
  • USB Type-C 数据线 ×1
  • 3.7V 锂电池 ×1(非必需,电池供电和电量检测示例需要)
  • Micro SD 卡 ×1(非必需,SD 卡和音频文件播放示例需要)
    • MP3 音频文件请放入 music 目录
    • AVI 视频文件请放入 video 目录
    • JPG 图片文件请放入 photo 目录

固件下载

  • 出厂固件位于示例仓库的 Firmware 目录中。
  • 固件文件名为 ESP32-S3-Touch-LCD-1.85B-Factory.bin,可用于恢复出厂演示程序。
  • 烧录固件可使用 Espressif Flash Download Tool,工具下载链接见 相关资料

USB 烧录固件注意事项

开发板使用 USB 下载程序

若出现 无法识别端口 或 无法自动进入下载模式 的情况,请手动进入 Boot 模式:

  1. 按住 BOOT 按键
  2. 连接 USB 至电脑,或在已连接 USB 的情况下点击下载
  3. 松开 BOOT 按键

下载完成后,重新上电或复位运行程序。

APP 示例介绍

使用 Brookesia 组件,展示 APP 风格的综合应用界面,可用于快速验证板载 LCD、触摸、音频、语音和外设功能。

提示
  • 退出 APP 的方式为从屏幕底部向上滑动。
  • 从底部向上滑动并停留在屏幕中间,可以查看最近运行的 APP 程序,上滑即可销毁并关闭 APP 进程。
  • 在小智 AI 应用中,需要长按 BOOT 按键返回 Brookesia 界面。

设置 APP

  • 支持 Wi-Fi 扫描和配网。
  • 可调节屏幕亮度以及音量大小。
  • 可以查看电池状态
  • 查看 RTC 时间
  • 可查看设备信息和 MAC 地址等内容。

小智 APP

  • 跳转至原生小智运行
  • 长按 BOOT 按键退出小智 APP


天气 APP

  • 需要联网定位。
  • 显示当地天气界面。

音乐播放器 APP

  • 模拟音乐播放器界面。
  • 需要插入 Micro SD 卡,并按示例要求放入音频文件后才能正常播放
  • 集成 FFT 频谱分析显示

squareline APP

  • 播放 LVGL squareline 编辑器界面。

相册 APP

  • 显示 TF 卡中的图片。
  • 当前仅支持 JPG 格式,后续会持续开放更多格式。
  • 需要手动缩放图片,当前仅支持 360*360 以下的分辨率大小。

视频播放 APP

  • 播放 TF 卡中的 AVI 视频。
  • 当前仅支持 JPG 编码格式的 AVI 视频。
  • 当前仅支持 360*360 以下的分辨率大小,超出无法播放。

录音 APP

  • 可用于测试双麦克风收音功能。
  • 录制的音频保存到 TF 卡中。

Chipmunk2d APP

  • 融合 Chipmunk2d 物理引擎和陀螺仪数据制作的小游戏。
  • 使用前需要将设备平放进行陀螺仪校准才能使用。


Arduino 开发

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

Arduino 入门教程

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

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

配置开发环境

1. 安装和配置 Arduino IDE

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

2. 安装库

  • 在安装 Arduino 库时,通常有两种方式可供选择:在线安装 和 离线安装。若库安装要求离线安装,则必须使用提供的库文件。
  • 对于大多数库,用户可以通过 Arduino 软件的在线库管理器轻松搜索并安装。然而,一些开源库或自定义库未被同步到 Arduino 库管理器中,因此无法通过在线搜索获取。在这种情况下,用户只能通过离线方式手动安装这些库。
  • 可从 此链接 的 Arduino 目录中,下载 ESP32-S3-Touch-AMOLED-1.75C 开发板的示例程序包。包内的 Arduino\libraries 目录已包含本教程所需的全部库文件。
库或文件名称说明版本安装方式
ESP32-audioI2S-master音频播放库v3.4.5通过库管理器或手动安装
SensorLibPCF85063、QMI8658 传感器驱动库v0.3.1通过库管理器或手动安装
es7210ES7210 驱动-手动安装
es8311ES8311 驱动-手动安装
kode_bq27220bq27220 电池检测驱动——手动安装
lvglLVGL UIv8.4.0手动安装
版本兼容性说明

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 库管理教程

ESP32-S3-Touch-LCD-1.85B 所需开发板安装说明

板名称板安装要求版本号要求
ESP32 by Espressif Systems“离线”安装/“在线”安装≥3.2.0

示例程序

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

示例程序基础例程说明依赖库
01_lvgl_demo展示了基本的 LVGL 图形库功能,测试显示屏的基础性能lvgl
02_lvgl_BQ27220测试 BQ27220 电量监测传感器kode_bq27220
03_audio_out_no_tf音频播放测试es8311
04_SDMMC_TestTF 卡挂载以及读写文件测试——
05_audio_out_tfLVGL 演示LVGL,Arduino_DriveBus
06_esp_srES7210 驱动示例,拾取人声检测——
07_I2C_qmi8658陀螺仪驱动测试SensorLib
08_I2C_pcf85063RTC 实时时钟驱动测试SensorLib

01_lvgl_demo

程序说明

  • 本示例演示了如何使用 Arduino 驱动显示屏,并播放多个 LVGL 示例程序。

硬件连接

  • 将开发板接入电脑

代码分析

  • 初始化屏幕、触摸以及 LVGL:

    I2C_Init();
    Backlight_Init();
    LCD_Init();
    Lvgl_Init();
  • 选择对应的 LVGL DEMO 运行:

    lv_demo_widgets();
    // lv_demo_benchmark();
    // lv_demo_keypad_encoder();
    // lv_demo_music();
    // lv_demo_stress();

运行效果






02_lvgl_BQ27220

程序说明

  • 本示例演示使用 BQ27220 电量监测传感器读取电池信息,并在 LVGL 中显示出来

硬件连接

  • 接入 3.7V 锂电池

代码分析

  • 创建 I2C 互斥锁,避免触摸和 BQ27220 在不同任务读取时发生冲突

    wire_mutex = xSemaphoreCreateMutex();
  • 初始化 BQ27220

    if (!gauge.begin(Wire, 0x55, I2C_SDA_PIN, I2C_SCL_PIN, 400000)) {
    Serial.println("BQ27220 not found");
    while (1) delay(1000);
    }

运行效果


03_audio_out_no_tf

程序说明

  • 本示例演示使用 ES8311 音频解码器播放音乐

硬件连接

  • 接入喇叭
  • 将开发板接入电脑

代码分析

  • 初始化 I2C 控制器和外部拓展 IO

    DEV_I2C_Init();
    IO_EXTENSION_Init();
    IO_EXTENSION_Output(IO_EXTENSION_IO_6, 1);
  • 初始化 ES8311

    es8311_codec_init();
  • 初始化 I2S 并使能功放 PA 引脚

    setupI2S();
    IO_EXTENSION_Output(IO_EXTENSION_IO_4, 1);
  • 在 loop 循环中不断写通过 I2S 向 ES8311 写数据

    void loop() {
    i2s.write((uint8_t *)audio_data, AUDIO_SAMPLES * 2);
    }

运行效果

  • 屏幕无显示
  • 烧录程序后会自动开始播放音乐

04_SDMMC_Test

程序说明

  • 本示例演示了如何挂载 TF 卡,并测试读写文件

硬件连接

  • 插入 TF 卡
  • 将开发板接入电脑

代码分析

  • 设置 SDIO 接口引脚,并挂载文件系统

    if(! SD_MMC.setPins(clk, cmd, d0)){
    Serial.println("Pin change failed!");
    return;
    }

    if (!SD_MMC.begin("/sdcard", true)) {
    Serial.println("Card Mount Failed");
    return;
    }
  • 读写文件测试

    listDir(SD_MMC, "/", 0);
    createDir(SD_MMC, "/mydir");
    listDir(SD_MMC, "/", 0);
    removeDir(SD_MMC, "/mydir");
    listDir(SD_MMC, "/", 2);
    writeFile(SD_MMC, "/hello.txt", "Hello ");
    appendFile(SD_MMC, "/hello.txt", "World!\n");
    readFile(SD_MMC, "/hello.txt");
    deleteFile(SD_MMC, "/foo.txt");
    renameFile(SD_MMC, "/hello.txt", "/foo.txt");
    readFile(SD_MMC, "/foo.txt");
    testFileIO(SD_MMC, "/test.txt");
    Serial.printf("Total space: %lluMB\n", SD_MMC.totalBytes() / (1024 * 1024));
    Serial.printf("Used space: %lluMB\n", SD_MMC.usedBytes() / (1024 * 1024));

运行效果


05_audio_out_tf

程序说明

  • 本示例演示从 TF 卡中播放 MP3 音频

硬件连接

  • 插入 TF 卡,并在根目录放置文件名为 ff-16b-1c-44100hz.mp3 的音频文件
  • 接入喇叭
  • 将开发板接入电脑

代码分析

  • 初始化 I2S 以及音频解码库,并设置播放路径

    audio.setPinout(I2S_BCK_PIN, I2S_LRCK_PIN, I2S_DOUT_PIN,I2S_MCLK_PIN);
    audio.connecttoFS(SD_MMC, "ff-16b-1c-44100hz.mp3");

运行效果

  • 屏幕无显示 -烧录程序自动播放 MP3 音乐

06_esp_sr

程序说明

  • 本示例演示了使用 ES7210 音频编码芯片进行语音唤醒和语音识别

硬件连接

  • 将开发板接入电脑

代码分析

  • 初始化 I2S 以及 ES7210 音频编码器

    Wire.begin(I2C_PIN_SDA, I2C_PIN_SCL);
    es7210_init();
    i2s.setPins(I2S_PIN_BCK, I2S_PIN_WS, I2S_PIN_DOUT, I2S_PIN_DIN, I2S_PIN_MCK);
    i2s.setTimeout(1000);
    i2s.begin(I2S_MODE_STD, 16000, I2S_DATA_BIT_WIDTH_16BIT, I2S_SLOT_MODE_STEREO);
  • 注册语音唤醒以及语音识别回调事件,并开启 ESP-SR

    ESP_SR.onEvent(onSrEvent);
    ESP_SR.begin(i2s, sr_commands, sizeof(sr_commands) / sizeof(sr_cmd_t), SR_CHANNELS_STEREO, SR_MODE_WAKEWORD);

运行效果


07_I2C_qmi8658

【程序说明】

  • 通过 I2C 协议,对 QMI8658 芯片进行初始化设置,然后每隔 200ms 读取对应的姿态信息打印到终端。

【硬件连接】

  • 使用 USB 线把板子接入电脑

【代码分析】

  • void i2c_qmi_loop_task(void *arg):创建一个 QMI 任务来实现获取姿态信息,在任务中读取并打印加速度计、陀螺仪数据,并将获取的结果输出到串口控制台,间隔 200ms 。

【运行效果】

  • 打开串口监控,可以看到打印输出的 IMU 发出来的原始数据(欧拉角需要自己转换),如下图所示:

08_I2C_pcf85063

【程序说明】

  • 通过 I2C 协议,分别对 PCF85063 芯片进行初始化、设置时间、间隔读取时间,然后打印到终端。

【硬件连接】

  • 使用 USB 线把板子接入电脑

【代码分析】

  • void i2c_rtc_loop_task(void *arg):创建一个 RTC 任务来实现 RTC 功能,每隔 1 秒读取一次 RTC 芯片的时钟,然后输出到终端。

【运行效果】

  • 程序编译下载完成,打开串口监控可以看到打印输出的 RTC 时间,如下图所示:


ESP-IDF

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

ESP-IDF 入门教程

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

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

配置 ESP-IDF 开发环境

信息

对于 EESP32-S3-Touch-LCD-1.85B 开发板,需要使用 ESP-IDF V5.5.3 以上版本。

备注

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

版本选择

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

安装 ESP-IDF 开发环境

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

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


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


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

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

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


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


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


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


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


安装 Visual Studio Code 与 ESP-IDF 扩展

  1. 下载并安装 Visual Studio Code

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

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

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


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

示例程序

ESP-IDF 示例程序位于 示例程序包 的 ESP-IDF 目录中。

示例程序基础例程说明
01_comprehensive_example综合示例程序,驱动 lcd, 音频以及板载传感器
02_lvgl_demo展示 LVGL demo
03_mp3_player此示例扫描 TF 卡,并播放 MP3
04_esp_wakeword_det使用 esp-sr 组件实现语音唤醒以及命令词识别功能
05_esp-brookesia通过 brookesia 组件展示 LVGL APP 风格 UI
06_qmi8658_test测试陀螺仪
07_pcf85063_test测试 RTC 实时时钟
08_bq27220_test测试板载电池监测 IC

01_comprehensive_example

程序说明

  • 本示例为综合示例程序,演示 LCD 触摸屏驱动,LVGL 初始化,音频驱动以及各种板载外设等

硬件连接

  • 插入 3.7V 锂电池或将开发板接入电脑
  • 需要插入 TF 卡(根目录中创建 music 文件夹用来存放 MP3 文件)

代码分析

  • 初始化屏幕、触摸、背光、 LVGL 以及 TF 卡:

    lv_display_t *disp = bsp_display_start();
    lv_indev_t *tp = bsp_display_get_input_dev();
    bsp_display_backlight_on();
    bsp_sdcard_mount();
  • 初始化音频播放器、板载传感器以及唤醒词监测任务:

    Audio_Play_Init();
    msg_driver_init();
    wake_word_drv_init();
  • 扫描 music 文件夹下的 MP3 文件:

    esp_err_t err = get_file_list_by_ext("/sdcard/music",".mp3",&mp3_files);
    if (err == ESP_OK) {
    for (int i = 0; i < mp3_files.count; i++) {
    printf("MP3[%d]: %s\n", i, mp3_files.list[i]);
    }
    }
  • 创建 UI:

    bsp_display_lock(-1);

    main_screen = lv_obj_create(NULL);
    lv_obj_t * tv = lv_tileview_create(main_screen);

    lv_obj_t * tile1 = lv_tileview_add_tile(tv, 0, 0, LV_DIR_RIGHT);
    msg_ui_screen_init(main_screen,tile1);


    lv_obj_t * tile2 = lv_tileview_add_tile(tv, 1, 0, LV_DIR_LEFT | LV_DIR_RIGHT);
    init_music_ui_screen(tile2,&mp3_files);

    lv_obj_t * tile3 = lv_tileview_add_tile(tv, 2, 0, LV_DIR_LEFT);
    eaf_ui_screen_init(tile3);

    lv_screen_load(main_screen);

    bsp_display_unlock();
  • 测试语音唤醒及命令词指令

    //唤醒词
    Hi,ESP

    // 指令
    Turn on the backlight
    Turn off the backlight
    Backlight is brightest
    Backlight is darkest

运行效果

  • 采用 LVGL 平铺视图 (Tileview) 展示三个界面,左右滑动可以切换







02_lvgl_demo

程序说明

  • 本示例为展示 LVGL 官方示例

硬件连接

  • 将开发板接入电脑

代码分析

  • 加载 LVGL demo 示例:

    bsp_display_lock(-1);
    lv_demo_widgets();
    bsp_display_unlock();

运行效果


03_mp3_player

程序说明

  • 本示例为测试 TF 卡初始化以及扫描 MP3 文件并播放

硬件连接

  • 将开发板接入电脑
  • 需要插入 TF 卡(根目录中创建 music 文件夹用来存放 MP3 文件)

代码分析

  • 扫描 MP3 文件并保存文件名:

    void Search_Music(void)
    {
    esp_err_t err = get_file_list_by_ext("/sdcard/music",".mp3",&MP3_files);
    if (err == ESP_OK) {
    for (int i = 0; i < MP3_files.count; i++) {
    printf("MP3:[%d]: %s\n", i, MP3_files.list[i]);
    }
    }
    file_count = MP3_files.count;
    }

运行效果


04_esp_wakeword_det

程序说明

  • 本示例使用 ESP-SR 组件演示离线语音唤醒和语音识别效果

硬件连接

  • 将开发板接入电脑
  • 请勿遮挡麦克风

代码分析

  • 初始化麦克风并获取句柄:

    record_dev = bsp_audio_codec_microphone_init();

    esp_codec_dev_sample_info_t fs = {
    .bits_per_sample = 32,
    .channel = 2,
    .sample_rate = 16000,
    };
    esp_codec_dev_set_in_gain(record_dev, 30.0);
    esp_codec_dev_open(record_dev, &fs);
  • 初始化语音模型:

    models = esp_srmodel_init("model"); // partition label defined in partitions.csv
    afe_config_t *afe_config = afe_config_init(bsp_get_input_format(), models, AFE_TYPE_SR, AFE_MODE_LOW_COST);
    afe_handle = esp_afe_handle_from_config(afe_config);
    esp_afe_sr_data_t *afe_data = afe_handle->create_from_config(afe_config);
    afe_config_free(afe_config);
    xTaskCreatePinnedToCore(&detect_Task, "detect", 8 * 1024, (void*)afe_data, 5, NULL, 0);
    xTaskCreatePinnedToCore(&feed_Task, "feed", 8 * 1024, (void*)afe_data, 5, NULL, 1);

运行效果


05_esp-brookesia

程序说明

  • 本示例展示完整手机风格 UI 系统,包含状态栏、导航栏、应用启动器和手势交互等组件

硬件连接

  • 将开发板接入电脑

代码分析

  • 初始化 phone UI:

    ESP_LOGI(TAG, "Create phone object");
    systems::phone::Phone *phone = new systems::phone::Phone(disp);
    phone->setTouchDevice(tp);

    Stylesheet *stylesheet = new systems::phone::Stylesheet(STYLESHEET_360_360_DARK);
    ESP_UTILS_CHECK_NULL_EXIT(stylesheet, "Create stylesheet failed");

    ESP_UTILS_LOGI("Using stylesheet (%s)", stylesheet->core.name);
    ESP_UTILS_CHECK_FALSE_EXIT(phone->addStylesheet(stylesheet), "Add stylesheet failed");
    ESP_UTILS_CHECK_FALSE_EXIT(phone->activateStylesheet(stylesheet), "Activate stylesheet failed");
    delete stylesheet;
  • 安装 SquarelineDemo APP:

    auto app3 = esp_brookesia::apps::SquarelineDemo::requestInstance();
    ESP_UTILS_CHECK_FALSE_EXIT(phone->installApp(app3),"start Drawpanel failed");

运行效果






06_qmi8658_test

程序说明

  • 本示例为测试陀螺仪 QMI8658 驱动程序

硬件连接

  • 将开发板接入电脑

代码分析

  • 初始化 QMI8658, 并循环读取数据:

    void app_main(void)
    {

    qmi8658_dev = bsp_qmi8658_drv_init();

    while (1)
    {
    qmi8658_data_t data;
    bool ready;
    esp_err_t ret = qmi8658_is_data_ready(qmi8658_dev, &ready);
    if (ret == ESP_OK && ready)
    {
    ret = qmi8658_read_sensor_data(qmi8658_dev, &data);
    if (ret == ESP_OK)
    {
    ESP_LOGI("TAG", "Accel: X=%.4f m/s², Y=%.4f m/s², Z=%.4f m/s²",data.accelX, data.accelY, data.accelZ);
    ESP_LOGI("TAG", "Gyro: X=%.4f rad/s, Y=%.4f rad/s, Z=%.4f rad/s",data.gyroX, data.gyroY, data.gyroZ);
    ESP_LOGI("TAG", "Temp: %.2f °C, Timestamp: %lu",data.temperature, data.timestamp);

    }
    }
    vTaskDelay(pdMS_TO_TICKS(1000));
    }

    }

运行效果

  • 打开串口监视器

07_pcf85063_test

程序说明

  • 本示例为测试 RTC 实时时钟示例程序

硬件连接

  • 将开发板接入电脑
  • 插入 3.7V 锂电池(没有电池无法读取 RTC 数据)

代码分析

  • 初始化 pcf85063a, 并设置时间:

    esp_err_t ret = pcf85063a_init(&dev, bus_handle, PCF85063A_ADDRESS);
    if (ret != ESP_OK) {
    ESP_LOGE(TAG, "Failed to initialize PCF85063A (error: %d)", ret);
    vTaskDelete(NULL);
    }

    ESP_LOGI(TAG, "Set current time.");
    pcf85063a_set_time_date(&dev, Set_Time);

运行效果

  • 打开串口监视器

08_bq27220_test

程序说明

  • 本示例为测试电池电量监测芯片示例程序

硬件连接

  • 插入 3.7V 锂电池(没有电池无法读取电池数据)

代码分析

  • 初始化 bq27220

    bq27220_handle_t bq27220_drv_init(void)
    {

    i2c_bus = bsp_i2c_bus_get_handle();

    bq27220_config_t bq27220_cfg = {
    .i2c_bus = i2c_bus,
    .cfg = &default_config,
    .cedv = &default_cedv,
    };
    bq27220 = bq27220_create(&bq27220_cfg);

    if (!bq27220) {
    ESP_LOGE(TAG, "bq27220 create failed");
    }
    return bq27220;
    }
  • 打印电池相关信息

    static void test_bq27220_print_info(bq27220_handle_t bq27220Handle)
    {
    battery_status_t status = {};
    bq27220_get_battery_status(bq27220Handle, &status);

    ESP_LOGI(TAG, "Battery Status1 - DSG:%d SYSDWN:%d TDA:%d BATTPRES:%d AUTH_GD:%d OCVGD:%d TCA:%d RSVD:%d",
    status.DSG, status.SYSDWN, status.TDA, status.BATTPRES,
    status.AUTH_GD, status.OCVGD, status.TCA, status.RSVD);

    ESP_LOGI(TAG, "Battery Status2 - CHGINH:%d FC:%d OTD:%d OTC:%d SLEEP:%d OCVFAIL:%d OCVCOMP:%d FD:%d",
    status.CHGINH, status.FC, status.OTD, status.OTC,
    status.SLEEP, status.OCVFAIL, status.OCVCOMP, status.FD);

    uint16_t vol = bq27220_get_voltage(bq27220Handle);
    int16_t current = bq27220_get_current(bq27220Handle);
    uint16_t rc = bq27220_get_remaining_capacity(bq27220Handle);
    uint16_t full_cap = bq27220_get_full_charge_capacity(bq27220Handle);
    uint16_t temp = bq27220_get_temperature(bq27220Handle) / 10 - 273;
    uint16_t cycle_cnt = bq27220_get_cycle_count(bq27220Handle);
    uint16_t soc = bq27220_get_state_of_charge(bq27220Handle);
    int16_t avg_power = bq27220_get_average_power(bq27220Handle);
    int16_t max_load = bq27220_get_maxload_current(bq27220Handle);
    uint16_t time_to_empty = bq27220_get_time_to_empty(bq27220Handle);
    uint16_t time_to_full = bq27220_get_time_to_full(bq27220Handle);

    ESP_LOGI(TAG,
    "Battery Info - Vol:%dmV Cur:%dmA Pwr:%dmW RC:%dmAh FCC:%dmAh "
    "Temp:%dC Cycle:%d SOC:%d%% MaxLoad:%dmA TTE:%dmin TTF:%dmin",
    vol, current, avg_power, rc, full_cap, temp,
    cycle_cnt, soc, max_load, time_to_empty, time_to_full);
    }

运行效果

  • 打开串口监视器


小智 AI 应用教程

XiaozhiAI(小智 AI)是一个基于 ESP32 开发板的开源 AI 语音聊天机器人项目,旨在将大语言模型(LLM)的通用智能赋予边缘设备。它提供了一套软硬件结合的解决方案,支持全双工语音对话及 IoT 设备控制,致力于协助开发者低成本、快速地构建高定制度的实体 AI 智能体。

本文演示如何为微雪电子支持小智 AI 的 ESP32 开发板烧录固件,包括无开发环境烧录(直接烧录预编译固件)和有开发环境烧录(从源码编译并烧录)两种方式。

0. 烧录固件流程参考

信息

本文以 ESP32-S3-Touch-AMOLED-1.8 开发板为例进行演示,若使用其他开发板,操作步骤类似。

请先确认你的硬件在 小智 AI 适配产品列表 中。


1. 无开发环境烧录

1.1 通过小智官方 GitHub 下载固件

  1. 访问 小智 GitHub 下载对应设备的固件文件,点击 Assets 展开全部文件列表:


  2. 参考 Flash 固件的烧录与擦除教程 完成固件烧录。

1.2 通过微雪电子 GitHub 下载固件

信息

此仓库 汇总了微雪电子支持小智 AI 的 ESP32 开发板固件,所有固件均已在对应开发板上测试验证,方便用户集中查找和下载。固件版本更新可能略晚于小智官方仓库。

  1. 访问 微雪 GitHub 仓库,根据需求选择合适版本的固件进行下载:


  2. 参考 Flash 固件的烧录与擦除教程 完成固件烧录。

2. ESP-IDF 环境烧录

2.1 通过小智 GitHub 下载工程

访问 XiaoZhi AI Chatbot 仓库下载完整工程代码:


2.2 环境搭建

参考 ESP-IDF 环境搭建教程 完成开发环境的配置。

2.3 配置编译

  1. 点击 VSCode 选择目标设备图标 选择目标设备,根据您的开发板选择对应的芯片型号(如 esp32s3):


    提示

    设置目标设备时,ESP-IDF 会自动配置相应的工具链和库,此过程可能需要一些时间,请耐心等待。更多详情请参阅 官方文档

  2. 点击 VSCode 终端按钮 打开 ESP-IDF 终端,执行 idf.py menuconfig 命令进入配置界面,选择 Xiaozhi Assistant:


  3. 选择 Board Type 进入开发板类型选择:


  4. 选择与您的开发板对应的产品型号:


  5. 按 S 键保存配置并退出,然后点击 一键编译烧录 一键构建、烧录和监视图标,自动完成编译、烧录和串口监视。

2.4 开始配网

  1. 使用手机或电脑连接设备的 WiFi 热点:Xiaozhi-xxxxxx。连接成功后通常会自动跳转到配置页面,若未自动跳转,请手动在浏览器中访问 http://192.168.4.1

  2. 在网络配置页面选择要连接的 WiFi 名称(仅支持 2.4G 频段;若要连接 iPhone 热点,需在手机系统设置中开启最大兼容性),SSID 将自动填入,输入密码后点击 Connect 开始连接:


2.5 添加新设备到管理后台

  1. 确保设备已成功连接到互联网,此时设备会播报 6 位设备验证码(可重复唤醒设备再次播报)。

  2. 访问 小智 AI 控制面板,如未注册请先完成账号注册并登录:




  3. 输入 6 位验证码后,设备将自动激活并显示在设备管理页面,即可正常使用。

  4. 说出唤醒词 "你好,小智" 即可唤醒设备,开始语音对话。

  5. ESP32-S3-Touch-AMOLED-1.8 按键说明:

    • BOOT 按键:按下可唤醒小智
    • PWR 按键:短按开机,长按 6 秒以上关机


3. 小智资料


相关资料

1. 硬件资料

开发板设计文件

2. 技术手册

3. 示例程序

4. 软件工具

5. 其他资料链接


技术支持

周一-周五(9:30-6:30)周六(9:30-5:30)

手机:13434470212

邮箱:services04@spotpear.cn

QQ:202004841



[教程导航]