小智AI丐版 - ESP32開發板實現方案

小智AI丐版 - ESP32開發板實現方案

「丐版」指用早期的 ESP32 開發板(不是 ESP32-S3 或 ESP32-C3)搭建小智AI,常見的是 4 MB Flash、沒有外接 PSRAM 的板子,例如 NodeMCU-32S、ESP32-DevKitC。它對應上游韌體的 bread-compact-esp32 系列變體,成本低,適合入門體驗;能力上比 ESP32-S3 版本少一些,見下文「一、能力差異」。

一、能力差異

上游對 ESP32 的處理方式與 S3 不同,使用前請先了解:

項目ESP32(丐版)ESP32-S3
音訊輸入引擎LiteAudioEngine,原始單聲道 PCMAfeAudioEngine,帶回聲消除(AEC)與 VAD
本機喚醒詞預設關閉;僅在帶 PSRAM 時可選 Wakenet model without AFE帶 PSRAM 時預設啟用 AFE 喚醒詞
對話觸發按鍵對話;也可用外接喚醒模組觸發喚醒詞或按鍵

依據:上游 main/audio/README.md 與 main/Kconfig.projbuild。因此沒有 PSRAM 的 ESP32 板預設靠按鍵觸發對話,或透過 GPIO19 接外接喚醒模組。

二、韌體變體

預編譯韌體的變體名與上游 main/boards/ 下的目錄對應:

變體名螢幕
bread-compact-esp32OLED SSD1306 128x64
bread-compact-esp32-128x32OLED SSD1306 128x32
bread-compact-esp32-lcdST7789 LCD(7 針 240x240 配置)

完整清單見支援的開發板,下載與燒錄見韌體下載與安裝。

三、硬體與接線

除開發板外,所需元件與硬體搭建指南相同: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)
GPIO0BOOT 按鈕:單擊切換對話;啟動階段單擊進入 Wi-Fi 配網模式
GPIO5觸控/按鍵:按住說話,鬆開結束(對應 StartListening / StopListening)
GPIO19外接喚醒模組觸發輸入:單擊等同於說出「你好小智」
GPIO2板載 LED
GPIO18MCP 燈控測試引腳(LAMP_GPIO)

LCD 變體(bread-compact-esp32-lcd)

螢幕換用 SPI 介面,引腳為 MOSI GPIO4、CLK GPIO15、DC GPIO21、RST GPIO18;7 針屏無 CS 引腳,背光接 GPIO22,其餘款式 CS 接 GPIO22、背光接 GPIO23。音訊與按鍵接線與上表相同。

四、編譯與燒錄

使用預編譯韌體:在韌體下載與安裝頁下載對應變體,按其中的方法寫入位址 0x0。燒錄時建議把開發板單獨接到電腦,不要插在已接線的麵包板上,以免干擾下載。

自行編譯:先按 ESP-IDF 開發環境搭建準備環境,再執行上游板級 README 給出的命令:

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

五、常見問題

  • 燒錄出錯或擦除失敗:把開發板從麵包板上取下,單獨連線電腦後重試;其他燒錄問題見常見問題。
  • 聯網與配網:流程與 ESP32-S3 版本相同,見首次啟動與網路配置。
  • 沒有喚醒詞:這是沒有 PSRAM 的 ESP32 的預設行為,使用按鍵對話,或接外接喚醒模組。

相關文檔

對照來源:78/xiaozhi-esp32 v2.5.2 的 main/boards/bread-compact-esp32/、main/boards/bread-compact-esp32-lcd/。