xiaozhi-esp32 适配 NULLLAB AI-VOX3 语音开发板:硬件特性、板级驱动源码解析与固件构建指南 xiaozhi-esp32 适配 NULLLAB AI-VOX3 语音开发板硬件特性、板级驱动源码解析与固件构建指南【免费下载链接】xiaozhi-esp32An MCP-based chatbot | 一个基于MCP的聊天机器人项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32AI-VOX3 是 NULLLAB 推出的一款专为 AI 语音交互设计的高性能 ESP32-S3 嵌入式开发板本仓库xiaozhi-esp32已将其作为官方支持板卡纳入构建矩阵。本文以 板卡官方说明 为骨架结合仓库内真实板级驱动源码全面梳理 AI-VOX3 的硬件规格、引脚分配、双网络与电源管理实现、音频回声消除原理并给出基于 ESP-IDF 的完整固件构建与烧录方法帮助开发者快速上手二次开发与 DIY 扩展。一、板卡概述面向 AI 语音交互的五合一开发板AI-VOX3 是 AI VOX 的升级款核心采用ESP32-S3-R8芯片板载 16 MB Flash集五合一功能于一体AI 聊天、天气时钟、无线对讲机、MP3 音乐播放器、网络电台同时支持本地语音唤醒、指令识别和语音合成可广泛应用于智能家居、教育设备和物联网终端等领域。硬件设计上其 PCB 尺寸兼容乐高插销可直接安装在积木 C 款上便于 DIY 搭建配套 AI-VOX3 扩展板与 MD40 电机驱动板开发者可以基于板载资源快速构建原型并通过丰富接口实现个性化功能扩展大幅缩短开发周期。在本项目中该板卡以nulllab-ai-vox-v3目录形式存在于 main/boards/nulllab-ai-vox-v3 下其板级实现类AIVOX3继承自双网络基类DualNetworkBoard同时支持 Wi-Fi 与 ML307 Cat.1 4G 两种联网方式是仓库内Wi-Fi 4G 双网切换的代表性板卡之一。二、功能特点与硬件规格原版 README 列举的硬件规格完整继承如下并补充软件层面对应能力主控ESP32-S3R8 高性能 Xtensa 32 位 LX7 双核处理器主频高达 240 MHz内置 512 KB SRAM、384 KB ROM 以及 8 MB PSRAM板载 16 MB Flash 存储芯片。无线支持 2.4 GHz Wi-Fi802.11 b/g/n与 Bluetooth 5LE板载天线。供电与下载Type-C 接口支持程序下载、板载供电及锂电池充电兼容主流开发环境简化开发与电源管理流程。电源按键采用电源复位按键二合一设计短按开机或系统复位长按关机详见下文Power 按键说明。显示可接 1.54 寸 240×240 分辨率 SPI 接口 LCDST7789提供直观图形化交互界面预留 LCD 排线和 OLED 插口可选择 OLED 或 LCD 彩屏显示。音频板载 ES8311 音频编解码器与 3 W 音频放大器NS4150B支持高保真音频输入/输出需外接喇叭。麦克风双麦克风设计板载模拟麦克风还可外挂模拟麦克风支持单麦打断。存储板载 SD Card 接口支持大容量存储扩展。交互外设板载 BOOT 按键、2 个按键GPIO46/45及 WS2812B RGB 灯便于交互调试与状态指示。扩展接口引出一组 8 个 GPIO 排针接口GPIO43/44/42/48/4/3/2/1支持多种外设接入预留一个 4 pin PH2.0 接口可方便通过 PH2.0 供电也可与其他主控通讯配套外接 AI-VOX3 扩展板可通过其排针接口扩展更多功能配套外接 MD40 电机驱动板可运行多个电机。电源管理板载充电升压 5V 2.4A 输出一体电路支持外接锂电池供电并通过 IO18 ADC 实时检测电量源码实现见下文第四节。开发环境支持 ESP-IDF、Arduino IDE、AilyBlockly。在软件侧该板卡具备以下与本项目强相关的特性联网方式可于 Wi-Fi 与 ML307 4G 之间运行时切换DualNetworkBoard支持ES8311 编解码器支持全双工音频且可通过播放缓存软参考实现回声消除AEC板载 240×240 ST7789 LCD 可显示表情、通知与中文/多语言文本内置 RGB LED 作为状态指示灯音量按键支持步进调节与静音/最大音量快捷操作。三、Power 按键说明AI-VOX3 取消了传统的 Reset 复位按键改为使用Power 按键统一操作短按一次Power 按键开机或系统复位长按Power 按键关机。该设计将系统复位与开关机集成到同一按键简化了操作流程也意味着开发阶段如需复位设备直接短按 Power 键即可。若在使用中修改了配置或刷入新固件后需要重启同样通过该按键完成。四、板级驱动源码解析4.1 板卡注册与构建入口AI-VOX3 在项目中的接入点有三处Kconfig 菜单项main/Kconfig.projbuild 中定义BOARD_TYPE_AI_VOX3菜单显示名为 NullLab AI Vox V3并depends on IDF_TARGET_ESP32S3即仅支持 ESP32-S3 目标芯片。CMake 板卡目录映射main/CMakeLists.txt 中CONFIG_BOARD_TYPE_AI_VOX3对应BOARD_DIR nulllab-ai-vox-v3并配置了默认中文字体font_noto_sans_basic_20_4、图标字体font_material_symbols_20_4与 emoji 集合noto-color-emoji_64。构建清单config.json 声明type为nulllab-ai-vox-v3、target为esp32s3并追加CONFIG_ESP_CONSOLE_NONEy——即固件默认禁用 ESP 控制台输出。从引脚分配看GPIO43/44 被复用为 ML307 4G 模块的串口ML307_TX_PIN/ML307_RX_PIN而这两个引脚恰是 ESP32-S3 默认 UART0 的 RX/TX因此可以推断禁用控制台正是为了避免与 4G 模块串口通信冲突。此外docs/esp-idf-6-migration.md 记录该板卡已在 ESP-IDF 6.0.1 下通过完整构建验证属于主分支 IDF 6.0.x 兼容板卡。4.2 双网络架构Wi-Fi 与 4G 的运行时切换板卡实现类AIVOX3位于 ai_vox3_board.cc构造函数中调用DualNetworkBoard(ML307_TX_PIN, ML307_RX_PIN, GPIO_NUM_NC, DEFAULT_4G_NETWORK)其中DEFAULT_4G_NETWORK在 config.h 中定义为 0。双网络机制定义在 main/boards/common/dual_network_board.hDualNetworkBoard内部持有std::unique_ptrBoard current_board_根据NetworkTypeWIFI或ML307在WifiBoard与Ml307Board之间切换网络类型会通过LoadNetworkTypeFromSettings/SaveNetworkTypeToSettings持久化到设置中。在 ai_vox3_board.cc 中BOOT 按键的长按事件被绑定为SwitchNetworkType()当设备处于启动中或 Wi-Fi 配置状态时长按 BOOT 键即可切换 Wi-Fi / 4G 网络类型而 BOOT 键单击则在启动/配网阶段进入 Wi-Fi 配置模式其余状态切换聊天会话状态ToggleChatState。这一设计让无 4G 模块的版本DEFAULT_4G_NETWORK为 0与带 ML307 模块的版本共用同一套固件逻辑。4.3 音频通路ES8311 全双工与软件回声消除音频编解码器封装在 ai_vox3_audio_codec.h 的AIVOX3AudioCodec类中继承自 main/audio/audio_codec.h 的AudioCodec抽象I2S 全双工通道CreateDuplexChannels使用I2S_NUM_0同时创建 TX/RX 通道16 bit、立体声槽位、128 倍 MCLK输入输出采样率均为 24 kHz见 config.h 的AUDIO_INPUT_SAMPLE_RATE/AUDIO_OUTPUT_SAMPLE_RATE。ES8311 配置通过 I2CSDAGPIO13SCLGPIO12地址ES8311_CODEC_DEFAULT_ADDR控制ESP_CODEC_DEV_WORK_MODE_BOTH双工模式use_mclktrue。回声消除AEC软参考README 提到支持单麦打断源码注释进一步说明——板子不支持硬件回采采用缓存播放缓存来实现回声消除。当CONFIG_USE_DEVICE_AEC使能时config.h 中AUDIO_INPUT_REFERENCEtrueWrite()会将播放数据写入ref_buffer_环形参考缓存Read()则将麦克风数据与参考数据交织成双通道送给 AEC 处理实现全双工免提通话。BOOT 键双击还可在线切换 AEC 开关模式ai_vox3_board.cc。输入增益与音量EnableInput开启时将麦克风输入增益设为 37.5 dBEnableOutput恢复上次音量音量设置通过esp_codec_dev_set_out_vol写入 ES8311。4.4 电源管理ADC 实时电量检测power_manager.h 实现了PowerManager对应 README 中通过 IO18 ADC 实时检测电量的声明采样与滤波InitializeAdc将BATTERY_LEVEL_PINGPIO18配置为单次 ADConeshot12 位位宽、12 dB 衰减每 1 秒定时采样一次维护 10 个样本的滑动窗口取平均值抑制瞬时抖动。电量换算CalculateBatteryLevel将平均 ADC 值线性映射到百分比——ADC 值 ≤ 2048 记为 0%≥ 2330 记为 100%中间按比例换算BATTERY_LEVEL_MIN/BATTERY_LEVEL_MAX定义于该类。充电检测BATTERY_CHARGING_PINGPIO47作为充电状态输入带 5 次去抖当电量已达 100% 时IsCharging()返回 false不再显示充电中。该电源信息通过AIVOX3::GetBatteryLevelai_vox3_board.cc上报给上层应用用于状态栏电量图标与低电量提示。4.5 LCD 显示与背光ai_vox3_board.cc 中SPI 总线使用SPI3_HOST最高 40 MHz 时钟MOSIGPIO21、CLKGPIO17、CSGPIO15、DCGPIO14复位脚GPIO_NUM_NC由板载电路自动复位。面板为 ST7789 驱动、16 bit 像素、240×240 分辨率DISPLAY_INVERT_COLORtrue、RGB 顺序、无镜像/无坐标交换参数定义于 config.h。背光由PwmBacklight驱动GPIO16非反相输出开机时RestoreBrightness()恢复上次亮度。4.6 按键交互逻辑板载 3 个按键见 ai_vox3_board.cc按键GPIO单击长按双击BOOT 键GPIO0配网模式 / 切换聊天状态切换 Wi-Fi/4G 网络切换 AEC 开关需CONFIG_USE_DEVICE_AEC音量GPIO46音量 10音量设为 100最大—音量-GPIO45音量 −10静音—音量调节通过codec-output_volume() ± 10步进上限 100、下限 0并在 LCD 上弹出音量通知Lang::Strings::VOLUME/MAX_VOLUME/MUTED多语言字符串长按可一键最大音量或静音方便免唤醒操作。五、核心引脚速查表以下引脚分配全部来自 config.h供硬件接线与二次开发参考功能引脚说明I2S MCLK / BCLK / WSGPIO11 / GPIO10 / GPIO8音频时钟I2S DOUT / DINGPIO7 / GPIO9音频数据输出/输入编解码器 I2C SDA / SCLGPIO13 / GPIO12ES8311 控制总线电源 PA 引脚GPIO_NUM_NC由板载电路管理板载 RGB LEDGPIO41WS2812B 状态灯BOOT / 音量 / 音量-GPIO0 / GPIO46 / GPIO45交互按键LCD 背光GPIO16PWM 背光LCD MOSI / CLK / DC / CSGPIO21 / GPIO17 / GPIO14 / GPIO15ST7789 SPI 接口电池 ADC / 充电检测GPIO18 / GPIO47电量与充电状态ML307 串口 TX / RXGPIO44 / GPIO434G 模块通信六、固件构建与烧录AI-VOX3 属于 ESP32-S3 平台板卡遵循仓库主分支推荐的 ESP-IDF 开发流程项目 README 建议使用 ESP-IDF v6.0.2该板卡已在 IDF 6.0.1 验证通过。常规步骤如下准备环境安装 ESP-IDF v6.0.x主分支推荐版本建议使用 Linux 以获得更快编译速度与更少驱动问题。选择目标芯片并配置板卡idf.py set-target esp32s3 idf.py menuconfig在 menuconfig 中选择 Board Type 为NullLab AI Vox V3对应CONFIG_BOARD_TYPE_AI_VOX3见 main/Kconfig.projbuild。编译idf.py build注意该板卡的 config.json 会追加CONFIG_ESP_CONSOLE_NONEy因此固件默认不输出 ESP 日志到串口——如需查看日志请通过 WebSocket/MQTT 调试通道或自行调整该配置项。烧录与监控idf.py -p /dev/ttyUSB0 flash monitor设备通过 Type-C 口供电并下载程序。首次使用需通过手机热点/配网流程连接服务器可注册 xiaozhi.me 账号免费体验 Qwen 实时语音模型如需自建服务端可参考仓库 README 中列出的 xiaozhi-esp32-server 系列开源项目。七、总结与扩展建议AI-VOX3 是一块音频全双工 双网络 彩屏显示 电池供电高度集成的 AI 语音开发板在本仓库中的适配已覆盖构建配置、板级驱动、电源管理与交互逻辑全链路。对于开发者而言可以在此基础上通过BOOT 键长按在 Wi-Fi 与 ML307 4G 间切换评估两种联网方案的场景适用性借助8 个 GPIO 排针与 PH2.0 接口接入传感器、电机MD40 驱动板或扩展板结合设备端 MCP 实现 AI 可见的 IoT 控制参见 MCP 协议文档在 main/boards/nulllab-ai-vox-v3 目录基础上修改 config.h 引脚映射快速适配同型号衍生产品。若你希望基于本项目自研板卡可参考仓库的 自定义板卡指南 与 ESP-IDF 6.0 迁移指南以 AI-VOX3 的板级实现为模板在数小时内完成新板卡的接入与编译验证。【免费下载链接】xiaozhi-esp32An MCP-based chatbot | 一个基于MCP的聊天机器人项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考