Repository navigation
Conversation
lllwan
force-pushed
the
feat/duoduo-s3-voice
branch
4 times, most recently
from
October 6, 2026 12:52
a4f4e59 to
27318f5
Compare
A compact audio-first ESP32-S3 board with expansion headers for a TFT display, a DVP camera and an optional 4G modem, built around the WROOM-1 module (default N8R2 variant; an N8R8 build variant is provided for octal PSRAM modules on the same footprint). Audio needs no codec chip: an MP34DT05-A PDM MEMS microphone and a PT8211 I2S DAC feeding an NS4160 5W class-D amplifier are wired directly to the chip. The PDM mic captures at 32 kHz so the 64x PDM clock stays above the MP34DT05-A ~1.2 MHz power-down threshold, and the audio service resamples it for the wake-word engine. The NS4160 CTRL pin is driven by GPIO6, raised only after the I2S channel starts and lowered before teardown to avoid power-on pops (pattern from the T-Circle-S3 V1.1 board). The remaining interfaces follow existing board patterns: SPI TFT panels on an 8-pin header (ST7789/ILI9341/GC9A01 via the shared Kconfig LCD choice, like bread-compact-wifi-cam), an 8-bit DVP camera on a 2x8 header (Esp32Camera, QVGA by default so the framebuffer fits the 2 MB PSRAM alongside the LVGL pool and AFE models), and an ML307/EC801E Cat.1 modem on UART1 via DualNetworkBoard with WiFi as the default and a BOOT double-click to switch. The console runs on the USB-JTAG port so a single Type-C cable handles power, flashing and monitoring, leaving GPIO43/44 free for the modem. Bring-up was done on a breadboard with an INMP441 + MAX98357 front end (codec-less simplex I2S): boots, activates, Wi-Fi/MQTT connect, offline wake word (wn9_nihaoxiaozhi_tts via AFE) and full conversations all work. The final PDM + DAC/amplifier chain follows the same proven path used by the T-Circle-S3 V1.1 board. Co-Authored-By: Claude Code <noreply@anthropic.com>
lllwan
force-pushed
the
feat/duoduo-s3-voice
branch
from
October 6, 2026 13:00
27318f5 to
631b753
Compare
Owner
|
I checked the CI failure logs. The failure occurs in the
I reproduced both failures in a temporary copy of this PR's merge snapshot. After applying the minimal changes above, all 98 tests passed with |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A minimal audio-only ESP32-S3 board built around the WROOM-1 N8R2 module (8MB quad flash, 2MB quad PSRAM). An INMP441 I2S microphone and a MAX98357 amplifier are wired directly to the chip with no codec, so audio runs through the codec-less simplex I2S path. Only a BOOT button (GPIO0) and a status LED (GPIO45) are exposed; there is no display.
Because the board has no display, lv_init() is called in the board constructor: Assets::Apply() creates fonts through the LVGL allocator during activation, and every existing board initializes LVGL in its display constructor, so without it the device crash-loops right after the first network connect.
Tested on hardware: boots, activates, Wi-Fi/MQTT connect, offline wake word (wn9_nihaoxiaozhi_tts via AFE) and full conversations all work.