6.9 KiB
Implementation Summary: Waveshare ESP32-S3-AUDIO-Board + 1.47" Touch LCD
✅ Implementation Complete
All features have been successfully implemented for the Waveshare ESP32-S3-AUDIO-Board with the 1.47" Touch LCD display.
What Was Implemented
1. Display Configuration ✅
File: xiaozhi-esp32/main/boards/waveshare-s3-audio-board/config.h
- Added
CONFIG_AUDIO_BOARD_LCD_JD9853_1P47configuration section - Resolution: 172×320 pixels (portrait mode)
- Display driver: JD9853
- Touch controller: AXS5106L (I2C address 0x3B)
- Proper display transformations (swap_xy, mirror_x, mirror_y)
- Display offset compensation (Y offset: 34 pixels)
2. Build Variant ✅
File: xiaozhi-esp32/main/boards/waveshare-s3-audio-board/config.json
- Added new build variant:
waveshare-s3-audio-board-1.47lcd - Includes all camera configurations (OV2640/OV5640)
- WeChat message style enabled
- All features enabled: audio, camera, touch, RGB LEDs
3. Touch Controller Integration ✅
File: xiaozhi-esp32/main/boards/waveshare-s3-audio-board/esp32-s3-audio_board.cc
- Implemented
InitializeTouch()method using AXS15231B driver (compatible with AXS5106L) - I2C-based touch controller initialization
- LVGL touch integration for UI interaction
- Touch configuration: 172×320 resolution with proper coordinate mapping
- Conditional compilation for 1.47" LCD variant only
4. Dark Mode Support ✅
File: xiaozhi-esp32/main/boards/waveshare-s3-audio-board/esp32-s3-audio_board.cc
- Implemented
InitializeTools()method with MCP tools - Added
self.display.set_themetool for switching themes (light/dark) - Added
self.display.get_themetool for querying current theme - Theme settings persist across reboots
- Dark mode optimized for 1.47" display viewing
5. Font Optimization ✅
File: xiaozhi-esp32/main/CMakeLists.txt
- Conditional font configuration based on LCD variant
- 1.47" LCD uses smaller fonts:
font_puhui_basic_14_1andfont_awesome_14_1 - Smaller emoji collection:
twemoji_32(optimized for small screen) - Better readability on the 172×320 display
6. Kconfig Integration ✅
File: xiaozhi-esp32/main/Kconfig.projbuild
- Added LCD type selection option: "JD9853 1.47inch Touch LCD 172*320 (with AXS5106L touch)"
- Accessible via menuconfig under
ESP32S3_AUDIO_BOARD LCD Type - Allows easy switching between display variants
7. Comprehensive Documentation ✅
File: xiaozhi-esp32/main/boards/waveshare-s3-audio-board/README.md
- Complete hardware specifications
- All supported display configurations documented
- Pin mappings for all peripherals
- Build instructions (both automated and manual)
- Usage guide with dark mode and touch controls
- Troubleshooting section
- Links to official Waveshare documentation
Hardware Features Supported
✅ Audio:
- ES8311/ES7210 audio codecs
- Dual digital microphones
- Speaker/headphone output
- Echo cancellation & noise reduction
✅ Display:
- 1.47" Touch LCD (172×320 pixels)
- JD9853 display driver
- AXS5106L touch controller
- Dark mode theme
- LVGL UI with optimized fonts
✅ Camera:
- OV2640 support
- OV5640 support
- DVP interface
- Auto-detection enabled
✅ RGB LEDs:
- 7x addressable LEDs
- Circular arrangement
- Animation support
✅ Wake Word Detection:
- ESP-SR offline recognition
- Dual microphone array
- Customizable wake words
✅ Connectivity:
- WiFi configuration mode
- MQTT/WebSocket protocols
- OTA firmware updates
Build Instructions
Method 1: Automated Build (Recommended)
cd xiaozhi-esp32
# Build the 1.47" Touch LCD variant
python scripts/release.py waveshare-s3-audio-board-1.47lcd
# Or build all variants
python scripts/release.py waveshare-s3-audio-board
Method 2: Manual Build with ESP-IDF
cd xiaozhi-esp32
# Set target
idf.py set-target esp32s3
# Configure
idf.py menuconfig
# Navigate to: Xiaozhi Assistant → Board Type
# Select: Waveshare ESP32-S3-Audio-Board
# Navigate to: ESP32S3_AUDIO_BOARD LCD Type
# Select: JD9853 1.47inch Touch LCD 172*320 (with AXS5106L touch)
# Build
idf.py build
# Flash
idf.py flash monitor
Testing Checklist
Before deploying to production, test the following features:
Display Tests
- Display initializes correctly
- LVGL UI renders at 172×320 resolution
- Text is readable with optimized fonts
- Emojis display correctly at 32×32 size
- Display offset is correct (no clipping)
Touch Tests
- Touch responds to screen taps
- Touch coordinates are accurate
- Touch works during WiFi configuration
- Touch works during normal operation
- LVGL touch events are properly handled
Audio Tests
- Microphones capture audio correctly
- Speaker output is clear
- Echo cancellation works
- Wake word detection responds
- Audio playback functions
Theme Tests
- Light theme displays correctly
- Dark theme displays correctly
- Theme switching via MCP works
- Theme setting persists after reboot
- Text is readable in both themes
Camera Tests
- Camera is detected on boot
- Image capture works (OV2640/OV5640)
- Images display on LCD
- No interference with display SPI
LED Tests
- RGB LEDs light up on boot
- LED animations work
- LEDs respond to voice activity
- LED colors are correct
Integration Tests
- All features work simultaneously
- No resource conflicts (SPI/I2C)
- System is stable during extended use
- OTA updates work correctly
File Changes Summary
| File | Changes |
|---|---|
config.h |
Added 1.47" LCD configuration with touch settings |
config.json |
Added new build variant for 1.47" LCD |
esp32-s3-audio_board.cc |
Added touch initialization and MCP tools |
Kconfig.projbuild |
Added LCD type selection option |
CMakeLists.txt |
Added conditional font configuration |
README.md |
Complete documentation rewrite |
Dependencies
All required dependencies are already included in idf_component.yml:
- ✅
espressif/esp_lcd_axs15231b(for touch controller) - ✅
lvgl/lvgl(for UI) - ✅
esp_lvgl_port(for LVGL integration) - ✅
espressif/esp-sr(for wake word) - ✅ All display and audio codec drivers
Next Steps
- Build the firmware using the instructions above
- Flash to the hardware
- Test all features using the checklist
- Configure WiFi on first boot
- Test voice interaction with wake word
- Test dark mode via voice command or MCP tool
Support
For issues or questions:
- Check the README
- Review Custom Board Guide
- Consult Waveshare Wiki
Implementation Date: January 19, 2026
Firmware Version: v2.x
Target Hardware: Waveshare ESP32-S3-AUDIO-Board + 1.47" Touch LCD
Status: ✅ Complete and ready for testing