

本章节包含以下部分,请按需阅读:
初次接触 Arduino ESP32 开发,想要快速上手?我们为您准备了一套通用的 入门教程。
请注意:该教程使用 ESP32-S3-Zero 作为教学示例,所有硬件代码均基于其引脚布局。在动手实践前,建议您对照手中的开发板引脚图,确认引脚配置无误。
请参考 安装和配置 Arduino IDE 教程 下载安装 Arduino IDE 并添加 ESP32 支持。
Arduino 目录中,下载 ESP32-S3-Touch-AMOLED-2.16 开发板的示例程序包。包内的 Arduino\libraries 目录已包含本教程所需的全部库文件。| 库或文件名称 | 说明 | 版本 | 安装方式 |
|---|---|---|---|
| GFX Library for Arduino | ST7789 显示驱动图形库 | v1.6.4 | 通过库管理器或手动安装 |
| SensorLib | PCF85063、QMI8658 传感器驱动库 | v0.3.3 | 通过库管理器或手动安装 |
| XPowersLib | AXP2101 驱动库 | v0.2.6 | 通过库管理器或手动安装 |
| lvgl | lvgl 显示显示框架 | v8.4.0 | 通过库管理器或手动安装 |
| Mylibrary | 开发板引脚宏定义 | —— | 手动安装 |
| lv_conf.h | LVGL 配置文件 | —— | 手动安装 |
LVGL 及其驱动库的版本之间存在较强的依赖关系。例如,为 LVGL v8 编写的驱动可能不兼容 LVGL v9。为确保示例能够稳定复现,推荐使用上表列出的特定版本。混合使用不同版本的库可能导致编译失败或运行时异常。
安装步骤:
下载 示例程序包。
将其 Arduino\libraries 目录下的所有文件夹(Arduino_DriveBus、GFX_Library_for_Arduino 等)复制到 Arduino 的库文件夹中。
Arduino 库文件夹的路径通常是:c:\Users\<用户名>\Documents\Arduino\libraries。
也可以在 Arduino IDE 中通过 文件 > 首选项,查看“项目文件夹位置”来定位。库文件夹就是此路径下的 libraries 文件夹。
其他安装方式请参考:Arduino 库管理教程。
Arduino 示例程序位于 示例程序包 的 Arduino/examples 目录中。
| 示例程序 | 基础例程说明 | 依赖库 |
|---|---|---|
| 01_HelloWorld | 展示了基本的图形库功能,也可以用于测试显示屏的基础性能以及随机文本显示效果 | GFX_Library_for_Arduino |
| 02_GFX_AsciiTable | 根据屏幕尺寸,在显示屏上按行列打印 ASCII 字符 | GFX_Library_for_Arduino |
| 03_LVGL_AXP2101_ADC_Data | 通过移植后的 XPowersLib 驱动 AXP2101 获取电源相关数据 | GFX_Library_for_Arduino |
| 04_LVGL_QMI8658_ui | LVGL 绘制加速度折线图 | LVGL,SensorLib |
| 05_LVGL_Widgets | LVGL 演示 | LVGL,Arduino_DriveBus ,Adafruit_XCA9554 |
| 06_ES7210 | ES7210 驱动示例,拾取人声检测 | —— |
| 07_ES8311 | ES8311 驱动示例,播放简单的音频 | —— |
显示初始化:
if (!gfx->begin()) {
USBSerial.println("gfx->begin() failed!");
}
清屏并显示文本:
gfx->fillScreen(BLACK);
gfx->setCursor(10, 10);
gfx->setTextColor(RED);
gfx->println("Hello World!");
动图显示:
gfx->setCursor(random(gfx->width()), random(gfx->height()));
gfx->setTextColor(random(0xffff), random(0xffff));
gfx->setTextSize(random(6), random(6), random(2));
gfx->println("Hello World!");

