Radio: Build the $15 ESP32 Internet Player in a Weekend
Volos Projects built a compact internet radio using a $15 Waveshare ESP32-S3 1. 54-inch LCD development board, recreating the tactile, retro listening experience with physical buttons and a Winamp-styled interface. The device pairs a 240×240 color display with an ES8311 audio codec and an NS4150B amplifier, and it can run from a 1, 000 mAh battery tucked into the dev kit case. Builders can reproduce the project with the listed Arduino-compatible libraries and a small set of hardware tweaks.
Radio hardware and specs
The core kit is the Waveshare ESP32-S3-LCD-1. 54 development board centered on an ESP32-S3 system-on-chip. The board integrates a 240×240 color display, an ES8311 digital-to-analog audio codec, and an onboard NS4150B amplifier able to deliver up to 3 watts of output. The stock case has internal space for a 1, 000 mAh lithium battery, saving effort on custom enclosures and enabling portable use. Three physical buttons on the case handle station navigation and volume, and a single button serves to wake or suspend the system a low-power sleep mode.
Software, controls and playback
The build uses Arduino-compatible libraries to drive audio and graphics. Key libraries named for the sketch include esp32-audio-I2S-master 3. 4. 0, GFX Library for Arduino 1. 6. 0, LovyanGFX 1. 2. 19, and Arduino WiFiMulti 1. 0. 0. The interface renders station names, song metadata, Wi-Fi signal strength and stream bitrate in a Winamp-styled layout created with LovyanGFX and Arduino GFX. Connectivity is handled over Wi‑Fi, pulling live streams from publicly available sources; 128 kbps streams are recommended for optimal audio quality. An onboard SD card slot allows offline MP3 playback so the device can double as a portable player.
The project demonstrates simple hardware expansion. Builders can connect larger speakers or add a 3. 5 mm jack using a voltage divider to interface safely with headphones or external amplifiers. The minimal software approach keeps memory use low and maintains responsive performance while buffering streamed audio.
What’s next for builders
The design leaves room for customization: users can change the station list in the sketch, tweak the UI for different resolutions or swap in other ESP32 platforms that include a display and an ES8311 codec. Upgrading the internal speaker, adding a dedicated power switch or adapting the code to support additional features are straightforward steps for hobbyists comfortable with the Arduino IDE and the named libraries. The project is presented as an easy, inexpensive weekend build that restores a tactile listening experience while offering offline playback and external audio options.
For those assembling the kit, the combination of the Waveshare development board, the ES8311 codec, the NS4150B amplifier and the listed Arduino libraries provides a clear parts-and-software path to a working internet radio that fits in the shipped case and runs from battery power.