← All projects in the gallery

ORBITAL

by jonathan harrocks

A futuristic internet radio for LCDWIKI's 3.5-inch ESP32-S3 display (ES3C35P), and the design to reach for when you want to hear what the board's ES8311 codec can do. It is NEON DECK's radio underneath - the same player bindings, WiFi join and station table - with a portrait layout, a new look, and a real 16-bit audio path. WHY IT SOUNDS BETTER THAN NEON DECK NEON DECK plays through the ESP32's own 8-bit DAC, because that is all its board has. This board has an ES8311: a proper codec on I2S, fed a master clock at 256 times the sample rate so one set of dividers holds for every stream. The export sets the codec up over the same I2C bus the touch panel uses, then switches the speaker amplifier on by pulling GPIO 1 low - the board keeps it off until something does. There is PSRAM, so the stream buffer is twice NEON DECK's. THE VOLUME IS A DIAL, AND THE DIAL IS THE VOLUME The arc inside the ring is bound both ways to the player: drag it and the level changes; change the level anywhere else and it follows. The number on the core is the same value read back, and the line under it is the stream's own bitrate, live from the decoder. WHY THE METERS STAND UP A bar taller than it is wide is drawn vertically by LVGL, so the two meters are simply tall bars, bound to the left and right levels taken off the samples on their way out. The scale marks beside them are in the artwork, not widgets. WHY THE ARTWORK IS ONE PICTURE The ring, its tick scale, the orbit, the hex lattice and the plates the text sits on are a single full-screen image, drawn around this layout: the volume dial fits inside the scale ring, the readouts sit on its solid core so no line crosses them, and the ring stops short of the info plate. As widgets it would be dozens of objects; as a picture it is one blit. The panel is drawn a whole frame at a time anyway - its controller wants four-pixel-aligned windows - so a busy background costs nothing extra. The stations are SomaFM's and Nightride's long-running space and synth streams, all http and 128 kbps MP3. Swap them on the Data tab. Tap the network status at the top left to join WiFi, STATIONS for the list, and swipe down for the brightness.
Board
LCDWIKI 3.5" ESP32-S3 (ES3C35P)
MCU
ESP32-S3
Display
ST77922
Resolution
320 x 480
Touch
ST77922 (touch half)
LVGL
v9