数据总线和图形显示对象的创建
Arduino_DataBus *bus = new Arduino_ESP32QSPI(
LCD_CS /* CS */, LCD_SCLK /* SCK */, LCD_SDIO0 /* SDIO0 */, LCD_SDIO1 /* SDIO1 */,
LCD_SDIO2 /* SDIO2 */, LCD_SDIO3 /* SDIO3 */);
Arduino_GFX *gfx = new Arduino_SH8601(bus, -1 /* RST */,
0 /* rotation */, false /* IPS */, LCD_WIDTH, LCD_HEIGHT);
绘制行列编号和字符表
gfx->setTextColor(GREEN);
for (int x = 0; x < numRows; x++) {
gfx->setCursor(10 + x * 8, 2);
gfx->print(x, 16);
}
gfx->setTextColor(BLUE);
for (int y = 0; y < numCols; y++) {
gfx->setCursor(2, 12 + y * 10);
gfx->print(y, 16);
}
char c = 0;
for (int y = 0; y < numRows; y++) {
for (int x = 0; x < numCols; x++) {
gfx->drawChar(10 + x * 8, 12 + y * 10, c++, WHITE, BLACK);
}
}

亮屏熄屏实现函数
void toggleBacklight() {
USBSerial.println(backlight_on);
if (backlight_on) {
for (int i = 255; i >= 0; i--) {
gfx->Display_Brightness(i);
delay(3);
}
} else {
for (int i = 0; i <= 255; i++) {
gfx->Display_Brightness(i);
delay(3);
}
}
backlight_on = !backlight_on;
}

setup:负责初始化各种硬件设备和 LVGL 图形库环境
USBSerial.begin(115200) 为串口调试做准备loop
lv_timer_handler():这是 LVGL 图形库中的一个重要函数,用于处理图形界面的各种定时器事件、动画更新、输入处理等任务。在每个循环中调用这个函数可以确保图形界面的流畅运行和及时响应交互操作
setup:负责初始化各种硬件设备和 LVGL 图形库环境USBSerial.begin(115200) 为串口调试做准备Wire.begin(IIC_SDA, IIC_SCL); 初始化 I²C 总线,用于与其他 I²C 设备通信lv_demo_widgets() 展示 LVGL 的示例小部件looplv_timer_handler():这是 LVGL 图形库中的一个重要函数,用于处理图形界面的各种定时器事件、动画更新、输入处理等任务。在每个循环中调用这个函数可以确保图形界面的流畅运行和及时响应交互操作delay(5):添加一个小的延迟,避免过度占用 CPU 资源
es8311_codec_init:初始化 ES8311 音频编解码器setup:进行整体的初始化设置,包括串口、引脚、I2S 和 ES8311 编解码器es8311_codec_init 函数初始化 ES8311 编解码器本章节包含以下部分,请按需阅读:
初次接触 ESP32 ESP-IDF 开发,想要快速上手?我们为您准备了一套通用的 入门教程。
请注意:该教程使用 ESP32-S3-Zero 作为教学示例,所有硬件代码均基于其引脚布局。在动手实践前,建议您对照手中的开发板引脚图,确认引脚配置无误。
对于 ESP32-S3-Touch-AMOLED-2.16 开发板,需要使用 ESP-IDF V5.5 以上版本。
以下内容以 Windows 系统为例,使用 VS Code + ESP-IDF 扩展 的方式进行开发。Mac/Linux 用户请参考 官方说明。
前往 ESP-IDF Installation Manager 下载 ESP-IDF 安装管理器。这是乐鑫最新推出的跨平台安装工具,下文将演示如何使用其离线安装功能。
在页面中点击 Offline Installer 标签,然后在筛选栏中选择 Windows 操作系统和你要安装的版本。

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

请耐心等待两个文件下载完成。
下载完成后,双击运行 ESP-IDF 安装器(eim-gui-windows-x64.exe)。
启动后,可在右上角将界面语言切换为中文。

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

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

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

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

下载并安装 Visual Studio Code。
安装时建议勾选 通过 Code 打开操作添加到 Windows 资源管理器文件上下文菜单,以便快速打开项目文件夹。
在 VS Code 中,点击侧边活动栏中的 扩展图标(或使用快捷键 Ctrl + Shift + X)打开 扩展 视图。
在搜索框中输入 ESP-IDF,找到 ESP-IDF 扩展并点击安装。

