#0011 NTS Radio on an ESP32-S3
ESP32-S3 internet radio device that plays NTS radio, with a button to select Channel 1 or 2.
ESP32-S3 internet radio device that plays NTS radio, with a button to select Channel 1 or 2. The onboard screen shows the current show. Audio is line-level from a PCM5102 into an amp.
Parts
USB-C cable (power and flash)
Amp or speakers with a line input
Wiring
ESP32 → PCM5102:
3V → VIN
GND → GND
A0 (GPIO 18) → BCK
A1 (GPIO 17) → WSEL
A2 (GPIO 16) → DIN
Button:
One side → pin 5 (silkscreen 5, above SCL)
Other side → GND
Power:
USB-C on the ESP32. DAC VIN from Feather 3V.
Firmware
PlatformIO, Arduino, board adafruit_feather_esp32s3_tft.
ESP32-audioI2S 2.0.6 — stream decode, I2S out
ArduinoJson — live metadata
Adafruit GFX + ST7789 — display
On boot: connect Wi-Fi (WiFiMulti), start Channel 1, draw channel, title, location.
Every 25 seconds: GET https://www.nts.live/api/v2/live, keep broadcast_title and location_long for the active channel.
Streams:
Channel 1: https://stream-relay-geo.ntslive.net/stream?client=direct
Channel 2: https://stream-relay-geo.ntslive.net/stream2?client=direct
Firmware volume is 21/21. Use the amp for level.
platformio.ini and main.cpp (Wi-Fi names and passwords replaced with placeholders):
Replace YOUR_WIFI_NAME / YOUR_WIFI_PASSWORD in the gist before flashing.
Not an official NTS product. Public live streams only.
