A modular, open-source smart speaker platform built around the ESP32 ecosystem.
Wavelet is a family of ESP32-based smart speakers built from a single shared codebase.
Each model targets a different use case, from a compact BLE-enabled desktop speaker to a future high-power smart speaker, while sharing the same firmware architecture through PlatformIO environments and compile-time feature flags.
The project is currently undergoing a major rewrite focused on modular firmware, modern embedded UI with LVGL and EEZ Studio, BLE onboarding, and a Flutter companion application.
| Model | Target | Current Status |
|---|---|---|
| Wavelet Mini | ESP32-S3 | Active development |
| Wavelet Regular | ESP32-WROOM-32 | Being migrated to the new architecture |
| Wavelet Max | ESP32-S3 | Planned |
The Mini is the current focus of development and serves as the foundation for the rest of the Wavelet ecosystem.
It features:
- ESP32-S3
- LVGL + EEZ Studio interface
- QR-code BLE onboarding
- Wi-Fi provisioning
- Spotify API integration
- Battery monitoring
- RTC support
- Touchscreen interface
Unlike previous versions, the Mini no longer supports Bluetooth Classic audio. Instead, it focuses on becoming a connected smart speaker controlled through the companion app.
The Regular is the original portable stereo speaker.
The firmware is currently being migrated to the new modular architecture after much of the original implementation was replaced during Mini development.
Planned features include:
- Stereo audio
- Physical controls
- Battery operation
- Companion app support
The Max is the planned flagship model.
It is intended to become a wall-powered smart speaker with significantly more processing power and expanded connectivity.
Development has not yet started as the required hardware is still being acquired.
| Feature | Mini | Regular | Max |
|---|---|---|---|
| BLE Onboarding | ✓ | Planned | Planned |
| LVGL + EEZ Studio | ✓ | N/A | N/A |
| Companion App Pairing | ✓ | Planned | Planned |
| Wi-Fi Provisioning | ✓ | N/A | Planned |
| Physical Buttons | In Progress | In Progress | Planned |
| Battery Monitoring | In Progress | Untested | N/A |
| Spotify API | In Progress | N/A | Planned |
| Bluetooth Audio | N/A | Broken (rewrite in progress) | N/A |
| OTA Updates | Planned | Planned | Planned |
| Clock Faces | Planned | N/A | N/A |
esp32-smart-speaker/
├── assets/
├── data/
├── esp32-smart-speaker-schema/
├── include/
├── lib/
├── src/
│ ├── audio/
│ ├── ble/
│ ├── core/
│ ├── input/
│ ├── mini/
│ ├── screens/
│ ├── spotify_controller/
│ ├── storage/
│ ├── web/
│ ├── wifi/
│ └── main.cpp
├── spk-sounds/
├── test/
├── wavelet_app/ Flutter companion app (Git submodule)
├── webpage_iterations/
└── platformio.ini
Clone the repository together with the companion app submodule.
git clone --recursive https://github.com/serenebliss0/wavelet.gitIf you've already cloned the repository:
git submodule update --init --recursiveInstall PlatformIO if needed.
pip install platformioBuild the desired firmware:
pio run -e minior
pio run -e regularor
pio run -e maxUpload to your board:
pio run -t upload -e mini- QR BLE onboarding
- LVGL integration
- EEZ Studio integration
- Companion app pairing
- Wi-Fi provisioning
- Clock faces
- Spotify interface
- Battery management
- Settings pages
- Restore Bluetooth audio
- Migrate to new architecture
- Companion app support
- Hardware prototype
- Firmware foundation
- Network services
- OTA updates
- Smart home integration
Wavelet includes a Flutter companion application used for:
- Onboarding
- BLE pairing
- Wi-Fi setup
- Device management
- Future firmware updates
The app lives in its own repository and is included here as a Git submodule.
Repository: https://github.com/serenebliss0/wavelet-app
- C++
- Arduino Framework
- PlatformIO
- LVGL 8.4
- EEZ Studio
- NimBLE
- ArduinoJson
- Flutter
- Dart
Contributions, suggestions and bug reports are always welcome.
If you have ideas or improvements, feel free to open an issue or submit a pull request.
MIT License
Made with ❤️ by Semire Ajayi



