Einfaches WEB-Radio mit dem ESP32 Audio-Kit

Update: August 2026

Das ESP32 Audio-Kit von AI Thinker ist für Entwickler oder experimentierfreudige Bastler bestimmt interessant, da es die wichtigsten Bauteile auf nur einer Platine anbietet. So entfällt die aufwendige Verdrahtung, die mich bei anderen Audio Projekten schon viel Zeit gekostet hat.

Hardware:
ESP32 Audio-Kit

Bibliothek und Quellcode:
Die von Phil Schatzmann zu Verfügung gestellte Bibliothek „Arduino-Audiokit“ bringt neben einer einsteigerfreundlichen Wiki, auch noch eine große Vielfalt an Beispiel-Sketche mit, die ohne große Anpassungen schnell zum Erfolg führen. Für das unten aufgeführte Beispiel Sketch musste ich zusätzlich noch die „Arduino Audio Tools“ und wie auch im Sketch zu sehen, die „arduino-libhelix“ installieren.
Ich habe diese in der Arduino IDE Entwicklungsumgebung Version 1.8.19 und 2.04 erfolgreich anwenden können.

Der Hersteller AI Thinker hat leider ein großes Durcheinander mit seiner Vergabe von Versionsnummern verursacht. Obwohl verschiedene Audio-Chips verbaut und wechselnde Pin-Assingments verwendet wurden, tragen diese dennoch alle die gleiche Versionsnummer. Somit kommt man anfangs nicht herum herausfinden zu müssen, welches Board-Variante nun tatsächlich vor einem liegt.  
Auf meinem Board steht zum Beispiel Version V2.2 2957 und nach Anpassung der Boardnummer auf #define AUDIOKIT_BOARD 6 in der „libraries/arduino-audiokit/src/AudioKitSettings.h
konnte ich die Beispiele aus der „Arduino Audio Tools“ erfolgreich anwenden.

https://github.com/pschatzmann

Der verwendete Beispielcode aus der Bibliothek: streams-url_mp3-audiokit.ino

Ansicht alter Sketch (hier klicken)
/**
 * @file streams-url_mp3-audiokit.ino
 * @author Phil Schatzmann
 * @brief decode MP3 stream from url and output it on I2S on audiokit
 * @version 0.1
 * @date 2021-96-25
 * 
 * @copyright Copyright (c) 2021
 * 
 * Beispielcode Version Maerz2023 getestet von prilchen.de
 */

// install https://github.com/pschatzmann/arduino-libhelix.git

#include "AudioTools.h"
#include "AudioCodecs/CodecMP3Helix.h"
#include "AudioLibs/AudioKit.h"


URLStream url("ssid","password");  // or replace with ICYStream to get metadata
AudioKitStream i2s; // finale Ausgabe des decodierten Stream per i2s
EncodedAudioStream dec(&i2s, new MP3DecoderHelix()); // Decoding stream
StreamCopy copier(dec, url); // copy url to decoder


void setup(){
  Serial.begin(115200);
  AudioLogger::instance().begin(Serial, AudioLogger::Info);  // nur zum Testen diese Zeile Aktivieren, um Details im Serial Monitor zu sehen
// AudioLogger::instance().begin(Serial, AudioLogger::Warning);  // Im Betrieb diese Zeile aktivieren

  // setup i2s
  auto config = i2s.defaultConfig(TX_MODE);
  i2s.begin(config);

  // setup I2S based on sampling rate provided by decoder
  dec.begin();

  // mp3 radio
  url.begin("http://stream.srg-ssr.ch/m/rsj/mp3_128","audio/mp3"); //Eintragen deines Wunschsenders

}

void loop(){
  copier.copy();
}

Tipps:
Selbst für die große Abwechslung beim Musik hören hat der Autor gesorgt:
http://github.pschatzmann.ch/esp32_radio/vue-radio/dist/index.html#/

Das USB-Netzteil sollte mindestens 5V / 2A können.

Youtube-Video:


Update: August 2026

Da sich die Bibliotheken für die Audio-Verarbeitung in der Zwischenzeit stark weiterentwickelt haben und die internen Ordnerstrukturen aufgeräumt wurden, gibt es hier eine aktualisierte Anleitung und den angepassten Programmcode (Sketch).

1. Optional: Git installieren

