小智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,原始單聲道 PCM | AfeAudioEngine,帶回聲消除(AEC)與 VAD |
| 本機喚醒詞 | 預設關閉;僅在帶 PSRAM 時可選 Wakenet model without AFE | 帶 PSRAM 時預設啟用 AFE 喚醒詞 |
| 對話觸發 | 按鍵對話;也可用外接喚醒模組觸發 | 喚醒詞或按鍵 |
依據:上游 main/audio/README.md 與 main/Kconfig.projbuild。因此沒有 PSRAM 的 ESP32 板預設靠按鍵觸發對話,或透過 GPIO19 接外接喚醒模組。
二、韌體變體
預編譯韌體的變體名與上游 main/boards/ 下的目錄對應:
| 變體名 | 螢幕 |
|---|---|
bread-compact-esp32 | OLED SSD1306 128x64 |
bread-compact-esp32-128x32 | OLED SSD1306 128x32 |
bread-compact-esp32-lcd | ST7789 LCD(7 針 240x240 配置) |
三、硬體與接線
除開發板外,所需元件與硬體搭建指南相同:INMP441 麥克風、MAX98357A 功放、喇叭、麵包板和杜邦線;螢幕為可選項。以下引腳取自 bread-compact-esp32/config.h。
麥克風(INMP441)
| ESP32 | INMP441 |
|---|---|
| GPIO25 | WS |
| GPIO26 | SCK |
| GPIO32 | SD |
| 3V3 | VDD |
| GND | GND,並短接 L/R |
功放(MAX98357A)
| ESP32 | MAX98357A |
|---|---|
| GPIO33 | DIN |
| GPIO14 | BCLK |
| GPIO27 | LRC |
| 3V3 | VIN |
| GND | GND |
SD、GAIN 引腳的處理與 ESP32-S3 方案一致,見硬體搭建指南的功放接線。
OLED(SSD1306,可選)
| ESP32 | OLED |
|---|---|
| GPIO4 | SDA |
| GPIO15 | SCL |
| 3V3 | VCC |
| GND | GND |
按鍵與其他引腳
| 引腳 | 作用(來自 esp32_bread_board.cc) |
|---|---|
| GPIO0 | BOOT 按鈕:單擊切換對話;啟動階段單擊進入 Wi-Fi 配網模式 |
| GPIO5 | 觸控/按鍵:按住說話,鬆開結束(對應 StartListening / StopListening) |
| GPIO19 | 外接喚醒模組觸發輸入:單擊等同於說出「你好小智」 |
| GPIO2 | 板載 LED |
| GPIO18 | MCP 燈控測試引腳(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 的預設行為,使用按鍵對話,或接外接喚醒模組。
相關文檔
- 硬體搭建指南:ESP32-S3 麵包板方案
- 支援的開發板:全部韌體變體
- 自訂 Assets 指南:自訂字型、表情與喚醒詞
對照來源:78/xiaozhi-esp32 v2.5.2 的 main/boards/bread-compact-esp32/、main/boards/bread-compact-esp32-lcd/。