Бюджетная версия XiaoZhi AI — реализация на плате ESP32

Бюджетная версия XiaoZhi AI — реализация на плате ESP32

«Бюджетная версия» — это сборка XiaoZhi AI на ранней плате ESP32 (не ESP32-S3 и не ESP32-C3). Обычно это плата с 4 МБ флеш-памяти и без внешней PSRAM, например NodeMCU-32S или ESP32-DevKitC. Ей соответствует семейство вариантов bread-compact-esp32 в прошивке upstream. Решение недорогое и подходит для первого знакомства, но возможностей у него немного меньше, чем у версии на ESP32-S3, см. ниже «1. Различия в возможностях».

1. Различия в возможностях

Upstream обрабатывает ESP32 иначе, чем S3, поэтому узнайте об этом заранее:

ПараметрESP32 (бюджетная)ESP32-S3
Движок аудиовходаLiteAudioEngine, необработанный моно PCMAfeAudioEngine, с эхоподавлением (AEC) и VAD
Локальное слово пробужденияПо умолчанию выключено; Wakenet model without AFE можно выбрать только при наличии PSRAMПри наличии PSRAM по умолчанию включено слово пробуждения AFE
Запуск диалогаКнопка; можно также использовать внешний модуль пробужденияСлово пробуждения или кнопка

Источники: upstream main/audio/README.md и main/Kconfig.projbuild. Поэтому плата ESP32 без PSRAM по умолчанию запускает диалог кнопкой или через внешний модуль пробуждения на GPIO19.

2. Варианты прошивки

Имена вариантов готовой прошивки соответствуют каталогам в upstream main/boards/:

ВариантЭкран
bread-compact-esp32OLED SSD1306 128x64
bread-compact-esp32-128x32OLED SSD1306 128x32
bread-compact-esp32-lcdLCD ST7789 (7-контактная конфигурация 240x240)

Полный список см. в разделе Поддерживаемые платы, а загрузку и прошивку — в разделе Загрузка и установка прошивки.

3. Оборудование и подключение

Кроме платы нужны те же компоненты, что и в руководстве по сборке оборудования: микрофон INMP441, усилитель MAX98357A, динамик, макетная плата и соединительные провода; экран необязателен. Выводы ниже взяты из bread-compact-esp32/config.h.

Микрофон (INMP441)

ESP32INMP441
GPIO25WS
GPIO26SCK
GPIO32SD
3V3VDD
GNDGND, а также соедините L/R

Усилитель (MAX98357A)

ESP32MAX98357A
GPIO33DIN
GPIO14BCLK
GPIO27LRC
3V3VIN
GNDGND

Выводы SD и GAIN обрабатываются так же, как в варианте на ESP32-S3, см. подключение усилителя в руководстве по сборке оборудования.

OLED (SSD1306, необязательно)

ESP32OLED
GPIO4SDA
GPIO15SCL
3V3VCC
GNDGND

Кнопки и прочие выводы

ВыводНазначение (по esp32_bread_board.cc)
GPIO0Кнопка BOOT: одно нажатие переключает диалог; при запуске одно нажатие включает режим настройки Wi-Fi
GPIO5Сенсор/кнопка: удерживайте, чтобы говорить, и отпустите, чтобы закончить (соответствует StartListening / StopListening)
GPIO19Вход от внешнего модуля пробуждения: одно нажатие равносильно фразе «你好小智»
GPIO2Встроенный светодиод
GPIO18Тестовый вывод управления лампой через MCP (LAMP_GPIO)

Вариант с LCD (bread-compact-esp32-lcd)

Экран переходит на интерфейс SPI с выводами MOSI GPIO4, CLK GPIO15, DC GPIO21 и RST GPIO18. У 7-контактного экрана нет вывода CS, подсветка подключается к GPIO22; у остальных моделей CS подключается к GPIO22, а подсветка — к GPIO23. Подключение аудио и кнопок такое же, как в таблицах выше.

4. Сборка и прошивка

Готовая прошивка: скачайте нужный вариант на странице Загрузка и установка прошивки и запишите его по адресу 0x0 так, как там описано. При прошивке подключайте плату к компьютеру отдельно, не оставляя её на уже собранной макетной плате, чтобы не мешать загрузке.

Самостоятельная сборка: подготовьте среду по разделу Настройка среды ESP-IDF, затем выполните команды из README платы в upstream:

idf.py set-target esp32
idf.py menuconfig
# Xiaozhi Assistant -> Board Type -> 面包板 ESP32 DevKit
idf.py build

Этот пункт меню в upstream подписан по-китайски: «面包板 ESP32 DevKit» означает «ESP32 DevKit на макетной плате».

5. Частые вопросы

  • Ошибка прошивки или стирания: снимите плату с макетной платы, подключите её к компьютеру отдельно и повторите; о других проблемах прошивки см. FAQ.
  • Сеть и настройка: порядок такой же, как в версии на ESP32-S3, см. Первый запуск и Настройку сети.
  • Нет слова пробуждения: это поведение ESP32 без PSRAM по умолчанию; используйте диалог по кнопке или подключите внешний модуль пробуждения.

Связанные материалы

Источники: main/boards/bread-compact-esp32/ и main/boards/bread-compact-esp32-lcd/ в 78/xiaozhi-esp32 v2.5.2.