A retro-style internet radio for ESP32 with touchscreen interface.
Retrodio is an ESP32-based internet radio player featuring a graphical user interface for browsing and playing streaming radio stations. Built for the WT32-SC01 Plus development board with integrated touchscreen display.
- Stream internet radio stations over WiFi
- Touchscreen GUI for easy station selection
- Add, edit, and delete radio stations
- Volume control with visual feedback
- OTA (Over-The-Air) firmware updates
- Web server for remote management
- Persistent station storage
- Board: WT32-SC01 Plus (ESP32-S3, 16MB Flash, 2MB PSRAM)
- Display: 480x320 touchscreen (integrated on WT32-SC01 Plus)
- Audio: I2S DAC (connected via I2S interface)
- PlatformIO
- LovyanGFX - Graphics library
- ESP32-audioI2S - Audio streaming
- ArduinoJson - JSON parsing
- Install PlatformIO
- Clone this repository
# Build for USB upload
pio run -e usb
# Build for OTA update
pio run -e ota# Upload via USB
pio run -e usb -t upload
# Upload via OTA (requires device on network)
pio run -e ota -t uploadpio device monitor -b 115200WiFi credentials and radio stations are configured through the touchscreen interface on first boot.
src/
├── main.cpp - Main application entry
├── RadioWindow.* - Main radio interface
├── WifiWindow.* - WiFi configuration
├── AddStationWindow.* - Add/edit stations
├── StationManager.* - Station list management
├── AudioHandlers.* - Audio streaming handlers
├── NetworkHandlers.* - WiFi/network management
├── WebServer.* - Web interface
├── OTAHandler.* - OTA update handling
└── GlobalState.h - Shared application state
This project is licensed under CC BY-NC-SA 4.0 (Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International).
For personal/educational use only. Commercial use requires permission. See LICENSE for details.
felangga - GitHub
- ESP32 community
- LovyanGFX graphics library
- ESP32-audioI2S audio library