若该文为原创文章,转载请注明原文出处。

复刻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开发板管理

  1. 打开开发板管理器:Arduino IDE → 工具 → 开发板 → 开发板管理器
  2. 通过ESP32关键字进行筛选,并选择安装 esp32 by espressif Systems, 版本
  3. 安装3.2.0版本

3、装依赖库

  1. 打开管理库:Arduino IDE → 项目 → 导入库 → 管理库
  2. 安装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 Size16MB (128Mb)N16R8 物理就是 16MB Flash
PSRAMOPI PSRAM⚠️非常关键,N16R8 是 OPI 内存,不要选 QSPI
Partition Scheme(分区方案)Huge APP (3MB No OTA / 1MB SPIFFS)解决你之前211%空间溢出;APP 程序区 3MB,可以放下 2.77MB 的 AI VOX 固件,代价:不支持 OTA 远程升级(毕设本地烧录完全够用)
Upload Speed921600上传速度,高速烧录
CPU Frequency240MHz最高主频,语音处理更稳
Flash Frequency80MHzOctal Flash 推荐 80M
Flash ModeOPI八线 Flash 模式
OptimizeOptimize for Small (-Os)优先减小固件体积,防止后续改代码又爆 Flash
USB CDC On BootEnabled上电启用虚拟串口,方便串口打印调试
Core Debug LevelNone关闭内核调试日志,减少固件体积

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_SSIDWIFI_PASSWORD 是注释掉的,上电自动进入 SmartConfig 配网模式

// #define WIFI_SSID "your_wifi_ssid"
// #define WIFI_PASSWORD "your_wifi_password"

操作步骤

  1. 烧录代码,上电,OLED 屏幕会显示 网络配置中,播放提示 MP3 音效

  2. 准备:手机连 2.4G WiFi(⚠️ 不支持 5G WiFi!ESP32 只识别 2.4G)

  3. 配网工具(任选其一)

    • 微信小程序搜:EspTouch(乐鑫官方),输入 WiFi 名称、WiFi 密码,发送配网

    • 或者 乐鑫 APP:ESP BLE Provisioning / 小智官方配网工具

  4. 设备收到配网信息,自动连接 WiFi;屏幕提示「网络已连接」、播放连接成功提示音

  5. 如果配网失败 / 想重新配网:按下 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());

常见配网失败排查

  1. ❌ 手机连了 5G WiFi:切回 2.4G,名字最好不要带中文、特殊符号

  2. ❌ 路由器开启了 AP 隔离、访客网络:关掉 AP 隔离

  3. ❌ 供电不稳,ESP32 重启:USB 供电优先,不要用弱电流电源

  4. ❌ OLED 不显示 “网络配置中”:检查 SSD1306 的 I2C 引脚 SDA=14,SCL=13,地址 0x3C

  5. ❌ 配网很久没反应:路由器 WiFi 信道不要超过 13,国内推荐信道 1/6/11

这里使用方案2,直接写死。

2、Token更换

  1. 打开官网:XiaoZhi AI - ESP32 Voice Robot & XiaoZhi Dev Board | 小智AI.Dev ,注册账号登录控制台 https://xiaozhi.dev/console/
  2. 新建设备,拿到设备 Token(替换代码里的test-token
  3. 代码修改:
ai_vox_engine.ConfigWebsocket("wss://api.tenclass.net/xiaozhi/v1/",
                              {{"Authorization", "Bearer test-token"}});

3、导出 bin 操作

  1. 顶部菜单:草图 → 输出编译二进制文件(Export Compiled Binary)

快捷键 Ctrl+Alt+S

  1. IDE 自动完整编译代码,生成全部 bin 文件
  2. 再点:草图 → 显示草图文件夹(Show Sketch Folder)
  3. 进入里面的 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)

  1. 打开乐鑫官方 Flash Download Tool

  2. 芯片选择:ESP32-S3

  3. 分别填入 4 个 bin 和对应地址,Flash 模式选OPI,Flash 大小 16MB

  4. 勾选文件,选择串口,点 Start 烧录

3、常见坑(重点,适配你的 N16R8 Octal)

  1. 生成的 bootloader 必须是 OPI 80MHz,不能是 DIO/QUAD,否则上电黑屏不启动

  2. 如果你换了 Partition Scheme(分区表),必须重新导出 bin,旧的 partition-table.bin 不能复用

  3. 【Huge APP(No OTA)】分区:没有双 OTA 区,烧录时不需要 app1 相关 bin

  4. 编译报错(固件太大):先解决分区 / 体积问题,编译不通过不会生成可用 bin

  5. 找不到 build 文件夹:Arduino IDE 2.x 的 build 目录默认放在草图文件夹内

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

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