当 ESP-IDF 扩展版本 ≥ 2.0 时,扩展会自动检测并识别上述步骤中安装的 ESP-IDF 环境,无需手动配置。
ESP-IDF 示例程序位于 示例程序包 的 ESP-IDF 目录中。
| 示例程序 | 基础例程说明 |
|---|---|
| 01_AXP2101 | 通过移植后的 XPowersLib 驱动 AXP2101 获取电源相关数据 |
| 02_lvgl_demo_v9 | LVGL 演示 |
| 03_esp-brookesia | 展示完整手机风格 UI 系统,包含状态栏、导航栏、应用启动器和手势交互等组件 |
| 04_Immersive_block | 通过 QMI8658 六轴传感器采集加速度数据,驱动 LVGL 图形库渲染的随机几何图形跟随设备倾斜方向移动 |
| 05_Spec_Analyzer | 展示实时音频频谱可视化分析仪,以 64 条彩色对称频谱条 + 峰值跟踪的形式,直观呈现音频的频率分布 |
i2c_init:初始化 I2C 主设备,为与其他设备(如 PMU)进行通信做准备pmu_register_read:从 PMU 的特定寄存器读取一系列字节数据

![]() ![]() ![]() |
|---|
generate_random_shapes():随机图形生成lv_obj_set_pos),存入图形数组perform_level_calibration():水平校准核心函数accel_bias_x/y)calibration_done 标志,打印偏差信息
timer_cb:LVGL 定时器回调函数,负责频谱可视化渲染lv_canvas_finish_layer 提交图层渲染,更新画布显示lv_example_canvas_10:画布初始化LV_DRAW_BUF_DEFINE_STATIC 定义 300×150 像素的 RGB565 格式绘制缓冲区timer_cb 回调函数,并将画布对象作为用户数据传入,实现定时渲染
XiaozhiAI(小智 AI)是一个基于 ESP32 开发板的开源 AI 语音聊天机器人项目,旨在将大语言模型(LLM)的通用智能赋予边缘设备。它提供了一套软硬件结合的解决方案,支持全双工语音对话及 IoT 设备控制,致力于协助开发者低成本、快速地构建高定制度的实体 AI 智能体。
本文演示如何为微雪电子支持小智 AI 的 ESP32 开发板烧录固件,包括无开发环境烧录(直接烧录预编译固件)和有开发环境烧录(从源码编译并烧录)两种方式。
本文以 ESP32-S3-Touch-AMOLED-1.8 开发板为例进行演示,若使用其他开发板,操作步骤类似。
请先确认你的硬件在 小智 AI 适配产品列表 中。

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

参考 Flash 固件的烧录与擦除教程 完成固件烧录。
此仓库 汇总了微雪电子支持小智 AI 的 ESP32 开发板固件,所有固件均已在对应开发板上测试验证,方便用户集中查找和下载。固件版本更新可能略晚于小智官方仓库。
访问 微雪 GitHub 仓库,根据需求选择合适版本的固件进行下载:

参考 Flash 固件的烧录与擦除教程 完成固件烧录。
访问 XiaoZhi AI Chatbot 仓库下载完整工程代码:

参考 ESP-IDF 环境搭建教程 完成开发环境的配置。
点击 选择目标设备,根据您的开发板选择对应的芯片型号(如
esp32s3):

设置目标设备时,ESP-IDF 会自动配置相应的工具链和库,此过程可能需要一些时间,请耐心等待。更多详情请参阅 官方文档。
点击 打开 ESP-IDF 终端,执行
idf.py menuconfig 命令进入配置界面,选择 Xiaozhi Assistant:

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

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

按 S 键保存配置并退出,然后点击 一键构建、烧录和监视图标,自动完成编译、烧录和串口监视。
使用手机或电脑连接设备的 WiFi 热点:Xiaozhi-xxxxxx。连接成功后通常会自动跳转到配置页面,若未自动跳转,请手动在浏览器中访问 http://192.168.4.1。
在网络配置页面选择要连接的 WiFi 名称(仅支持 2.4G 频段;若要连接 iPhone 热点,需在手机系统设置中开启最大兼容性),SSID 将自动填入,输入密码后点击 Connect 开始连接:

确保设备已成功连接到互联网,此时设备会播报 6 位设备验证码(可重复唤醒设备再次播报)。
访问 小智 AI 控制面板,如未注册请先完成账号注册并登录:



输入 6 位验证码后,设备将自动激活并显示在设备管理页面,即可正常使用。
说出唤醒词 "你好,小智" 即可唤醒设备,开始语音对话。
ESP32-S3-Touch-AMOLED-1.8 按键说明:

开发板设计文件
ESP32-S3 芯片官方手册
数据手册
周一-周五(9:30-6:30)周六(9:30-5:30)
手机:13434470212
邮箱:services04@spotpear.cn
QQ:202004841