Um die Bibliotheken schnell und fehlerfrei herunterzuladen, nutzen wir das Programm „Git“ (ein bekanntes Werkzeug zur Versionsverwaltung von Software). Falls du Git noch nicht auf deinem Computer hast, musst du es einmalig installieren:

  • Windows:
    Lade dir „Git for Windows“ von der offiziellen Webseite (https://git-scm.com/) herunter und installiere das Programm mit den vorgeschlagenen Standardeinstellungen. Danach findest du in deinem Startmenü das Programm „Git Bash“ (eine spezielle Kommandozeile), welches du für die nächsten Schritte öffnen kannst.
  • Linux / Raspberry Pi OS:
    Öffne das Terminal und tippe den Befehl sudo apt install git ein.
  • macOS:
    Öffne das Terminal und tippe git –version ein. Falls Git noch fehlt, bietet dir der Mac die Installation in der Regel direkt automatisch an.

2. Bibliotheken (über Git) installieren

Wenn Git eingerichtet ist, kannst du die benötigten Bibliotheken ganz einfach über die Kommandozeile herunterladen.
Öffne dazu dein Terminal und wechsele in den Ordner libraries deiner Arduino-Entwicklungsumgebung (IDE – Integrated Development Environment). Unter Windows liegt dieser Ordner in der Regel unter C:\Users\DeinBenutzername\Documents\Arduino\libraries oder siehe Arduino IDE Einstellungen Pfad für Sketchbook.

Führe dort nacheinander die folgenden drei Befehle aus, um die aktuellsten Versionen direkt auf deinen Rechner herunterzuladen:

git clone https://github.com/pschatzmann/arduino-audio-tools.git
git clone https://github.com/pschatzmann/arduino-audiokit.git
git clone https://github.com/pschatzmann/arduino-libhelix.git

Ggf.. danach wieder in die libraries/arduino-audiokit/src/AudioKitSettings.h schauen, ob euer Audio-Kit Board mit der richtigen Version ausgewählt ist.

Wichtig: Nach dem Herunterladen und anpassen, solltest du die Arduino IDE einmal komplett schließen und neu starten, damit die neuen Ordner auch sicher erkannt werden.

3. Der aktualisierte Sketch

Hier ist der angepasste Code für das Webradio. Die Pfade zu den Bausteinen wurden an die neuen Speicherorte angepasst. Zudem nutzen wir nun den modernen ICYStream (ein spezielles Format für Internetradios), der von der Bibliothek problemlos erkannt wird und später sogar das Auslesen von Liedtiteln ermöglicht. Da die Netzwerk-Funktionen nicht mehr automatisch im Hintergrund geladen werden, müssen wir außerdem das WLAN (Wireless Local Area Network, also das kabellose Netzwerk) explizit im Code aktivieren.

Denke daran, in der Zeile ICYStream url(„…“, „…“); deine eigenen Zugangsdaten einzutragen.

/**
 * @file streams-url_mp3-audiokit.ino
 * @author Phil Schatzmann / Update Prilchen August 2026
 * @brief decode MP3 stream from url and output it on I2S on audiokit
 */

// Aktiviert die Netzwerk-Funktionen des ESP32
#include <WiFi.h> 

// Die aktuellen Pfade zu den Audio-Werkzeugen
#include "AudioTools.h"
#include "AudioTools/AudioCodecs/CodecMP3Helix.h"
#include "AudioTools/AudioLibs/AudioKit.h"
#include "AudioTools/Communication/HTTP/ICYStream.h"

// Hier deine WLAN-Zugangsdaten eintragen (Netzwerkname, Passwort)
ICYStream url("WLAN-Name","WLAN-Passwort"); 

// Finale Ausgabe des decodierten Stream per I2S (Inter-IC Sound, ein Standard zur Tonübertragung)
AudioKitStream i2s; 

// Decoding stream für die verkleinerten MP3-Dateien (MPEG-1 Audio Layer III)
EncodedAudioStream dec(&i2s, new MP3DecoderHelix()); 

// Kopiert die Daten aus dem Internet in den Decoder
StreamCopy copier(dec, url); 

void setup(){
  Serial.begin(115200);
  
  // Nur zum Testen diese Zeile aktivieren, um Details im Serial Monitor zu sehen
  AudioLogger::instance().begin(Serial, AudioLogger::Info); 
  // AudioLogger::instance().begin(Serial, AudioLogger::Warning); // Im Betrieb diese Zeile verwenden

  // Setup I2S (Sendemodus aktivieren)
  auto config = i2s.defaultConfig(TX_MODE);
  i2s.begin(config);

  // Setup I2S basierend auf der vom Decoder gelieferten Abtastrate
  dec.begin();

  // MP3 Radio: Eintragen deines Wunschsenders
  url.begin("http://stream.srg-ssr.ch/m/rsj/mp3_128","audio/mp3"); 
}

void loop(){
  copier.copy();
}

DIP-Schalter:
Für dein Webradio-Projekt sollten alle fünf kleinen Hebel des sogenannten DIP-Schalters (Dual In-line Package – das bezeichnet das Gehäuse mit den kleinen Schiebeschaltern) auf OFF (Aus) stehen.

Serieller Monitor:
Der empfangene Stream kann im Seriellen Monitor kontrolliert werden. Wenn alles läuft, dann 35 deaktivieren mit // davor schreiben und Zeile 36 aktivieren mit // entfernen.
Sollte es Probleme geben kann mit AudioLogger::instance().begin(Serial, AudioLogger::Debug); und aktivierung in den ESP32 Einstellungen SETUP auf DEBUG detailliertere Ausgabe zur Analyse erzwungen werden

Neue kleine Lautsprecher:
Diese günstigen Speaker sind klein und erstaunlich gut


Du suchst eine kleinere Lösung, dann siehe auch:


, ,
Datenschutz-Übersicht

Diese Website verwendet Cookies, damit wir dir die bestmögliche Benutzerkomfort bieten können. Cookie-Informationen werden in deinem Browser gespeichert und führen Funktionen aus, wie das Wiedererkennen von dir, wenn du auf unsere Website zurückkehrst und hilft uns zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind.