Radio mit ESP32

Kate­go­rien: ,



Ziel des Projekts

Ein ESP32 soll zusam­men mit einem mp3-Deco­der als Inter­net­ra­dio funk­tio­nie­ren. Mit einer Fern­be­die­nung kann der Sen­der gewech­selt und der Ton lei­ser oder lau­ter ein­ge­stellt wer­den.

Der ESP32 sucht sich selbst­stän­dig das WiFi-Netz mit der größ­ten Signal­stär­ke, dadurch kann das Radio in WiFi-Net­zen mit Repea­tern ein­ge­setzt wer­den ohne dass WiFi-Daten neu ein­ge­ge­ben wer­den müs­sen. Natür­lich kann auch ein die Woh­nung umspan­nen­des ein­zel­nes WiFi-Netz ver­wen­det wer­den.

Die Tas­ten der Fern­be­die­nung:

  • Pfeil nach rechts: nächs­ter Sen­der
  • Pfeil nach links: vor­he­ri­ger Sen­der
  • Pfeil nach unten: lei­ser
  • Pfeil nach oben: lau­ter
  • #: Ton aus, erneu­te Betä­ti­gung: Ton an
  • Zif­fern­tas­ten: Sen­der 1 – 10 (0 = 10)
  • *: Hin­ter­grund­be­leuch­tung ein-/aus­schal­ten
  • OK: Titel aus­blen­den (wird erst bei der nächs­ten Info akti­viert)

Auf dem LCD wird der Sen­der, die Laut­stär­ke und ein Teil der vom Sen­der über­mit­tel­ten Infor­ma­tio­nen dar­ge­stellt. Das sind der Titel des lau­fen­den Songs, Infos zum Sen­der oder zu aktu­el­len Ereig­nis­sen und häu­fig ein kur­zer Wet­ter­be­richt. Aller­dings über­schrei­ten die­se Infor­ma­ti­on oft die zur Ver­fü­gung ste­hen­den 40 Zei­chen. Daher wer­den sie abge­schnit­ten, ein kor­rek­ter Zei­len­um­bruch fin­det auch nicht statt.

Radio Pla­ti­ne Dan­ke an Nor­bert Schrills

Benötigte Bauteile

  • mp3-Deco­der VS1053
  • ⇒4-zei­li­ges LCD mit I²C-Schnitt­stel­le
  • Lei­tungs­dräh­te
  • Infra­rot-Modul und belie­bi­ge Fern­be­die­nung

Der Schaltplan

Der mp3-Deco­der VS1053 wird über SPI ange­schlos­sen
(X)DCS (5)DREQ (4)COPI (23)GND5V
(X)CS (16)
XRST (EN)
SCK (18)CIPO (19)frei

Konfiguration des Mikrocontrollers

Das Programm

Benötigte Bibliotheken

Biblio­thek  🔗ESP_VS1053_Library

Biblio­thek  🔗ESP32_VS1053_Stream

Bei­de Biblio­the­ken müs­sen als zip-Datei her­un­ter gela­den wer­den. Kli­cke auf der Web­sei­te auf den grü­nen But­ton und füge die Biblio­thek mit Sketch -> zip-Biblio­thek hin­zu..

Minimalistischer Player

Als Sen­der ist WDR4 ein­ge­stellt. Die Sen­der stel­len Meta­da­ten zur Ver­fü­gung. Sie wer­den im Seri­el­len Moni­tor ange­zeigt.

Mit Fernbedienung

Der Pro­gramm­code berück­sich­tigt die­se bei­den gebräuch­li­chen Fern­be­die­nun­gen. Die Tas­ten­codes ande­rer Fern­be­die­nun­gen kannst du mit ⇒die­sem Pro­gramm her­aus­fin­den.

