从零踩坑到成功点亮:ESP32-S3 小智 AI 机器人搭建全记录
·
最近成功用 ESP32-S3 做出了小智 AI 聊天机器人(xiaozhi-esp32 项目),从环境搭建到最后和小智对话,中间踩了无数坑。这里完整记录我的过程和遇到的所有问题,希望帮到同样入坑的朋友。
一、最终成果
- 硬件:ESP32-S3 开发板
- 固件:xiaozhi-esp32 开源项目
- 环境:Windows + VSCode + ESP-IDF v6.1
- 最终效果:联网后屏幕显示激活码,在 xiaozhi.me 绑定后即可 AI 语音对话 ✅
二、搭建步骤
1️⃣ 安装 ESP-IDF 开发环境
- 官网下载 ESP-IDF 安装器,我装的是 v6.1,默认装到
C:\Espressif和C:\esp - VSCode 安装 ESP-IDF 扩展,用扩展的 Configure 向导配置版本和工具路径
2️⃣ 获取项目
- GitHub 下载 xiaozhi-esp32 源码 zip,解压备用
3️⃣ 选择目标芯片并构建
Ctrl+Shift+P→ESP-IDF: Set Espressif Device Target→ 选 esp32s3- 点底部状态栏 🔥 Build 按钮构建(首次构建约 5~15 分钟)
4️⃣ 烧录
- USB 连接开发板,选择 COM 口(我的是COM10)
- 烧录方式选 UART(不要选 JTAG!)
- 点 ⚡ Flash 烧录,完成后打开 🖥️ Monitor 看日志

5️⃣ 配网激活
- 板子启动后连接 WiFi

- 屏幕显示:
激活设备 xiaozhi.me xxxxxx(六位验证码) -
#include <esp_log.h> #include <esp_err.h> #include <nvs.h> #include <nvs_flash.h> #include <driver/gpio.h> #include <esp_event.h> #include <freertos/FreeRTOS.h> #include <freertos/task.h> #include "application.h" #define TAG "main" extern "C" void app_main(void) { // Initialize NVS flash for WiFi configuration esp_err_t ret = nvs_flash_init(); if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) { ESP_LOGW(TAG, "Erasing NVS flash to fix corruption"); ESP_ERROR_CHECK(nvs_flash_erase()); ret = nvs_flash_init(); } ESP_ERROR_CHECK(ret); // Initialize and run the application auto& app = Application::GetInstance(); app.Initialize(); app.Run(); // This function runs the main event loop and never returns }
- 登录 xiaozhi.me → 控制台 → 添加设备 → 输入验证码 → 绑定成功 🎉

三、踩坑记录(重点!)
💥 坑 1:Python 虚拟环境路径冲突
报错:
'C:\Espressif\...\python.exe' is currently active in the environment
while the project was configured with 'D:\Espressif\...\python.exe'.
原因: 之前在 D 盘装过一次 ESP-IDF,项目缓存记录的还是 D 盘旧路径。
解决: 删除项目里的 build 文件夹和 sdkconfig,用新环境重新构建。
💥 坑 2:项目路径带空格和括号(最隐蔽的坑!)
报错:
ninja: error: rebuilding 'build.ninja': subcommand failed
原因: 项目文件夹名是 xiaozhi-esp32-main (1)(浏览器重复下载自动加的后缀),路径里的空格和括号会让 CMake/Ninja 崩溃。
解决: 把项目移到干净路径,如 C:\esp\project\xiaozhi-esp32-main,无空格、无括号、无中文,删除 build 后重新构建,一次通过!
💥 坑 3:VSCode 满屏“无法打开源文件 nvs.h / FreeRTOS.h”
原因: 这是 IntelliSense 提示问题,不是编译失败。项目没成功构建过,build/compile_commands.json 还没生成。
解决: 先构建成功,红线基本自动消失;不行就 C/C++: Reset IntelliSense Database。
💥 坑 4:烧录时报 OpenOCD 错误
报错:
OpenOCD server failed to start: esp_usb_jtag: could not find or open device!
Can't perform JTAG flash
原因: 烧录方式选成了 JTAG,而普通开发板应该用串口烧录。
解决: ESP-IDF: Select Flash Method → 选 UART,选对 COM 口,再点 Flash。
四、总结心得
- 项目路径一定要干净:无空格、无括号、无中文,建议放
C:\esp\project\ - 重装环境后记得删 build 缓存,旧路径残留会导致各种诡异报错
- 报错别慌,看终端最后几行,ESP-IDF 的报错信息其实写得很清楚
- 普通开发板烧录用 UART,JTAG 是调试用的
- 遇到问题善用
Ctrl+Shift+P里的 ESP-IDF 命令和 Doctor 诊断工具
更多推荐



所有评论(0)