1. 硬件选型与材料清单想要搭建一个能听会说的智能语音助手首先得把硬件凑齐。我这里用的ESP32-S3开发板相当于机器人的大脑搭配麦克风、喇叭和显示屏这些感官器官。具体来说你需要准备以下材料核心控制板ESP32-S3-DevKitC-1建议选WROOM N16R8模组版本这块板子自带Wi-Fi和蓝牙性能足够跑语音识别声音采集INMP441数字麦克风模块我实测它的拾音效果比普通模拟麦克风清晰不少音频输出MAX98357A数字功放模块4Ω 3W腔体喇叭组合音质够用还省电显示界面1.3寸IPS LCD屏240x240分辨率建议选带驱动板的版本自己焊接8Pin排针实验平台400孔面包板2块140根跳线方便随时调整电路特别提醒新手买LCD屏时一定要确认是SPI接口的ST7789驱动芯片市面上有些兼容屏的引脚定义不同。我第一次就买错了结果调了整整两天驱动程序。2. 面包板电路搭建技巧2.1 模块布局规划在面包板上布局时建议按功能分区左上角放开发板右侧从上到下依次排列麦克风、功放和LCD屏。留出中间区域作为布线区这样既美观又方便调试。实际接线时我踩过几个坑电源线最好用红色跳线地线用黑色信号线用其他颜色区分长距离走线要避开高频信号区域我的麦克风最初离SPI线太近就有干扰杂音每个模块的3.3V和GND都要单独连接不要共用一根线2.2 详细接线指南开发板与各模块的连接关系如下表示加粗的是关键引脚ESP32-S3引脚INMP441麦克风MAX98357A功放ST7789 LCD屏GPIO4WS--GPIO5SCK--GPIO6SD--GPIO7-DIN-GPIO15-BCLK-GPIO16-LRC-GPIO21--SCLGPIO40--DCGPIO41--CSGPIO42--BLK接LCD屏时要特别注意不同厂商的排针顺序可能不同我的屏幕引脚顺序是GND-VCC-SCL-SDA-RES-DC-CS-BLK如果点不亮可以先检查这个。3. 开发环境配置3.1 安装ESP-IDF工具链在Windows上配置ESP-IDF 5.4开发环境时推荐使用官方提供的安装器。我试过手动安装依赖问题能让人崩溃。具体步骤下载Espressif的IDE安装包勾选Python 3.11和Git组件安装完成后打开ESP-IDF 5.4 PowerShell运行get-idf命令初始化环境遇到环境变量问题时可以尝试在PowerShell中执行$env:IDF_PATH D:\Espressif\frameworks\esp-idf-v5.4 $env:PATH ;D:\Espressif\tools\xtensa-esp-elf\esp-14.2.0_20241119\xtensa-esp-elf\bin3.2 获取项目源码建议从Gitee镜像仓库克隆代码速度更快git clone https://gitee.com/zexuntec/xiaozhi-esp32.git cd xiaozhi-esp32进入项目目录后必须设置目标芯片idf.py set-target esp32s34. 固件编译与烧录4.1 配置编译选项执行idf.py menuconfig后需要重点修改在Xiaozhi Assistant菜单下选择面包板新版接线LCD Type选ST7789240x240分辨率如果要用自定义唤醒词在ESP Speech Recognition里加载多唤醒词4.2 解决编译常见问题第一次编译可能会遇到组件下载失败这是因为有些仓库在境外。我的解决办法是手动下载esp-sr组件包放到components文件夹修改CMakeLists.txt中的下载链接完整编译命令idf.py build看到Project build complete就说明成功了生成的固件在build/xiaozhi.bin。4.3 烧录与调试用Type-C线连接开发板执行idf.py -p COM3 flash monitorCOM端口号可以在设备管理器中查看。烧录完成后会自动启动串口监视器看到Hello Xiaozhi!日志就说明系统启动正常。5. 设备联网与功能测试5.1 配网操作流程手机连接Xiaozhi-XXXX热点浏览器访问192.168.4.1选择2.4GHz WiFi并输入密码等待设备重启后自动连接网络实测发现有些手机热点需要开启最大兼容性模式才能被识别这是ESP32-S3的WiFi驱动限制。5.2 语音功能调试对着麦克风说你好小智正常应该听到回应音并看到LCD屏显示波形图。如果没反应检查INMP441的L/R引脚是否短接用示波器看GPIO4/5/6是否有I2S信号调整menuconfig中的麦克风增益参数5.3 显示优化技巧在lvgl_conf.h中可以修改这些参数提升显示效果#define LV_DISP_DEF_REFR_PERIOD 30 // 刷新率从默认60降到30更省电 #define LV_DPI_DEF 130 // 根据屏幕尺寸调整DPI #define LV_COLOR_DEPTH 16 // 65K色模式6. 进阶功能扩展6.1 添加自定义唤醒词准备1秒左右的wav格式录音文件通过以下工具生成唤醒词模型python esp_sr/tools/wake_word_wav2h.py input.wav -o my_wake_word.h然后把头文件放到components/esp_sr/model目录下重新编译即可。6.2 对接智能家居通过修改components/xiaozhi/include/api_client.h可以接入智能家居平台void control_light(bool on) { char cmd[64]; snprintf(cmd, sizeof(cmd), {\dev\:\light\,\cmd\:%d}, on?1:0); send_websocket_message(cmd); }6.3 功耗优化方案如果要用电池供电建议在menuconfig中开启Light-sleep模式将CPU频率降到80MHz设置屏幕背光PWM调光禁用不必要的日志输出实测优化后待机电流能从120mA降到15mA左右。