基于Arduino的ESP32-S3小智AI
若该文为原创文章,转载请注明原文出处。
复刻Ardunio小智
参考:https://dcnmu33qx4fc.feishu.cn/docx/Lpy7dfEYAo04PzxJNI0ceTj5nxg
一、软件安装
软件:arduino-ide_2.3.6_windows_64bit.exe
下载地址:
Download arduino-ide_2.3.6_Windows_64bit.exe (Arduino IDE)
二、硬件
1、ESP32-S3-N16R8开发板
2、资料
小智ESP32-S3教程资料包:小智AI教程最新教程下载电脑先解压文档
链接: https://pan.baidu.com/s/1Jb_JAiQujXmJUMKdnHjMig 提取码: 8888
通过百度网盘分享的文件:AI小智套件资料
链接:https://pan.baidu.com/s/1talSTYA8GTZ7vRSokWVliQ?pwd=6666 (此网盘会随时更新最新固件)
提取码:6666
三、arduino软件安装
1、配置
https://jihulab.com/esp-mirror/espressif/arduino-esp32/-/raw/gh-pages/package_esp32_index_cn.json
2、安装EPS32开发板管理
- 打开开发板管理器:Arduino IDE → 工具 → 开发板 → 开发板管理器
- 通过ESP32关键字进行筛选,并选择安装 esp32 by espressif Systems, 版本
- 安装3.2.0版本
3、装依赖库
- 打开管理库:Arduino IDE → 项目 → 导入库 → 管理库
- 安装lvgl by kisvegabor,版本 9.2.2
4、下载代码
https://github.com/78/xiaozhi-esp32/tree/ai_vox_arduino
下载后,把项目压缩成zip导入到库中
四、编译测试
1、打开工程
2、配置
开发板选择:ESP32S3 Dev Module Octal (WROOM2)
| 选项 | 设置值 | 说明 |
|---|---|---|
| Flash Size | 16MB (128Mb) | N16R8 物理就是 16MB Flash |
| PSRAM | OPI PSRAM | ⚠️非常关键,N16R8 是 OPI 内存,不要选 QSPI |
| Partition Scheme(分区方案) | Huge APP (3MB No OTA / 1MB SPIFFS) | 解决你之前211%空间溢出;APP 程序区 3MB,可以放下 2.77MB 的 AI VOX 固件,代价:不支持 OTA 远程升级(毕设本地烧录完全够用) |
| Upload Speed | 921600 | 上传速度,高速烧录 |
| CPU Frequency | 240MHz | 最高主频,语音处理更稳 |
| Flash Frequency | 80MHz | Octal Flash 推荐 80M |
| Flash Mode | OPI | 八线 Flash 模式 |
| Optimize | Optimize for Small (-Os) | 优先减小固件体积,防止后续改代码又爆 Flash |
| USB CDC On Boot | Enabled | 上电启用虚拟串口,方便串口打印调试 |
| Core Debug Level | None | 关闭内核调试日志,减少固件体积 |
3、编译
等待编译结果
按照main.cpp中PIN的描述部分进行接线:
| ESP32引脚编号 | 外设 |
| 34 | 按键(按下为低电平) |
| 25 | 麦克风 BCLK (BCK, SCLK, SCK) |
| 26 | 麦克风 WS (LRCK, FS, LRCLK) |
| 27 | 麦克风 DI (SD, SDATA, SDOUT, SDIN) |
| 33 | 功放喇叭 BCLK (BCK, SCLK, SCK) |
| 32 | 功放喇叭 WS (LRCK, FS, LRCLK) |
| 23 | 功放喇叭 DOUT (SD, DO, SDATA, SDOUT, SDIN) |
| 21 | OLED SDA |
| 22 | OLED SCL |
| 2 | LED 灯(高低电平控制) |
五、测试
1、配网
配网方案:【SmartConfig 一键配网(AirKiss/ESP-Touch,默认)】、【硬编码 WiFi 账号密码】 开发板:ESP32-S3-N16R8
方案 1:默认方式 —— 手机 APP / 微信 AirKiss 一键配网(推荐,代码现在就是这个模式)
当前代码:
WIFI_SSID和WIFI_PASSWORD是注释掉的,上电自动进入 SmartConfig 配网模式
// #define WIFI_SSID "your_wifi_ssid"
// #define WIFI_PASSWORD "your_wifi_password"
操作步骤
-
烧录代码,上电,OLED 屏幕会显示 网络配置中,播放提示 MP3 音效
-
准备:手机连 2.4G WiFi(⚠️ 不支持 5G WiFi!ESP32 只识别 2.4G)
-
配网工具(任选其一)
-
微信小程序搜:EspTouch(乐鑫官方),输入 WiFi 名称、WiFi 密码,发送配网
-
或者 乐鑫 APP:ESP BLE Provisioning / 小智官方配网工具
-
-
设备收到配网信息,自动连接 WiFi;屏幕提示「网络已连接」、播放连接成功提示音
-
如果配网失败 / 想重新配网:按下 BOOT 按键(GPIO0),代码里绑定了 BOOT 键,按下就重新进入 SmartConfig 配网模式
协议:代码配置
SC_TYPE_ESPTOUCH_AIRKISS,同时支持 ESP-Touch 和 微信 AirKiss
方案 2:直接写死 WiFi(不需要手机配网,调试用)
把注释打开,改成你家里的 2.4G WiFi 名称和密码,上电自动连 WiFi,不会进入配网等待
#define WIFI_SSID "MyWifiName"
#define WIFI_PASSWORD "12345678"
⚠️ 必须是2.4G 频段 WiFi,5G WiFi 无法连接!
关键代码对应逻辑(帮你看懂)
wifi_configurator->Start(); // 无参数 = 启动SmartConfig配网
// wifi_configurator->Start(WIFI_SSID, WIFI_PASSWORD); // 有参数 = 直连指定WiFi
BOOT 按键(GPIO_NUM_0)回调:按下触发 StartSmartConfig(),随时可以重新配网
iot_button_register_cb(
g_button_boot_handle,
BUTTON_PRESS_DOWN,
nullptr,
[](void*, void* data) {
printf("boot button pressed\n");
static_cast<WifiConfigurator*>(data)->StartSmartConfig();
},
wifi_configurator.get());
常见配网失败排查
-
❌ 手机连了 5G WiFi:切回 2.4G,名字最好不要带中文、特殊符号
-
❌ 路由器开启了 AP 隔离、访客网络:关掉 AP 隔离
-
❌ 供电不稳,ESP32 重启:USB 供电优先,不要用弱电流电源
-
❌ OLED 不显示 “网络配置中”:检查 SSD1306 的 I2C 引脚 SDA=14,SCL=13,地址 0x3C
-
❌ 配网很久没反应:路由器 WiFi 信道不要超过 13,国内推荐信道 1/6/11
这里使用方案2,直接写死。
2、Token更换
- 打开官网:XiaoZhi AI - ESP32 Voice Robot & XiaoZhi Dev Board | 小智AI.Dev ,注册账号登录控制台
https://xiaozhi.dev/console/ - 新建设备,拿到设备 Token(替换代码里的
test-token) - 代码修改:
ai_vox_engine.ConfigWebsocket("wss://api.tenclass.net/xiaozhi/v1/",
{{"Authorization", "Bearer test-token"}});
3、导出 bin 操作
- 顶部菜单:草图 → 输出编译二进制文件(Export Compiled Binary)
快捷键
Ctrl+Alt+S
- IDE 自动完整编译代码,生成全部 bin 文件
- 再点:草图 → 显示草图文件夹(Show Sketch Folder)
- 进入里面的
build文件夹,里面有 4 个关键 bin:表格
文件 烧录地址 说明 xxx.ino.bin0x10000你的主程序(AI VOX 语音代码,最重要) bootloader.bin0x00000启动引导 partition-table.bin0x08000分区表(Huge APP 分区) boot_app0.bin0xe000OTA 数据,你这个分区不用 OTA
⚠️ ESP32-S3 不能只烧单个 ino.bin,量产用乐鑫 Flash Download Tool,4 个文件按地址填入。
4、烧录方式
两种烧录方式
方式 1:IDE 直接上传(日常调试,最简单)
直接点上传,IDE 自动把这几个 bin 一起刷入开发板,不用手动找文件。
方式 2:乐鑫 Flash Download Tool(量产、离线烧录,需要导出的 bin)
-
打开乐鑫官方 Flash Download Tool
-
芯片选择:
ESP32-S3 -
分别填入 4 个 bin 和对应地址,Flash 模式选
OPI,Flash 大小 16MB -
勾选文件,选择串口,点 Start 烧录
3、常见坑(重点,适配你的 N16R8 Octal)
-
生成的 bootloader 必须是 OPI 80MHz,不能是 DIO/QUAD,否则上电黑屏不启动
-
如果你换了 Partition Scheme(分区表),必须重新导出 bin,旧的 partition-table.bin 不能复用
-
【Huge APP(No OTA)】分区:没有双 OTA 区,烧录时不需要 app1 相关 bin
-
编译报错(固件太大):先解决分区 / 体积问题,编译不通过不会生成可用 bin
-
找不到 build 文件夹:Arduino IDE 2.x 的 build 目录默认放在草图文件夹内

如有侵权,或需要完整代码,请及时联系博主。
更多推荐




所有评论(0)