Einfaches WEB-Radio mit dem ESP32 Audio-Kit

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.

Dokumentation des Herstellers: https://docs.ai-thinker.com/

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

/**
 * @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:


, ,