CYD-GOLD — Internet Radio / MP3 Player / Alarm Clock on ESP32-S3 with LVGL and 3D-printed enclosure

Hi everyone!

I wanted to share a project I've been working on for several months — the CYD-GOLD, a fully custom internet radio, MP3 player and alarm clock built around an ESP32-S3 CYD board with a 2.8" capacitive touchscreen.

Everything was designed from scratch — firmware, UI and enclosure.


FEATURES

  • Web radio streaming over WiFi with scrollable station list and custom logos
  • MP3 player from SD card with shuffle mode and progress bar
  • Alarm clock with 3 modes: Radio / MP3 / Buzzer fallback (stored in Flash)
  • DS3231 RTC + NTP sync + 33 world timezones
  • WS2812B LED strip (7 LEDs) with 4 animation modes
  • 6 visual themes + 6 languages (FR/EN/ES/IT/DE/PT)
  • Password-protected web manager to add stations and upload MP3s
  • Deep sleep via slide switch (~10µA)
  • LiPo battery with ADC level reading

TECHNICAL HIGHLIGHTS

  • LVGL 8 with display buffer allocated in PSRAM (40 rows ~25KB freed vs SRAM)
  • Hardware esp_timer for the 1ms LVGL tick — independent of loop load
  • Full i18n system: one LangStrings struct, one pointer swap per language
  • Stream watchdog that auto-reconnects on silent stream failure
  • RTC stores UTC, localtime_r() converts via stored POSIX TZ string
  • WiFi auto-reconnect across all saved networks (up to 5)

HARDWARE

  • ESP32-S3 CYD 2.8" (ILI9341 + FT6336 touch + ES8311 audio codec onboard)
  • DS3231 RTC
  • 3W 4Ohm 50mm speaker
  • WS2812B x7 LED strip
  • 3.7V 2000mAh LiPo battery
  • Panel-mount USB-C connector
  • Micro SD extension with FPC cable

THE ENCLOSURE

8 parts printed in black PLA + Wood PLA slats for the vintage look.
The back panel has an integrated acoustic chamber behind the speaker.
Total print time ~12 hours.


LINKS

Source code (free / MIT):

3D files + full assembly guide on Cults3D:


Happy to answer any questions about the firmware or the enclosure!

C-R Teck

Nice project, thanks for sharing

Great job and the documentation is very inviting, thanks for posting it.