Keyes Fernbedienung
Fernbedienung Pfeile unten
  • ab Zei­le 157 wer­den die ver­füg­ba­ren WiFi-Net­ze als Wer­te-Paar defi­niert:
    SSID des Routers/Repeaters, Pass­wort
    WiFiNetzwerke.addAP("Router_SSID", "xxxxxxxx");
    WiFiNetzwerke.addAP("Repeater_1", "xxxxxxxx");
  • das Pro­gramm ver­sucht eine WiFi-Ver­bin­dung mit dem WiFi-Netz mit der größ­ten Signal­stär­ke (RSSI) auf­zu­bau­en
    gelingt das nicht, wird das Pro­gramm mit einem ent­spre­chen­den Hin­weis been­det
  • die Signal­stär­ke des WiFi-Netz­werks ent­schei­det über einen stö­rungs­frei­en Radio­emp­fang
    bei einer ein­ge­schränk­ten Signal­stär­ke wird eine War­nung ein­ge­blen­det
  • Wenn du die Sen­der­lis­te erwei­tern willst, musst du die Stream-Adres­se des neu­en Sen­ders an belie­bi­ger Posi­ti­on im Array Sen­der hin­zu­fü­gen. Die Lis­te mit den Beschrei­bun­gen musst du mit dem Namen des neu­en Sen­ders an der glei­chen Posi­ti­on erwei­tern.
  • kann der Deco­der nicht gestar­tet wer­den, wird das Pro­gramm mit einem ent­spre­chen­den Hin­weis been­det
  • war der Start erfolg­reich, wer­den ver­schie­de­ne Sta­tus­mel­dun­gen ein­ge­blen­det

Erfahrungen im Betrieb

  • Alle Sen­der bie­ten ihre Streams auch in einer SSL-Vari­an­te an. Im Pro­gramm ver­wen­de ich die Ver­si­on ohne SSL.
    Du kannst bei­de Vari­an­ten tes­ten, grund­sätz­lich wür­de ich die SSL-Vari­an­te bevor­zu­gen, die aber lei­der nicht immer stö­rungs­frei lau­fen.
  • beim Start kann mög­li­cher­wei­se der Codec des Streams nicht ermit­telt wer­den (Codec STOPPED)
    das Pro­gramm muss neu gestar­tet wer­den
  • wenn es zu Unter­bre­chun­gen des Radio-Streams kommt …
    Miss die ⇒Signal­stär­ke und ände­re den Stand­ort des Radi­os

    Ände­re die Datei /libraries/ESP32_VS1053_Stream/src/ESP32_VS1053_Stream.h

    erhö­he das Time­Out
    Zei­le 15f:
    define VS1053_CONNECT_TIMEOUT_MS 500
    define VS1053_CONNECT_TIMEOUT_MS_SSL 750


    VS1053_STREAM_TIMEOUT_MS ver­grö­ßern
    Zei­le 17
    define VS1053_STREAM_TIMEOUT_MS 1200

    set­ze VS1053_PSRAM_BUFFER_SIZE her­auf
    Zei­le 23
    define VS1053_PSRAM_BUFFER_SIZE 131072

    Puf­fer für die Meta­da­ten ver­grö­ßern
    Zei­le 25:
    constexpr size_t VS1053_LOCALBUFFER_SIZE = 8192;

    Nach jedem Update der Biblio­thek müs­sen die Ände­run­gen erneut ein­ge­ge­ben wer­den.

    akti­vie­re den inter­nen PSRAM des ESP32
  • im Pro­gramm kannst du Varia­blen ändern um unnö­ti­ge WiFi-Zugrif­fe zu unter­bin­den:
    Titel­an­zei­gen auf fal­se set­zen (Zei­le 40)
    Anzei­ge­Zeit auf fal­se set­zen (Zei­le 41)
  • im Pro­gramm wird der Sleep-Modus von WiFi bereits ver­hin­dert
    mög­li­cher­wei­se ist der Effekt grö­ßer, wenn der Power­safe-Modus (PS) des ESP deak­ti­viert wird
    Im Pro­gramm sind zwei Ergän­zun­gen nötig:
    zusätz­li­che Biblio­thek:
    #include "esp_wifi.h"
    Im set­up-Teil hin­zu­fü­gen:
    esp_wifi_set_ps(WIFI_PS_NONE);

Sen­der in der SSL-Vari­an­te (Bei­spie­le)

Quellen


Ähnliche Projekte


Letzte Aktualisierung: Juni 5, 2026 @ 9:05