Most internet radio builds I have seen end up as a knob, a menu and a long list of station names to scroll through. This one takes a different route: you tap a world map on a touchscreen, drilling down from region to country to station, and playback starts. With roughly 3,700 tested stations from 207 countries, the map actually earns its place as the main interface. It is free and open source, which makes it easy for anyone to dig in.
The hardware side is a Freenove FNK0104 board with an ESP32-S3, a 2.8-inch capacitive touch screen at 240x320, an ES8311 codec and 8 MB of PSRAM. The firmware stacks LVGL 8 with LovyanGFX for the UI and ESP32-audioI2S for MP3 and AAC streams, with the station list kept in LittleFS. Audio runs on one core and the UI on the other, which seems a sensible split for keeping taps responsive while a stream plays. The RGB LED following the audio level is a nice touch.
The case was designed in SolidWorks and prints in PETG at 0.2 mm layer height with no supports, taking about 1 h 45 min and 50 g. It is a two-part design with a yellow front bezel and a white rear cover, mounted with four M3 by 5 mm screws for the board and four M3 by 8 mm screws for the back. One fix along the way: the included speaker leads were too short, so extra wire was soldered on and insulated with heat-shrink tubing.
Two trade-offs worth knowing before starting: the device runs from a USB-C charger or power bank with no battery, and Wi-Fi is 2.4 GHz only, so 5 GHz networks will not appear. Also, the non-touch version of the board will not work, so the exact board matters. Installing takes about 2 minutes through Chrome or Edge, and after that no computer is needed.
Project by Adrian Cubas . Watch it on their YouTube channel: