Internet-Radio mit dem ESP32 - UPDATE

UPDATE: Der Leser Andreas Schröder hat das Projekt ein wenig verändert und einige Funktionen Ergänzt. Den Text und Sketch dazu finden Sie am Ende des Beitrags.

Viele Radiosender können als MP3-Stream über das Internet gehört werden. Da der Mikrocontroller ESP32 einerseits WLAN-Fähigkeiten besitzt und andererseits mit zwei eingebauten Digital/Analog-Wandlern den digitalen Datenstrom in ein Analogsignal umwandeln kann, bietet er sich für dieses Projekt als ideale Lösung an. Zusätzlich wird eine Akku-Stromversorgung, ein Audioverstärker, zwei Lautsprecher, ein Display zur Senderanzeige und ein Eingabegerät zur Sendereinstellung benötigt. Abgerundet wird das Ganze mit einem Gehäuse aus dem 3D-Drucker.

Benötigte Hardware

Anzahl Bauteil Anmerkung

1

ESP32 Development Board

 

1

Audio-Verstärker 3W

 

1

Lautsprecher

 

2

Widerstände 4.7 kOhm

 

2

Widerstände 22 kOhm

 

1

Widerstand 10 kOhm

 

1

Elko 1000uF / 10V

 

1

3.7V Akku 2000mAh

 

1

Laderegler

 

1

DC-DC Step Up Converter

 

1

LCD-Display mit I2C Interface

 

1

Drehgeber Encoder

 

1

Lochrasterplatte 50x70

 

2

Federleisten 19-polig

 

1

Stiftleiste 3-polig

 

1

 Stiftleiste 4-polig

 

1

Stiftleiste 5-polig

 

2

Drehknöpfe für 6mm Achse

 

Mehrere

Jumperkabel weiblich zu weiblich

 

1

Gehäuse Frontteil aus dem 3D-Drucker

 

1

Gehäuse Rückseite aus dem 3D-Drucker

 

1

Deckel zur Akku-Sicherung aus dem 3D-Drucker

 

 

Schaltung

 

Wichtig!
Sollte der Rotary-Encoder nicht verwendet werden, muss der Pin 34 des ESP32 trotzdem mit dem 10kOhm Widerstand mit 3.3V verbunden werden.

Der ESP32 wird mit den Widerständen und Stiftleisten für die Peripherie auf einer 50x70 mm großen Lochrasterplatte aufgebaut.


Die Abbildung zeigt die Bestückung und die Verdrahtung auf der Unterseite

Verdrahtung

Als erstes wird der Batterieanschluss des Ladereglers mit dem Eingang des DC-DC Step Up Wandlers verbunden. Polung beachten! Der Akku wird über einen geeigneten Steckverbinder ebenfalls mit dem Batterie-Eingang des Ladereglers verlötet. Nun sollte die Ausgangsspannung des Wandlers mit dem blauen Potentiometer auf ca. 5.2 V eingestellt werden. Dazu muss entweder ein Akku angeschlossen oder der USB-Eingang des Ladereglers mit einem USB-Netzgerät verbunden werden.

Wenn die Spannung eingestellt ist, kann der Ausgang des Wandlers mit dem Versorgungseingang des Audioverstärkers verbunden werden. Auf der Rückseite des Verstärkers sind zwei Lötpunkte, wobei der Plus Anschluss über den Schalter des Lautstärkepotentiometer geschaltet wird.

 verstärker unterseite

Dieser Anschluss wird zur Versorgung des ESP32 und des Displays verwendet, damit man über das Potentiometer, das Gerät komplett ausschalten kann.
Nun können die Verbindungen zur Steuerplatine auf der Lochrasterplatte hergestellt werden. Am besten werden dazu Jumper-Drähte mit zwei weiblichen Steckern verwendet. Man benötigt eine 3-polige Verbindung vom Audio-Ausgang zum Verstärker, eine 4-polige zum Display und eine 5-polige zum Rotary-Encoder.

Wichtiger Hinweis!
Die Lautsprecher sollten nicht im eingeschalteten Zustand an- oder abgesteckt werden, da induktiver Spannungsspitzen die Verstärkerausgänge zerstören könnten.

Wird das im Blog-Beitrag vorgestellte Gehäuse verwendet, kommt Akku, Laderegler, DC/DC-Wandler und die Steuerplatine auf die Backplane. Die Lautsprecher, der Verstärker, der Rotary-Encoder und das Display kommen auf die Frontplane. Der Deckel wird verwendet, um den Akku zu sichern.

 backplanezusammenbau

Software

Damit der Sketch kompiliert werden kann, muss die Arduino IDE entsprechend vorbereitet werden. Die Arduino IDE unterstützt standardmäßig eine große Anzahl von Boards mit unterschiedlichen Mikrocontrollern, nicht aber den ESP32. Damit man Programme für diese Controller erstellen und hochladen kann, muss daher je ein Softwarepaket für die Unterstützung installiert werden.

Zuerst müssen Sie der Arduino-IDE mitteilen, wo sie die zusätzlich benötigten Daten findet. Dazu öffnen Sie im Menü Datei den Punkt Voreinstellungen. Im Voreinstellungs-Fenster gibt es das Eingabefeld mit der Bezeichnung „Zusätzliche Boardverwalter URLs“. Wenn Sie auf das Ikon rechts neben dem Eingabefeld klicken, öffnet sich ein Fenster in dem Sie die URL https://dl.espressif.com/dl/package_esp32_index.json für den ESP32 eingeben können. Es sollte für dieses Projekt nicht die Version 2.0.0 oder höher des ESP32 Pakets verwendet werden, da es mit diesen Versionen Probleme im Zusammenhang mit der ESP8266Audio Bibliothek gibt!

Nun wählen Sie in der Arduino IDE unter Werkzeug → Board die Boardverwaltung.

Es öffnet sich ein Fenster, in dem alle zur Verfügung stehenden Pakete aufgelistet werden. Um die Liste einzugrenzen, gibt man im Suchfeld „esp32“ ein. Dann erhält man nur noch einen Eintrag in der Liste. Installieren Sie das Paket „esp32“.

esp32 lib
Für das Display benötigen Sie eine Bibliothek, die über die Arduino Bibliotheksverwaltung installiert werden kann. Das ist die Bibliothek „LiquidCrystal I2C“.

Liquid crystal lib

Eine weitere Bibliothek wird für den Rotary-Encoder benötigt. Ihr Name ist „AiEsp32RotaryEncoder“.

Rotary encoder lib 

Kernstück dieses Projekts ist aber die Bibliothek „ESP8266Audio“.

 audio lib

Diese Bibliothek ermöglicht es verschiedene digitale Eingangsströme zu lesen, zu dekodieren und über verschiedene Ausgangskanäle wiederzugeben. Als Eingang, kann der Programmspeicher, der interne RAM ein Filesystem, eine SD-Karte, ein HTTP-Stream oder ein ICY-Stream genutzt werden. Der ICY-Stream wird typisch von Internet-Radios genutzt.
Dekodiert werden können WAV, MOD, MIDI, FLAC, AAC und MP3 Dateien. Für das Webradio wird MP3 benötigt. Die Ausgabe kann schließlich in Speicher, Files oder I2S erfolgen. Eine Besonderheit gibt es für den ESP32. Der I2S Output kann auf den internen Digital-Analog-Wandler ausgegeben werden. An den Ausgangs-Pins des DAW (Pin 25 und Pin 26) steht dann ein analoges Stereosignal zur Verfügung. Dieses Feature wird im vorliegenden Projekt genutzt.

Wenn alle Bibliotheken installiert sind, kann der Sketch kompiliert und auf die Hardware hochgeladen werden. Achtung! Zum Hochladen muss der Jumper zwischen D0 und RST entfernt werden.

Der Sketch

#include <WiFi.h> 
//Includes from ESP8266audio
#include "AudioFileSourceICYStream.h" //input stream
#include "AudioFileSourceBuffer.h"    //input buffer
#include "AudioGeneratorMP3.h"        //decoder
#include "AudioOutputI2S.h"           //output stream
//library for LCD display
#include <LiquidCrystal_I2C.h>
//library for rotary encoder
#include "AiEsp32RotaryEncoder.h"
//esp32 library to save preferences in flash
#include <Preferences.h>

//WLAN access fill with your credentials
#define SSID "************"
#define PSK "*************"

//used pins for rotary encoder
#define ROTARY_ENCODER_A_PIN 33
#define ROTARY_ENCODER_B_PIN 32
#define ROTARY_ENCODER_BUTTON_PIN 34
#define ROTARY_ENCODER_VCC_PIN -1 /* 27 put -1 of Rotary encoder Vcc is connected directly to 3,3V; else you can use declared output pin for powering rotary encoder */

//depending on your encoder - try 1,2 or 4 to get expected behaviour
//#define ROTARY_ENCODER_STEPS 1
//#define ROTARY_ENCODER_STEPS 2
#define ROTARY_ENCODER_STEPS 4

//structure for station list
typedef struct {
  char * url;  //stream url
  char * name; //stations name
} Station;

#define STATIONS 24 //number of stations in tzhe list

//station list can easily be modified to support other stations
Station stationlist[STATIONS] PROGMEM = {
{"http://icecast.ndr.de/ndr/ndr2/niedersachsen/mp3/128/stream.mp3","NDR2 Niedersachsen"},
{"http://icecast.ndr.de/ndr/ndr1niedersachsen/hannover/mp3/128/stream.mp3","NDR1 Hannover"},
{"http://wdr-1live-live.icecast.wdr.de/wdr/1live/live/mp3/128/stream.mp3","WDR1"},
{"http://wdr-cosmo-live.icecast.wdr.de/wdr/cosmo/live/mp3/128/stream.mp3","WDR COSMO"},
{"http://radiohagen.cast.addradio.de/radiohagen/simulcast/high/stream.mp3","Radio Hagen"},
{"http://st01.sslstream.dlf.de/dlf/01/128/mp3/stream.mp3","Deutschlandfunk"},
{"http://dispatcher.rndfnk.com/br/br1/franken/mp3/low","Bayern1"},
{"http://dispatcher.rndfnk.com/br/br3/live/mp3/low","Bayern3"},
{"http://dispatcher.rndfnk.com/hr/hr3/live/mp3/48/stream.mp3","Hessen3"},
{"http://stream.antenne.de/antenne","Antenne Bayern"},
{"http://stream.1a-webradio.de/saw-deutsch/","Radio 1A Deutsche Hits"},
{"http://stream.1a-webradio.de/saw-rock/","Radio 1A Rock"},
{"http://streams.80s80s.de/ndw/mp3-192/streams.80s80s.de/","Neue Deutsche Welle"},
{"http://dispatcher.rndfnk.com/br/brklassik/live/mp3/low","Bayern Klassik"},
{"http://mdr-284280-1.cast.mdr.de/mdr/284280/1/mp3/low/stream.mp3","MDR"},
{"http://icecast.ndr.de/ndr/njoy/live/mp3/128/stream.mp3","N-JOY"},
{"http://dispatcher.rndfnk.com/rbb/rbb888/live/mp3/mid","RBB"},
{"http://dispatcher.rndfnk.com/rbb/antennebrandenburg/live/mp3/mid","Antenne Brandenburg"},
{"http://wdr-wdr3-live.icecastssl.wdr.de/wdr/wdr3/live/mp3/128/stream.mp3","WDR3"},
{"http://wdr-wdr2-aachenundregion.icecastssl.wdr.de/wdr/wdr2/aachenundregion/mp3/128/stream.mp3","WDR 2"},
{"http://rnrw.cast.addradio.de/rnrw-0182/deinschlager/low/stream.mp3","NRW Schlagerradio"},
{"http://rnrw.cast.addradio.de/rnrw-0182/deinrock/low/stream.mp3","NRW Rockradio"},
{"http://rnrw.cast.addradio.de/rnrw-0182/dein90er/low/stream.mp3","NRW 90er"},
{"http://mp3.hitradiort1.c.nmdn.net/rt1rockwl/livestream.mp3","RT1 Rock"}};

//buffer size for stream buffering
const int preallocateBufferSize = 80*1024;
const int preallocateCodecSize = 29192;         // MP3 codec max mem needed
//pointer to preallocated memory
void *preallocateBuffer = NULL;
void *preallocateCodec = NULL;

//instance of prefernces
Preferences pref;
//instance for rotary encoder
AiEsp32RotaryEncoder rotaryEncoder = AiEsp32RotaryEncoder(ROTARY_ENCODER_A_PIN, ROTARY_ENCODER_B_PIN, ROTARY_ENCODER_BUTTON_PIN, ROTARY_ENCODER_VCC_PIN, ROTARY_ENCODER_STEPS);
//instance for LCD display
LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
//instances for audio components
AudioGenerator *decoder = NULL;
AudioFileSourceICYStream *file = NULL;
AudioFileSourceBuffer *buff = NULL;
AudioOutputI2S *out;

//Special character to show a speaker icon for current station
uint8_t speaker[8]  = {0x3,0x5,0x19,0x11,0x19,0x5,0x3};
//global variables
uint8_t curStation = 0;   //index for current selected station in stationlist
uint8_t actStation = 0;   //index for current station in station list used for streaming 
uint32_t lastchange = 0;  //time of last selection change

//callback function will be called if meta data were found in input stream
void MDCallback(void *cbData, const char *type, bool isUnicode, const char *string)
{
  const char *ptr = reinterpret_cast<const char *>(cbData);
  (void) isUnicode; // Punt this ball for now
  // Note that the type and string may be in PROGMEM, so copy them to RAM for printf
  char s1[32], s2[64];
  strncpy_P(s1, type, sizeof(s1));
  s1[sizeof(s1)-1]=0;
  strncpy_P(s2, string, sizeof(s2));
  s2[sizeof(s2)-1]=0;
  Serial.printf("METADATA(%s) '%s' = '%s'\n", ptr, s1, s2);
  Serial.flush();
}

//stop playing the input stream release memory, delete instances
void stopPlaying() {
  if (decoder)  {
    decoder->stop();
    delete decoder;
    decoder = NULL;
  }
  if (buff)  {
    buff->close();
    delete buff;
    buff = NULL;
  }
  if (file)  {
    file->close();
    delete file;
    file = NULL;
  }
}

//start playing a stream from current active station
void startUrl() {
  stopPlaying();  //first close existing streams
  //open input file for selected url
  Serial.printf("Active station %s\n",stationlist[actStation].url);
  file = new AudioFileSourceICYStream(stationlist[actStation].url);
  //register callback for meta data
  file->RegisterMetadataCB(MDCallback, NULL); 
  //create a new buffer which uses the preallocated memory
  buff = new AudioFileSourceBuffer(file, preallocateBuffer, preallocateBufferSize);
  Serial.printf_P(PSTR("sourcebuffer created - Free mem=%d\n"), ESP.getFreeHeap());
  //create and start a new decoder
  decoder = (AudioGenerator*) new AudioGeneratorMP3(preallocateCodec, preallocateCodecSize);
  Serial.printf_P(PSTR("created decoder\n"));
  Serial.printf_P("Decoder start...\n");
  decoder->begin(buff, out);
}

//show name of current station on LCD display
//show the speaker symbol in front if current station = active station
void showStation() {
  lcd.clear();
  if (curStation == actStation) {
    lcd.home();
    lcd.print(char(1));
  }
  lcd.setCursor(2,0);
  String name = String(stationlist[curStation].name);
  if (name.length() < 15)
    lcd.print(name);
  else {
    uint8_t p = name.lastIndexOf(" ",15); //if name does not fit, split line on space
    lcd.print(name.substring(0,p));
    lcd.setCursor(0,1);
    lcd.print(name.substring(p+1,p+17));
  }
}

//handle events from rotary encoder
void rotary_loop()
{
  //dont do anything unless value changed
  if (rotaryEncoder.encoderChanged())
  {
    uint16_t v = rotaryEncoder.readEncoder();
    Serial.printf("Station: %i\n",v);
    //set new currtent station and show its name
    if (v < STATIONS) {
      curStation = v;
      showStation();
      lastchange = millis();
    }
  }
  //if no change happened within 10s set active station as current station
  if ((lastchange > 0) && ((millis()-lastchange) > 10000)){
    curStation = actStation;
    lastchange = 0;
    showStation();
  }
  //react on rotary encoder switch
  if (rotaryEncoder.isEncoderButtonClicked())
  {
    //set current station as active station and start streaming
    actStation = curStation;
    Serial.printf("Active station %s\n",stationlist[actStation].name);
    pref.putUShort("station",curStation);
    startUrl();
    //call show station to display the speaker symbol
    showStation();
  }
}

//interrupt handling for rotary encoder
void IRAM_ATTR readEncoderISR()
{
  rotaryEncoder.readEncoder_ISR();
}

//setup
void setup() {
  Serial.begin(115200);
  delay(1000);
  //reserve buffer für for decoder and stream
  preallocateBuffer = malloc(preallocateBufferSize);          // Stream-file-buffer
  preallocateCodec = malloc(preallocateCodecSize);            // Decoder- buffer
  if (!preallocateBuffer || !preallocateCodec)
  {
    Serial.printf_P(PSTR("FATAL ERROR:  Unable to preallocate %d bytes for app\n"), preallocateBufferSize+preallocateCodecSize);
    while(1){
      yield(); // Infinite halt
    }
  } 
  //start rotary encoder instance
  rotaryEncoder.begin();
  rotaryEncoder.setup(readEncoderISR);
  rotaryEncoder.setBoundaries(0, STATIONS, true); //minValue, maxValue, circleValues true|false (when max go to min and vice versa)
  rotaryEncoder.disableAcceleration();
  //init WiFi
  Serial.println("Connecting to WiFi");
  WiFi.disconnect();
  WiFi.softAPdisconnect(true);
  WiFi.mode(WIFI_STA);
  WiFi.begin(SSID, PSK);
  // Try forever
  while (WiFi.status() != WL_CONNECTED) {
    Serial.println("...Connecting to WiFi");
    delay(1000);
  }
  Serial.println("Connected");
  //create I2S output do use with decoder
  //the second parameter 1 means use the internal DAC
  out = new AudioOutputI2S(0,1);
  //init the LCD display
  lcd.init();
  lcd.backlight();
  lcd.createChar(1, speaker);
  //set current station to 0
  curStation = 0;
  //start preferences instance
  pref.begin("radio", false);
  //set current station to saved value if available
  if (pref.isKey("station")) curStation = pref.getUShort("station");
  if (curStation >= STATIONS) curStation = 0;
//set active station to current station  //show on display and start streaming  actStation = curStation;  showStation();  startUrl(); } void loop() {  //check if stream has ended normally not on ICY streams  if (decoder->isRunning()) {    if (!decoder->loop()) {      decoder->stop();    }  } else {    Serial.printf("MP3 done\n");    // Restart ESP when streaming is done or errored    delay(10000);    ESP.restart();  }  //read events from rotary encoder  rotary_loop(); }

Sketch zum Herunterladen

Vor dem Kompilieren muss die SSID und das Passwort für das WLAN gesetzt werden. Am Anfang des Sketchs ist eine Liste mit 24 deutschen Radiostationen. Sie können diese beliebig editieren oder erweitern, um Ihr gewünschtes Programm zu hören. Es können maximal 100 Stationen definiert werden.

Nach dem Hochladen kann das Programm gestartet werden. Mit dem Rotary-Encoder kann durch die Senderliste gescrollt werden. Drückt man den Knopf des Rotary-Encoder, wird der gerade angezeigte Sender als aktiv gesetzt. Diese Auswahl wird im Flash gespeichert, sodass nach einer Stromunterbrechung das Programm wieder mit dem ausgewählten Sender gestartet wird. Die gerade wiedergegebene Station wird im Display durch ein vorangestelltes Lautsprecher-Symbol angezeigt.

Fertiges Gerät

Viel Vergnügen mit dem Internet Radio

Beitrag als PDF

Update von unserem Leser Andreas Schröder

(danke an dieser Stelle)

Mit geschnittener schwarzer Folie auf weißem Gehäuse sieht es echt gut aus.

Weil das auf- und zuschrauben nicht prickelnd ist, habe ich den Code um folgendes erweitert:

1. einen automatischen AP-Modus bei fehlender WLAN-Verbindung, der dann per Webserver die Zugangsdaten abfragt.

2. Im normalen Betrieb kann die Senderliste über ein Webfrontend gepflegt werden. Hätte hier gerne den Code, Screenshots und die Plotterdatei für die Folie bereitgestellt.

WLAN

Die WLAN-Konfiguration wird im internen Flash-Speicher vorgehalten. Diese kann per Weboberfläche konfiguriert werden. Der Konfigurationsablauf ist wie folgt:

  • Laden der gespeicherten Login-Daten

  • Versuch der Verbindungs-Herstellung (Display zeigt „WLAN“)

  • Wenn das nicht möglich ist

    • Wechsel in den AP-Modus und erzeugen des WLANs „WEBRADIO“

    • Erwarten der Dateneingabe unter http://192.168.4.1

    • Neustart mit neuen Daten

==> Das ganze wiederholt sich, bis eine Verbindung möglich ist

 

 

Senderliste

Die Liste der hinterlegten Sender kann über http:// angepasst werden.

 

Sketches Download

 

Plotterdatei (Silhouette-Format)

DisplaysEsp-32Projekte für anfängerStromversorgung

72 Kommentare

Leon

Leon

Danke an Gerald Lechner – super Beitrag, ich habe das Display und den Encoder rausgenommen und ein Seniorenradio für meinen Opa gebaut – Ein Button für Sender wechseln, ein Poti für Lautstärke.

@Robin
Ich hatte wegen deines Beitrags vor dem ersten kompilieren auf esp32 v1.0.6 umgestellt, damit habe ich die gleichen Fehler erhalten, wie du. Nach umstellen auf esp32 v2.0.3 klappte es dann.

Julian

Julian

Ich habe leider auch Kompilierungsprobleme, wobei ich versucht habe, exakt die Bibliothek-Versionen der Screenshots zu benutzen.

Board: ESP32 Dev Module, installiert als Version 1.0.6
ESP8266 Audio: Version 1.9.5

Beim Kompilieren in Arduino IDE erscheint allerdings die Fehlermeldung “bits/c++config.h: No such file or directory”. Außerdem eine Warnung mit “breadboard:avr:atmega328bb doesn’t define a ‘build.board’ preference”.

C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\hardware -hardware K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages -hardware K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\Arduino\hardware -tools C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\tools-builder -tools C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\hardware\tools\avr -tools K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages -built-in-libraries C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\libraries -libraries K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\Arduino\libraries -fqbn=esp32:esp32:esp32:PSRAM=disabled,PartitionScheme=default,CPUFreq=240,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,DebugLevel=none -ide-version=10819 -build-path C:\Users\Julian\AppData\Local\Temp\arduino_build_136623 -warnings=none -build-cache C:\Users\Julian\AppData\Local\Temp\arduino_cache_577544 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.xtensa-esp32-elf-gcc.path=K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-97-gc752ad5-5.2.0 -prefs=runtime.tools.xtensa-esp32-elf-gcc-1.22.0-97-gc752ad5-5.2.0.path=K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-97-gc752ad5-5.2.0 -prefs=runtime.tools.esptool_py.path=K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages\esp32\tools\esptool_py\3.0.0 -prefs=runtime.tools.esptool_py-3.0.0.path=K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages\esp32\tools\esptool_py\3.0.0 -prefs=runtime.tools.mkspiffs.path=K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages\esp32\tools\mkspiffs\0.2.3 -prefs=runtime.tools.mkspiffs-0.2.3.path=K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages\esp32\tools\mkspiffs\0.2.3 -verbose C:\Users\Julian\Desktop\testskt\sketch_jun26a\sketch_jun26a.ino
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\arduino-builder -compile -logger=machine -hardware C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\hardware -hardware K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages -hardware K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\Arduino\hardware -tools C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\tools-builder -tools C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\hardware\tools\avr -tools K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages -built-in-libraries C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.57.0_x86__mdqgnx93n4wtt\libraries -libraries K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\Arduino\libraries -fqbn=esp32:esp32:esp32:PSRAM=disabled,PartitionScheme=default,CPUFreq=240,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,DebugLevel=none -ide-version=10819 -build-path C:\Users\Julian\AppData\Local\Temp\arduino_build_136623 -warnings=none -build-cache C:\Users\Julian\AppData\Local\Temp\arduino_cache_577544 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.xtensa-esp32-elf-gcc.path=K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-97-gc752ad5-5.2.0 -prefs=runtime.tools.xtensa-esp32-elf-gcc-1.22.0-97-gc752ad5-5.2.0.path=K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-97-gc752ad5-5.2.0 -prefs=runtime.tools.esptool_py.path=K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages\esp32\tools\esptool_py\3.0.0 -prefs=runtime.tools.esptool_py-3.0.0.path=K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages\esp32\tools\esptool_py\3.0.0 -prefs=runtime.tools.mkspiffs.path=K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages\esp32\tools\mkspiffs\0.2.3 -prefs=runtime.tools.mkspiffs-0.2.3.path=K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages\esp32\tools\mkspiffs\0.2.3 -verbose C:\Users\Julian\Desktop\testskt\sketch_jun26a\sketch_jun26a.ino
Using board ‘esp32’ from platform in folder: K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages\esp32\hardware\esp32\1.0.5
Using core ‘esp32’ from platform in folder: K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages\esp32\hardware\esp32\1.0.5
Warning: Board breadboard:avr:atmega328bb doesn’t define a ‘build.board’ preference. Auto-set to: AVR_ATMEGA328BB
cmd /c if exist “C:\\Users\\Julian\\Desktop\\testskt\\sketch_jun26a\\partitions.csv” copy /y “C:\\Users\\Julian\\Desktop\\testskt\\sketch_jun26a\\partitions.csv” “C:\\Users\\Julian\\AppData\\Local\\Temp\\arduino_build_136623\\partitions.csv”
cmd /c if not exist “C:\\Users\\Julian\\AppData\\Local\\Temp\\arduino_build_136623\\partitions.csv” copy “K:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5\\tools\\partitions\\default.csv” “C:\\Users\\Julian\\AppData\\Local\\Temp\\arduino_build_136623\\partitions.csv”
Detecting libraries used…
“K:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-97-gc752ad5-5.2.0/bin/xtensa-esp32-elf-g++” -DESP_PLATFORM “-DMBEDTLS_CONFIG_FILE=\”mbedtls/esp_config.h\"" -DHAVE_CONFIG_H -DGCC_NOT_5_2_0=0 -DWITH_POSIX “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/config” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/app_trace” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/app_update” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/asio” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/bootloader_support” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/bt” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/coap” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/console” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/driver” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/efuse” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/esp-tls” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/esp32” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/esp_adc_cal” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/esp_event” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/esp_http_client” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/esp_http_server” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/esp_https_ota” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/esp_https_server” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/esp_ringbuf” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/esp_websocket_client” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/espcoredump” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/ethernet” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/expat” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/fatfs” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/freemodbus” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/freertos” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/heap” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/idf_test” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/jsmn” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/json” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/libsodium” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/log” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/lwip” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/mbedtls” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/mdns” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/micro-ecc” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/mqtt” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/newlib” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/nghttp” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/nimble” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/nvs_flash” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/openssl” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/protobuf-c” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/protocomm” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/pthread” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/sdmmc” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/smartconfig_ack” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/soc” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/spi_flash” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/spiffs” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/tcp_transport” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/tcpip_adapter” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/ulp” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/unity” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/vfs” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/wear_levelling” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/wifi_provisioning” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/wpa_supplicant” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/xtensa-debug-module” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/esp-face” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/esp32-camera” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/esp-face” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5/tools/sdk/include/fb_gfx” -std=gnu++11 -Os -g3 -Wpointer-arith -fexceptions -fstack-protector -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib -w -Wno-error=maybe-uninitialized -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-missing-field-initializers -Wno-sign-compare -fno-rtti -c -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10819 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 “-DARDUINO_BOARD=\”ESP32_DEV\"" “-DARDUINO_VARIANT=\”esp32\"" -DESP32 -DCORE_DEBUG_LEVEL=0 “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5\\cores\\esp32” “-IK:\\Dokumente und Einstellungen\\Sword\\Eigene Dateien\\Eigene Dokumente\\ArduinoData\\packages\\esp32\\hardware\\esp32\\1.0.5\\variants\\esp32” “C:\\Users\\Julian\\AppData\\Local\\Temp\\arduino_build_136623\\sketch\\sketch_jun26a.ino.cpp” -o nul
Alternatives for bits/c++config.h: []
ResolveLibrary(bits/c++config.h)
→ candidates: []
In file included from k:\dokumente und einstellungen\sword\eigene dateien\eigene dokumente\arduinodata\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-97-gc752ad5-5.2.0\xtensa-esp32-elf\include\c++\5.2.0\algorithm:60:0,
from K:\Dokumente und Einstellungen\Sword\Eigene Dateien\Eigene Dokumente\ArduinoData\packages\esp32\hardware\esp32\1.0.5\cores\esp32/Arduino.h:142,
from C:\Users\Julian\AppData\Local\Temp\arduino_build_136623\sketch\sketch_jun26a.ino.cpp:1:
k:\dokumente und einstellungen\sword\eigene dateien\eigene dokumente\arduinodata\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-97-gc752ad5-5.2.0\xtensa-esp32-elf\include\c++\5.2.0\utility:68:28: fatal error: bits/c++config.h: No such file or directory
compilation terminated.
exit status 1
Fehler beim Kompilieren für das Board ESP32 Dev Module.

Fehler beim Kompilieren für das Board ESP32 Dev Module.

Mit PlatformIO und VSCode konnte ich zwar alles kompilieren und hochladen mit folgender der platformio.ini Einstellung, aber die Verbindung bricht sofort wieder ab (“mp3 done”).

[env:az-delivery-devkit-v4]
platform = espressif32
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#1.0.6
board = esp32dev
framework = arduino
lib_deps =
marcoschwartz/LiquidCrystal_I2C@^1.1.4
earlephilhower/ESP8266Audio@^1.9.7
monitor_speed = 115200

Robin

Robin

Beim Esp32 board verwende ich die 1.0.6
Bei der ESP8266Audi die Version 1.9.7

Gerald Lechner

Gerald Lechner

@Robin: Die Fehlermeldung kommt daher, dass die Bibliothek ESP8266Audio nicht mit dem aktuellen ESP32 Package funktioniert. Wenn man in der Boardverwaltung beim ESP32 die Version 1.6 wählt, dann ist der Fehler weg.

Robin

Robin

Hallo Zusammen
ich bekomme folgende Fehlermeldungen. Was mach ich da Falsch?

Arduino: 1.8.19 (Mac OS X), Board: “ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None”

WARNUNG: Bibliothek LiquidCrystal_I2C behauptet auf avr Architektur(en) ausgeführt werden zu können und ist möglicherweise inkompatibel mit Ihrem derzeitigen Board, welches auf esp32 Architektur(en) ausgeführt wird.
/Users/robin/Documents/Arduino/libraries/ESP8266Audio/src/AudioOutputI2S.cpp: In member function ‘bool AudioOutputI2S::SetPinout()’:
/Users/robin/Documents/Arduino/libraries/ESP8266Audio/src/AudioOutputI2S.cpp:95:41: error: ‘i2s_pin_config_t’ has no non-static data member named ‘mck_io_num’
.data_in_num = I2S_PIN_NO_CHANGE};
^
/Users/robin/Documents/Arduino/libraries/ESP8266Audio/src/AudioOutputI2S.cpp: In member function ‘bool AudioOutputI2S::begin(bool)’:
/Users/robin/Documents/Arduino/libraries/ESP8266Audio/src/AudioOutputI2S.cpp:232:28: error: ‘I2S_MCLK_MULTIPLE_DEFAULT’ was not declared in this scope
.mclk_multiple = I2S_MCLK_MULTIPLE_DEFAULT, // Unused
^
/Users/robin/Documents/Arduino/libraries/ESP8266Audio/src/AudioOutputI2S.cpp:233:28: error: ‘I2S_BITS_PER_CHAN_DEFAULT’ was not declared in this scope
.bits_per_chan = I2S_BITS_PER_CHAN_DEFAULT // Use bits per sample
^
/Users/robin/Documents/Arduino/libraries/ESP8266Audio/src/AudioOutputI2S.cpp:234:7: error: ‘i2s_config_t’ has no non-static data member named ‘mclk_multiple’
};
^
/Users/robin/Documents/Arduino/libraries/ESP8266Audio/src/AudioOutputSPDIF.cpp: In constructor ‘AudioOutputSPDIF::AudioOutputSPDIF(int, int, int)’:
/Users/robin/Documents/Arduino/libraries/ESP8266Audio/src/AudioOutputSPDIF.cpp:108:22: error: ‘I2S_MCLK_MULTIPLE_DEFAULT’ was not declared in this scope
.mclk_multiple = I2S_MCLK_MULTIPLE_DEFAULT, // Unused
^
/Users/robin/Documents/Arduino/libraries/ESP8266Audio/src/AudioOutputSPDIF.cpp:109:22: error: ‘I2S_BITS_PER_CHAN_DEFAULT’ was not declared in this scope
.bits_per_chan = I2S_BITS_PER_CHAN_DEFAULT // Use bits per sample
^
/Users/robin/Documents/Arduino/libraries/ESP8266Audio/src/AudioOutputSPDIF.cpp:110:3: error: ‘i2s_config_t’ has no non-static data member named ‘mclk_multiple’
};
^
/Users/robin/Documents/Arduino/libraries/ESP8266Audio/src/AudioOutputSPDIF.cpp: In member function ‘bool AudioOutputSPDIF::SetPinout(int, int, int)’:
/Users/robin/Documents/Arduino/libraries/ESP8266Audio/src/AudioOutputSPDIF.cpp:159:3: error: ‘i2s_pin_config_t’ has no non-static data member named ‘mck_io_num’
};
^
Mehrere Bibliotheken wurden für “SD.h” gefunden
Benutzt: /Users/robin/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/SD
Nicht benutzt: /private/var/folders/dq/8jk9c2hn4s18pq58hftqn7f80000gn/T/AppTranslocation/94586793-D3BE-49BF-8465-53C452995F94/d/Arduino.app/Contents/Java/libraries/SD
Mehrere Bibliotheken wurden für “WiFi.h” gefunden
Benutzt: /Users/robin/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/WiFi
Nicht benutzt: /private/var/folders/dq/8jk9c2hn4s18pq58hftqn7f80000gn/T/AppTranslocation/94586793-D3BE-49BF-8465-53C452995F94/d/Arduino.app/Contents/Java/libraries/WiFi
exit status 1
Fehler beim Kompilieren für das Board ESP32 Dev Module.

mahoc

mahoc

Hallo zusammen, hat jemand das Projekt erfolgreich auf einem Mac kompilieren können?

Peter Gottfried

Peter Gottfried

Hallo Andreas, wie muss das Programm für den I2s Verstärker angepasst werden?

Stefan Trzesniowski

Stefan Trzesniowski

Hallo in die Runde, großen Dank an die Entwickler. Jetzt kämpfe ich mit der Erweiterung von Andreas oder habe ich was falsch gelesen?
Char nnn10 ist danach nur nnn. Was mache ich da falsch. Die Originalversion läuft seit Wochen:-)

// set additional sender (more than 20) with flash-values or defaults
int se=20;
char nnn10;
while (se < STATIONS) {
sprintf(nnn, “n%d”, se+1);
strcpy(stationlist[se].name, sender.getString(nnn, “NDR2 Niedersachsen”).c_str());
sprintf(nnn, “u%d”, se+1);
strcpy(stationlist[se].url, sender.getString(nnn, “http://icecast.ndr.de/ndr/ndr2/niedersachsen/mp3/128/stream.mp3”).c_str());
se++;
}
Danke an die Profis Stefan

Robert

Robert

Herzlichen Dank für dieses tolle Projekt. Alles hat ohne Veränderungen auf Anhieb perfekt funktioniert. Ich habe die Schaltung zunächst auf einem Breadboard aufgebaut, jetzt wird das ganze für den dauerhaften Einsatz auf Platine getackert … ;-)

Andreas Schröder

Andreas Schröder

An dieser Stelle noch einmal an großes Danke an Gerald Lechner für diese wunderschöne Projektidee. Mittlerweile nutze ich etwas bessere Lautsprecher mit dem hier bei AZ-Delivery erhältlichen “I2S 3W Klasse D Amplifier Breakout Modul” anstatt des eingebauten DAs – es klingt einfach super :)

Andreas Schröder

Andreas Schröder

Hallo Norbert, siehe meinen Post vom 5. Mai. Diese Bibliotheken musst Du nur bei github herunterladen (google nach asynctcp und espasyncwebserver und nimm jeweils das erste Ergebnis) und packke das in Deinen Library-Ordner – fertig! :)

Andreas Schröder

Andreas Schröder

Hallo Konrad, habe ich im Post von gerade noch vergessen: Die AsyncWeberver Library ist übrigens noch viel mächtiger, als sie hier Verwendung findet. Das Templating der Webseite, was ich hier mit sprintf mache, ist da drin eigentlich noch viel besser implementiert – und noch vieles mehr (wie z.B. JSON-Calls, etc.). Lies Dir doch mal die Doku dazu durch – Du wirst begeistert sein. Auch die Zuverlässigkeit, wenn der ESP mal monatelang vor sich hin läuft und dann spontan Websites ausspucken muss, ist hier perfekt (habe hier z.B. einen auch per Web steuerbaren Dimmer damit im Wintergarten seit 9 Monaten unterbrechungsfrei laufen). Mein Wechsel zu Async-Library hat viele damalige Probleme gelöst.
Man sollte nicht alles, was per Klick in der Arduino-IDE verfügbar ist, als Standard bezeichnen – und es lohnt sich wirklich hier eben einen Ordners in den Ordner “libraries” zu kopieren :)
Liebe Grüße

Andreas Schröder

Andreas Schröder

Hallo Konrad, ich nutze AsyncWebserver mittlerweile ausschließlich, weil es einfach mit Abstand deutlich performanter ist. So mag ich es hier z.B. nicht, wenn der Stream stottert, nur weil eine Web-Aktion stattfindet :)
Hallo Hellmut, gute Idee, die mit der Zeit kaputten Stream-URLs nerven mich auch – ich werde am Wochenende mal ein wenig tüfteln :)

Denis

Denis

Andreas, many thanks for your answer about increasing >20 stations…
I wasn’t at home last week so, please, apologize my late message.
I will try soon this modification.
Greetings,
Denis

Konrad

Konrad

Hallo Andreas Schröder,

ich hätte da mal eine Verständnisfrage:
Du arbeitest in Deinem Sketch mit der ESPAsyncWebServer.h library.

Wäre das mit dem WebServer.h library der integriert ist nicht einfacher?

Mein Problem ist, – dass meine übrigen Sketche alle auf der WebServer.h library basieren. Bei einem anderen Projekt hatte ich auch die ESPAsyncWebServer.h library vor mir und versuchte den Sketch zu übertragen auf die WebServer.h library zu übertragen. Das ging bei mir leider ziemlich schief. Offensichtlich sind meine Detailkenntnisse nicht auf dem notwendigen Niveau.

Würde mich über Deine Meinung sehr freuen. Vielleicht hast Du sogar einen Tipp wie ich von der einen library einfach in die andere wechseln kann.

Danke

Konrad

Helmut

Helmut

Moin Andreas, erstmal vorweg alles läuft gut aber wenn man einen Sender gespeichert hat der nicht funktioniert oder der Stream ist down dann versucht das Gerät ja immer wieder zu verbinden und startet neu. Ich hatte dann keine Möglichkeit mehr irgendwas zu ändern. Was muss ich dann machen ? Ich habe in der Not das ganze Programm neu aufgespielt. Kannst du nicht eine Funktion einbauen das wenn ein Stream nach 3 mal nicht startet das dann der vorherige oder der nächste oder der 1. Speicherplatz geladen wird ?

Norbert

Norbert

Hallo
Welche genaue Bibliotheken muß ich denn für den neuen Sketch nehmen?Wenn ich in der Bibliothekverwaltung ESPAsyncwebServer, AsyncTCP oder Arduino Json eintrage kommen ja mehrere .
Habe schon mehrere installiert aber es kommt immer noch die Fehlermeldung das er ESPAsyncwebServer.h nicht findet.Mit dem alten Sketch hat’s wunderbar funktioniert nach dem installieren der Bibliotheken.
Gruß Norbert

Andreas Schröder

Andreas Schröder

Hallo Denis,
sorry, hatt da etwas vergessen was zuschlägt, sobald man mehr als 20 Sender haben möchte (STATIONS >20): Nach dem Start werden dann weiterhin nur die ersten 20 Sender aus dem flash geladen. Zur Korrektur müssen folgende Zeilen an das Ende der Funktion “setup_senderList()” in der Datei
“senderlist”, dann klappt’s auch mit mehr als 20:

// set additional sender (more than 20) with flash-values or defaults int se=20; char nnn10; while (se < STATIONS) { sprintf(nnn, “n%d”, se+1); strcpy(stationlist[se].name, sender.getString(nnn, “NDR2 Niedersachsen”).c_str()); sprintf(nnn, “u%d”, se+1); strcpy(stationlist[se].url, sender.getString(nnn, “http://icecast.ndr.de/ndr/ndr2/niedersachsen/mp3/128/stream.mp3”).c_str()); se++; }
Andreas Schröder

Andreas Schröder

Hallo Helmut,
sorry dass ich mich jetzt erst melde – genutzt habe ich AsyncWebserver in der Version 1.2.3, die zugehörige AsyncTCP nutzte ich in der Version 1.1.1.
Viel Erfolg

Denis

Denis

Hello Andreas and Gerald,
I tested the new version, good job Andreas !!! it works for me.
Then, I tried to enter more stations so I changed in EspWebRadio sketch
#define STATIONS 20 by #define STATIONS 40
Then, I added 20 more stations to Senderlist sketch in order to reach 40 stations.
On the ESP-Webradio webpage, I see the 20 first stations followed by 20 blank positions. The stations I entered in the Senderlist are missing.
If I save the list (pressing “alles speichen” button) all the list is cleared from first to last position !
Where is my mistake ? How can I do to add more stations ?
Hope to get a solution but, again, thanks to both of you for this good job.
Denis

Helmut

Helmut

Moin,
ich nochmal. Ich habe den Fehler gefunden.
In Arduino musste ich 3 neue Bibliotheken einbinden und zwar
1. ESPAsyncwebServer-main
2. AsyncTCP
3. Arduino Json
Danach kompilierte der Sketch einwandfrei durch und danke an Andreas, läuft einwandfrei.

Helmut

Helmut

Moin,
erstmal vorweg das Webradio ist spitze. Lüft super. Jetzt wollte ich auch die aktuelle Version updaten aber irgenwie klappt das kopilieren nicht. Welche ESPAyncweb Server Lib ist denn die richtige, oder ist da bei mir noch was falsch ?
Hier die Fehlermeldung:

Arduino: 1.8.13 (Windows 10), Board: “NodeMCU-32S, 80MHz, 921600”

C:\Program Files\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files\Arduino\hardware -hardware C:\Users\Helmut\AppData\Local\Arduino15\packages -tools C:\Program Files\Arduino\tools-builder -tools C:\Program Files\Arduino\hardware\tools\avr -tools C:\Users\Helmut\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files\Arduino\libraries -libraries C:\Users\Helmut\Documents\Arduino\libraries -fqbn=esp32:esp32:nodemcu-32s:FlashFreq=80,UploadSpeed=921600 -vid-pid=10C4_EA60 -ide-version=10813 -build-path C:\Users\Helmut\AppData\Local\Temp\arduino_build_966445 -warnings=none -build-cache C:\Users\Helmut\AppData\Local\Temp\arduino_cache_68201 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.esptool_py.path=C:\Users\Helmut\AppData\Local\Arduino15\packages\esp32\tools\esptool_py\3.0.0 -prefs=runtime.tools.esptool_py-3.0.0.path=C:\Users\Helmut\AppData\Local\Arduino15\packages\esp32\tools\esptool_py\3.0.0 -prefs=runtime.tools.xtensa-esp32-elf-gcc.path=C:\Users\Helmut\AppData\Local\Arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-97-gc752ad5-5.2.0 -prefs=runtime.tools.xtensa-esp32-elf-gcc-1.22.0-97-gc752ad5-5.2.0.path=C:\Users\Helmut\AppData\Local\Arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-97-gc752ad5-5.2.0 -prefs=runtime.tools.mkspiffs.path=C:\Users\Helmut\AppData\Local\Arduino15\packages\esp32\tools\mkspiffs\0.2.3 -prefs=runtime.tools.mkspiffs-0.2.3.path=C:\Users\Helmut\AppData\Local\Arduino15\packages\esp32\tools\mkspiffs\0.2.3 -verbose C:\Users\Helmut\Downloads\ESPwebRadio\ESPwebRadio.ino

C:\Program Files\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files\Arduino\hardware -hardware C:\Users\Helmut\AppData\Local\Arduino15\packages -tools C:\Program Files\Arduino\tools-builder -tools C:\Program Files\Arduino\hardware\tools\avr -tools C:\Users\Helmut\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files\Arduino\libraries -libraries C:\Users\Helmut\Documents\Arduino\libraries -fqbn=esp32:esp32:nodemcu-32s:FlashFreq=80,UploadSpeed=921600 -vid-pid=10C4_EA60 -ide-version=10813 -build-path C:\Users\Helmut\AppData\Local\Temp\arduino_build_966445 -warnings=none -build-cache C:\Users\Helmut\AppData\Local\Temp\arduino_cache_68201 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.esptool_py.path=C:\Users\Helmut\AppData\Local\Arduino15\packages\esp32\tools\esptool_py\3.0.0 -prefs=runtime.tools.esptool_py-3.0.0.path=C:\Users\Helmut\AppData\Local\Arduino15\packages\esp32\tools\esptool_py\3.0.0 -prefs=runtime.tools.xtensa-esp32-elf-gcc.path=C:\Users\Helmut\AppData\Local\Arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-97-gc752ad5-5.2.0 -prefs=runtime.tools.xtensa-esp32-elf-gcc-1.22.0-97-gc752ad5-5.2.0.path=C:\Users\Helmut\AppData\Local\Arduino15\packages\esp32\tools\xtensa-esp32-elf-gcc\1.22.0-97-gc752ad5-5.2.0 -prefs=runtime.tools.mkspiffs.path=C:\Users\Helmut\AppData\Local\Arduino15\packages\esp32\tools\mkspiffs\0.2.3 -prefs=runtime.tools.mkspiffs-0.2.3.path=C:\Users\Helmut\AppData\Local\Arduino15\packages\esp32\tools\mkspiffs\0.2.3 -verbose C:\Users\Helmut\Downloads\ESPwebRadio\ESPwebRadio.ino

Using board ‘nodemcu-32s’ from platform in folder: C:\Users\Helmut\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6

Using core ‘esp32’ from platform in folder: C:\Users\Helmut\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6

cmd /c if exist “C:\\Users\\Helmut\\Downloads\\ESPwebRadio\\partitions.csv” copy /y “C:\\Users\\Helmut\\Downloads\\ESPwebRadio\\partitions.csv” “C:\\Users\\Helmut\\AppData\\Local\\Temp\\arduino_build_966445\\partitions.csv”

cmd /c if not exist “C:\\Users\\Helmut\\AppData\\Local\\Temp\\arduino_build_966445\\partitions.csv” copy “C:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6\\tools\\partitions\\default.csv” “C:\\Users\\Helmut\\AppData\\Local\\Temp\\arduino_build_966445\\partitions.csv”

Detecting libraries used…

“C:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-97-gc752ad5-5.2.0/bin/xtensa-esp32-elf-g++” -DESP_PLATFORM “-DMBEDTLS_CONFIG_FILE=\”mbedtls/esp_config.h\"" -DHAVE_CONFIG_H -DGCC_NOT_5_2_0=0 -DWITH_POSIX “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/config” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/app_trace” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/app_update” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/asio” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/bootloader_support” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/bt” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/coap” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/console” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/driver” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/efuse” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp-tls” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp32” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_adc_cal” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_event” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_http_client” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_http_server” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_https_ota” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_https_server” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_ringbuf” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_websocket_client” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/espcoredump” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/ethernet” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/expat” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/fatfs” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/freemodbus” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/freertos” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/heap” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/idf_test” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/jsmn” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/json” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/libsodium” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/log” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/lwip” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/mbedtls” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/mdns” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/micro-ecc” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/mqtt” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/newlib” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/nghttp” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/nvs_flash” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/openssl” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/protobuf-c” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/protocomm” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/pthread” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/sdmmc” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/smartconfig_ack” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/soc” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/spi_flash” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/spiffs” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/tcp_transport” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/tcpip_adapter” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/ulp” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/unity” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/vfs” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/wear_levelling” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/wifi_provisioning” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/wpa_supplicant” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/xtensa-debug-module” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp-face” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp32-camera” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp-face” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/fb_gfx” -std=gnu++11 -Os -g3 -Wpointer-arith -fexceptions -fstack-protector -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib -w -Wno-error=maybe-uninitialized -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-missing-field-initializers -Wno-sign-compare -fno-rtti -c -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10813 -DARDUINO_NodeMCU_32S -DARDUINO_ARCH_ESP32 “-DARDUINO_BOARD=\”NodeMCU_32S\"" “-DARDUINO_VARIANT=\”nodemcu-32s\"" -DESP32 -DCORE_DEBUG_LEVEL=0 “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6\\cores\\esp32” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6\\variants\\nodemcu-32s” “C:\\Users\\Helmut\\AppData\\Local\\Temp\\arduino_build_966445\\sketch\\ESPwebRadio.ino.cpp” -o nul -DARDUINO_LIB_DISCOVERY_PHASE

Alternatives for AsyncEventSource.h: [ESPAsyncWebServer-master@1.2.3 ESPAsyncWebServer-main@1.2.3]

ResolveLibrary(AsyncEventSource.h)

→ candidates: [ESPAsyncWebServer-master@1.2.3 ESPAsyncWebServer-main@1.2.3]

“C:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-97-gc752ad5-5.2.0/bin/xtensa-esp32-elf-g++” -DESP_PLATFORM “-DMBEDTLS_CONFIG_FILE=\”mbedtls/esp_config.h\"" -DHAVE_CONFIG_H -DGCC_NOT_5_2_0=0 -DWITH_POSIX “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/config” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/app_trace” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/app_update” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/asio” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/bootloader_support” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/bt” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/coap” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/console” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/driver” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/efuse” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp-tls” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp32” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_adc_cal” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_event” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_http_client” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_http_server” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_https_ota” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_https_server” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_ringbuf” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp_websocket_client” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/espcoredump” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/ethernet” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/expat” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/fatfs” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/freemodbus” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/freertos” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/heap” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/idf_test” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/jsmn” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/json” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/libsodium” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/log” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/lwip” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/mbedtls” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/mdns” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/micro-ecc” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/mqtt” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/newlib” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/nghttp” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/nvs_flash” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/openssl” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/protobuf-c” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/protocomm” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/pthread” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/sdmmc” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/smartconfig_ack” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/soc” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/spi_flash” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/spiffs” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/tcp_transport” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/tcpip_adapter” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/ulp” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/unity” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/vfs” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/wear_levelling” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/wifi_provisioning” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/wpa_supplicant” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/xtensa-debug-module” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp-face” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp32-camera” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/esp-face” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6/tools/sdk/include/fb_gfx” -std=gnu++11 -Os -g3 -Wpointer-arith -fexceptions -fstack-protector -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib -w -Wno-error=maybe-uninitialized -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-missing-field-initializers -Wno-sign-compare -fno-rtti -c -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10813 -DARDUINO_NodeMCU_32S -DARDUINO_ARCH_ESP32 “-DARDUINO_BOARD=\”NodeMCU_32S\"" “-DARDUINO_VARIANT=\”nodemcu-32s\"" -DESP32 -DCORE_DEBUG_LEVEL=0 “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6\\cores\\esp32” “-IC:\\Users\\Helmut\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\1.0.6\\variants\\nodemcu-32s” “-IC:\\Users\\Helmut\\Documents\\Arduino\\libraries\\ESPAsyncWebServer-main\\src” “C:\\Users\\Helmut\\AppData\\Local\\Temp\\arduino_build_966445\\sketch\\ESPwebRadio.ino.cpp” -o nul -DARDUINO_LIB_DISCOVERY_PHASE

Alternatives for AsyncTCP.h: []In file included from C:\Users\Helmut\Downloads\ESPwebRadio\ESPwebRadio.ino:1:0:

ResolveLibrary(AsyncTCP.h)

C:\Users\Helmut\Documents\Arduino\libraries\ESPAsyncWebServer-main\src/AsyncEventSource.h:25:22: fatal error: AsyncTCP.h: No such file or directory

→ candidates: []compilation terminated.

Mehrere Bibliotheken wurden für “AsyncEventSource.h” gefunden

Benutzt: C:\Users\Helmut\Documents\Arduino\libraries\ESPAsyncWebServer-main Nicht benutzt: C:\Users\Helmut\Documents\Arduino\libraries\ESPAsyncWebServer-master

Bibliothek ESPAsyncWebServer-main in Version 1.2.3 im Ordner: C:\Users\Helmut\Documents\Arduino\libraries\ESPAsyncWebServer-main wird verwendet

exit status 1

Fehler beim Kompilieren für das Board NodeMCU-32S.

Konrad

Konrad

5 Sterne für Andreas Schröder!!
Jetzt bekomme ich sogar meine Lieblingsradiostationen ohne große Probleme rein (Übrigens muss das s in https weg, sonst klappt es nicht; – wie z.B. beim SWR3).

Ich bin total begeistert! Vielen Dank.

Gerald Lechner

Gerald Lechner

Danke für den Hinweis. Die Widerstände waren vertauscht. Ich habe die Abbildung korrigiert.

Rocco

Rocco

Wenn ich das richtig sehe, dann sind die 4,7k und 22k Widerstände in der Abbildung der Bestückung vertauscht.

K

K

Hallo nochmal Herr Lechner,

die Frage 2 meines vorigen Kommentares hat sich erledigt. Offensichtlich ist mein Löt “Know-How” noch nicht so gut. 2 unterschiedliche Lötpunkte haben nicht funktioniert (hat mich einen kompletten Sonntag gekostet (Puh meine Frau schimpft)).
Das mit dem Akku muss ich mir in Ruhe auch mal anschauen. Habe parallel nämlich eine Variante mit Breadboard gebaut für die Fehlersuche (siehe oben). Wenn Sie aber Hinweise haben; – vielen Dank.

Übrigens ist meine Kiste inzwischen so voller Kabel, dass ich die beiden 3Druck Aussen Panele nicht mehr zusammen bekomme. Schade.

Grüße

Konrad

Denis

Denis

Hello Gérald,
I just finished testing “internet radio” project and I’m happy with the first results but I have a question : What should be the exact features and characteristics of the MP3 stream in order to be decoded by the sketch? It perfectly works with the stations you have already programmed in this first version, but unfortunately many French (or other countries) radios cannot be decoded, only a small number of these stations seem to be working. We are waiting for your answer if you have one. Of course, we are looking forward for the new version of your sketch, hoping that it will decode a greater number of radio streams. And before signing, I want to congratulate you for this excellent job you did with this webradio project. Many thanks Gérald !
Denis.

Konrad

Konrad

Hallo Herr Lechner,

vielen Dank schon mal für die Antworten auf meine Fragen. Hat geholfen.

Nun habe ich alle Teile zusammen und auch schon soweit alles zusammengelötet. Der ESP war schon im Vorfeld mit dem Programm bedient worden.
Die gute Nachricht zuerst: Das Radio funktioniert!

Und nun zu den Problemen, bei denen ich leider nach intensiver Suche nach den Fehlern immer noch keine Lösung gefunden habe.

1. Das Radio funktioniert bisher nur auf Bayern1. Ein Drehen oder Drücken des Encoders bringt gar nichts. Nichts tut sich. Somit habe ich vermutlich ein Problem mit dem Rotary Encoder (habe aber diesen auch schon durch einen anderen ausgetauscht; – somit kann es das Teil an sich nicht sein). Ich habe schon mehrfach die Verlötungen und die Anschlüsse überprüft und kann keine Fehler finden. Haben Sie eventuell einen Hinweis?
2. Das Radio funktioniert nur mit Anschluss über die USB Verbindung mit dem ESP. Ich habe zwar schon einen Fehler gefunden (die LED des ESP leuchtete zuerst nicht auf, – Fehler aber habe ich gefunden – war ein Verlötungsthema mit GND an das Akkusystem). Ohne den USB Anschluss des ESP leuchtet zwar nun die LED des ESP; – und ich höre die Lautsprecher leicht “scharren und knacken”; – aber es kommt nichts; – die LCD Anzeige ist zwar auch an; – aber das “Bayern1” zeigt sich auch nicht.
Was könnte das für ein Fehler sein?

Vielen Dank schon jetzt.

Konrad

Markus

Markus

Hallo Herr Lechner,

vielen Dank für das Spannende Projekt.
funktioniert alles tadellos.

Ich habe mich aber von der Kategorie Anfänger täuschen lassen. Fand es dann schon etwas komplexer.

Gruß Markus

Gerald Lechner

Gerald Lechner

Es ist eine zweite Version der Firmware in Vorbereitung bei der die Konfiguration über ein Web-Interface erfolgt. Ebenso kann dann die Stationsliste über das Web-Interface geändert werden. Da einige Radio-Streams nicht funktionieren, wird es auch eine Möglichkeit geben eine URL zu testen, ehe sie in die Stationsliste aufgenommen wird.

Gerald Lechner

Gerald Lechner

@Konrad. Für das Projekt kann jedes ESP32 Modul verwendet werden. Damit die angegebene Verdrahtung, Platine passt ist ein ESP32 Dev Kit oder ESP32 Node MCU erforderlich. Die Kompilierung dauer ziemlich lange, dfa die Bibliothek ESP8266Audio aus vielen Modulen besteht, die kompiliert und gelinkt werden müssen. Bei einem weiteren Kompiliervorgangh, geht es schneller, da die Arduino-IDE kompilierte Teile speichert und wiederverwendet.
Wenn lcd.init() einen Fehler ergibt, haben Sie nicht die im Blog-Beitrag angegebene Library installiert, sondern eine der zahlreichen anderen LCD Liobraries. Es könnte sein dass damit zum Beispiel das Lautsprechersymbol nicht angezeigt wird.
Falls das Programm ohne Rotary-Encoder getestet werden soll muss der PinS 34 des ESP32 mit 3.3V verbunden werden.

Rainer

Rainer

@Andreas Schröder
Super Idee. Über soetwas hatte ich auch schon nachgedacht, wenn man z.B. unterwegs ist und man schnell mal mit dem Handy WLAN zur Verfügung stellen will. Aber da den Code zu ändern, bin ich zu dumm. Wie können wir in Kontakt treten? Hätte gerne deinen Code.
Hatte beim Aufbau einen eigenartigen Fehler. Wenn ich das Radio über USB versorgt habe, alles iO. Auch nach Abziehen des USB ca. 30Sek. über Akku ging. Danach beim Einschalten kurzer Knack und dann nichts mehr. Ausgang des Step-Up nur 1,2 Volt. Kondensator von 1000 auf 470 uF getauscht. Gleicher Fehler. Jetzt hab ich ihn ganz rausgelassen. Radio funktioniert top.
Gruß
Rainer

Konrad

Konrad

Hallo Herr Lechner,

Offensichtlich gibt es ein reges Interesse an diesem Projekt, weil die Teile konstant bei AZ ausverkauft sind.

Nun; – jetzt ist soweit Alles, was fehlt, bestellt und unterwegs und ich dachte mir, dass das Ganze ja wohl auch mit einem ESP-32 Dev Kit C V4 von AZ funktionieren sollte (Bin ich da richtig?). Einstellung in der Arduino IDE habe ich immer die Boardeinstellung “DOIT ESP32 DEVKIT V1” gewählt (hat bei anderen Projekten immer geklappt).
Da die Teile noch nicht alle da sind, dachte ich mir, ich lade das Script schon mal auf den ESP32; – mit folgende Erfahrungen:
1. Es dauert elendig lang bis etwas passiert (ist bei meinen anderen Scripten nie so lange gewesen). Ist das normal.
2. Den Fehler mit der lcd.init () habe ich auch bekommen. Aufgrund der Info von Christian (vom 08. April) habe ich das in lcd.begin () geändert. Dann hat er das Script geschluckt. Kann das sein?

Da ich leider noch nicht Alles habe, kann ich noch nicht Alles soweit ausprobieren. Wäre aber dankbar für eine kurze Antwort auf mein kleinen Fragen oben.

Grüße aus dem Südwesten der Republik

Konrad

Gerald Lechner

Gerald Lechner

@ElPaul. Die erste URL funktioniert auch im Browser nicht (Fehler zu viele Weiterleitungen) Die zweite URL funktioniert bei mir aber sher schlecht.

ElPaul

ElPaul

Second situation. I added another station. Sitll reboot.
logs:
…Connecting to WiFi
Connected
Active station http://sluchaj.radiorodzina.pl/RadioRodzinaWroclawLIVE.mp3
sourcebuffer created – Free mem=162584
created decoder
Decoder start…
Guru Meditation Error: Core 1 panic’ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0×400014fd PS : 0×00060230 A0 : 0×800fc494 A1 : 0×3ffb18c0
A2 : 0×00000000 A3 : 0xfffffffc A4 : 0×000000ff A5 : 0×0000ff00
A6 : 0×00ff0000 A7 : 0xff000000 A8 : 0×00000000 A9 : 0×3ffb1cd0
A10 : 0×00000001 A11 : 0×00000000 A12 : 0×3ffe0798 A13 : 0×00000000
A14 : 0×00000000 A15 : 0×00000118 SAR : 0×00000008 EXCCAUSE: 0×0000001c
EXCVADDR: 0×00000000 LBEG : 0×400014fd LEND : 0×4000150d LCOUNT : 0xffffffff

ELF file SHA256: 0000000000000000

Backtrace: 0×400014fd:0×3ffb18c0 0×400fc491:0×3ffb18d0 0×40103a3a:0×3ffb1be0 0×40103a76:0×3ffb1c70 0×400ddaae:0×3ffb1cb0 0×400d12fb:0×3ffb1d50 0×400d32f5:0×3ffb1de0 0×400d2b45:0×3ffb1f30 0×400d29db:0×3ffb1f50 0×400d3ae5:0×3ffb1f70 0×400d1241:0×3ffb1f90 0×400dec31:0×3ffb1fb0 0×4008a392:0×3ffb1fd0

Rebooting…

ElPaul

ElPaul

Hi. Everything works great right after build.
But how to add a station, e.g. http://waw01-03.ic.smcdn.pl/2330-1.mp3
ESP keeps restarting. In my logs I have:
…Connecting to WiFi
Connected
Active station http://waw01-03.ic.smcdn.pl/2330-1.mp3
sourcebuffer created – Free mem=162272
created decoder
Decoder start…
MP3 done
ets Jun 8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0×13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0×00,q_drv:0×00,d_drv:0×00,cs0_drv:0×00,hd_drv:0×00,wp_drv:0×00
mode:DIO, clock div:1
load:0×3fff0018,len:4
load:0×3fff001c,len:1216
ho 0 tail 12 room 4
load:0×40078000,len:10944
load:0×40080400,len:6388
entry 0×400806b4
Connecting to WiFi
And such a loop all the time.
Can you help me?

Christian

Christian

Mit der Modifikation einer externen 5.02V USB-Stromversorgung am Verstärkereingang habe ich das Radio gebaut. Wegen eines Kompilierungsfehlers (meine Arduino IDE: 1.8.13) musste ich die Sketch-Zeile 237 von „lcd.init()“ auf „lcd.begin()“ ändern damit war auch das Upload problemlos.
Das Radio hat gleich bestens funktioniert: sofort wurde ein Sender gespielt, ok waren die Encoder-Sendersuche & Lautstärkeregulierung (nur das Lautsprechersymbol fehlte am LCD).
Dann wollte ich die Senderliste erweitern („define STATIONS 25“ und unter Beachtung der Syntax). Übersehen habe ich, dass es eine m3u und nicht mp3 URL war: natürlich keine Funktion – und das war es mit dem Radio. Upload des original-Sketch‘s: Keine Reaktion auf den Encoder – aber seither ist das Lautsprechersymbol am Display!
Nach Löschen des Bordverwalters und seinem Link in den Voreinstellungen habe ich alles laut Blog neu installiert: Lautsprechersymbol am LCD, keine Reaktion auf Encoder, nur ein ~1sec periodisches Blinken der ESP32-LED und synchron ein sehr leises tok, tok, aus dem Lautsprecher. Upload des neu vom Blog heruntergeladen Sketch’s, dann auch direktes copy and paste vom Blog: wie gehabt.
Alle Uploads funktionierten mit der Änderung in Zeile 237. Laut Serial Monitor ist die WIFI Verbindung ok, aber ich bekomme einen „Guru Meditation Error: Core1…“ Trotz Recherche fange ich demit nichts an (ich bin Laie; Kopien des Upload Loggings und des Seriellen Monitors sind unten – und für mich unverständlich).
Habe ich den ESP32 abgeschossen? Der USB zwischen PC und ESP32 hat 5+/-0.05V, der Strom schwankt zwischen ca. 70 und 150 mA. Dann habe ich den Funktionsgenerator-Sketch am ESP32 geladen, der funktioniert problemlos am seibst gebauten Hackster-Oszilloskop. ESP32 doch nicht abgeschossen? Dann wieder Bordverwalter gelöscht, neu installiert, Webradio-Sketch geladen: wie gehabt. Alle Verbindungskabel und Platine gemessen, ok. Verkabelung des Webradio am Steckbrett nachgebaut: wie gehabt. Wieder Funktionsgenerator geladen und Oszilloskop meiner Enkelin gezeigt: ok!
Was kann ich tun? Bitte um einen Ratschlag!
Christian

Protokoll Hochladen:
Der Sketch verwendet 876682 Bytes (66%) des Programmspeicherplatzes. Das Maximum sind 1310720 Bytes.
Globale Variablen verwenden 40280 Bytes (12%) des dynamischen Speichers, 287400 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 Bytes.

esptool.py v3.0-dev
Serial port COM11
Connecting…..
Chip is ESP32-D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: c8:c9:a3:c8:70:98
Uploading stub…
Running stub…
Stub running…
Changing baud rate to 921600
Changed.
Configuring flash size…
Auto-detected Flash size: 4MB
Compressed 8192 bytes to 47…
Writing at 0×0000e000… (100 %)
Wrote 8192 bytes (47 compressed) at 0×0000e000 in 0.0 seconds (effective 2978.9 kbit/s)…
Hash of data verified.
Compressed 18656 bytes to 12053…
Writing at 0×00001000... (100 %)
Wrote 18656 bytes (12053 compressed) at 0×00001000 in 0.2 seconds (effective 988.4 kbit/s)…
Hash of data verified.
Compressed 876800 bytes to 493948…
Writing at 0×00010000... (3 %)
Writing at 0×00014000... (6 %)
Writing at 0×00018000... (9 %)
Writing at 0×0001c000… (12 %)
Writing at 0×00020000... (16 %)
Writing at 0×00024000... (19 %)
Writing at 0×00028000... (22 %)
Writing at 0×0002c000… (25 %)
Writing at 0×00030000... (29 %)
Writing at 0×00034000... (32 %)
Writing at 0×00038000... (35 %)
Writing at 0×0003c000… (38 %)
Writing at 0×00040000... (41 %)
Writing at 0×00044000... (45 %)
Writing at 0×00048000... (48 %)
Writing at 0×0004c000… (51 %)
Writing at 0×00050000... (54 %)
Writing at 0×00054000... (58 %)
Writing at 0×00058000... (61 %)
Writing at 0×0005c000… (64 %)
Writing at 0×00060000... (67 %)
Writing at 0×00064000... (70 %)
Writing at 0×00068000... (74 %)
Writing at 0×0006c000… (77 %)
Writing at 0×00070000... (80 %)
Writing at 0×00074000... (83 %)
Writing at 0×00078000... (87 %)
Writing at 0×0007c000… (90 %)
Writing at 0×00080000... (93 %)
Writing at 0×00084000... (96 %)
Writing at 0×00088000... (100 %)
Wrote 876800 bytes (493948 compressed) at 0×00010000 in 9.3 seconds (effective 757.1 kbit/s)…
Hash of data verified.
Compressed 3072 bytes to 128…
Writing at 0×00008000... (100 %)
Wrote 3072 bytes (128 compressed) at 0×00008000 in 0.0 seconds (effective 1536.0 kbit/s)…
Hash of data verified.

Leaving…
Hard resetting via RTS pin…

Protokoll Serial Monitor:
Rebooting…
ets Jun 8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0×13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0×00,q_drv:0×00,d_drv:0×00,cs0_drv:0×00,hd_drv:0×00,wp_drv:0×00
mode:DIO, clock div:1
load:0×3fff0018,len:4
load:0×3fff001c,len:1216
ho 0 tail 12 room 4
load:0×40078000,len:10944
load:0×40080400,len:6388
entry 0×400806b4
Connecting to WiFi
…Connecting to WiFi
…Connecting to WiFi
…Connecting to WiFi
Connected
Guru Meditation Error: Core 1 panic’ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0×400014dc PS : 0×00060c30 A0 : 0×800ddf51 A1 : 0×3ffb1ef0
A2 : 0×000000ff A3 : 0×000000fb A4 : 0×000000ff A5 : 0×0000ff00
A6 : 0×00ff0000 A7 : 0xff000000 A8 : 0×800ddd55 A9 : 0×3ffb1ec0
A10 : 0×00000000 A11 : 0×00000000 A12 : 0×00000000 A13 : 0×00000000
A14 : 0×00000000 A15 : 0×00000002 SAR : 0×00000006 EXCCAUSE: 0×0000001c
EXCVADDR: 0×000000ff LBEG : 0×4000c2e0 LEND : 0×4000c2f6 LCOUNT : 0×00000000

ELF file SHA256: 0000000000000000

Backtrace: 0×400014dc:0×3ffb1ef0 0×400ddf4e:0×3ffb1f00 0×400d0ed5:0×3ffb1f20 0×400d120c:0×3ffb1f80 0×400debfa:0×3ffb1fb0 0×4008a392:0×3ffb1fd0

Andreas Wolter

Andreas Wolter

@Andreas Schröder: gerne nehmen wir die Ergänzung zum Projekt als Update mit in den Beitrag rein.
Ich habe Ihnen dazu eine Mail geschickt. Wir werden die Daten dann hier zur Verfügung stellen.

Grüße,
Andreas Wolter
AZ-Delivery Blog

holm / Christian Müller

holm / Christian Müller

Vielen Dank für das nette Projekt! Es ist eine gute Erweiterung unseres Tonuino Hörspielboxbastelprpjekts für Kinder.

Andreas Schröder
> Hätte hier gerne den Code, Screenshots und die Plotterdatei für die Folie bereitgestellt … Bei Interesse einfach melden :)

Ich wäre interessiert! Möchten Sie sich bitte bei mir melden? Gerne auf einem der Wege die unter https://mueller.network aufgelistet sind. Vielen Dank im Voraus!

Andreas Schröder

Andreas Schröder

Super Projekt – nettes kleines Webradio mit Bauteilen aus der Schublade (und dem Drucker). Habe schon zwei davon gebaut. Mit geschnittener schwarzer Folie auf weißem Gehäuse sieht es echt gut aus.
Weil das auf- und zuschrauben nicht prickelnd ist, habe ich den Code um folgendes erweitert:
1. einen automatischen AP-Modus bei fehlender WLAN-Verbindung, der dann per Webserver die Zugangsdaten abfragt.
2. Im normalen Betrieb kann die Senderliste über ein Webfrontend gepflegt werden.
Hätte hier gerne den Code, Screenshots und die Plotterdatei für die Folie bereitgestellt … Bei Interesse einfach melden :)
Danke für das schöne Projekt :)

Nico

Nico

@Thomas:
Das Problem mit dem “…iskey”… hatte ich auch.
Die Abhilfe bestand bei mir darin, die aktuellen esp32 board-downloads zu machen, wie im Artikel beschrieben.

Achim

Achim

Hallo Zusammen,
Ich habe das Radio nun auch fertig gebaut, allerdings noch für mich ein paar kleine Änderungen vorgenommen.
Da ich das Radio nicht Mobil brauche, habe ich ein anderes Gehäuse an die Bauteile angepasst.
https://www.thingiverse.com/thing:5336137
Da habe ich dann wie beschrieben einen externen Verstärker benutzt und die NF-Ausgänge vom ESP
zu den Chinch Buchsen mit zwei Kondensatoren 4,7µF 16V gleichspannungsmäßig entkoppelt.
Das funktioniert ganz gut und durch den Verstärker und größere Boxen hat das Radio einen richtig guten Klang.
Bei den MP3-Streams habe ich, sofern vorhanden die High Streams genommen.
Das Problem mit fehlerhaften Streams habe ich auch beobachtet, einige Radiosstreams sind
offenbar nicht für dieses Projekt geeignet, muss man halt Testen ;-)
Vielen Dank an den Autor für dieses super Projekt.
Achim

Philippe D

Philippe D

Lieber Herr, Ich hatte viel Spaß beim bauen Internetradio mit dem ESP32. Alles funktioniert gut.
Ich erwähnte den Verstärker, weil er zufiel Parasiten produzierte. Eventuell wäre ein Trenntransformator sinnvoll. Verweise?
Alle Radios, die Sie geben, funktionieren gut und werden schnell gefunden.

Auf der anderen Seite funktionieren meine französischen Webradio-Favoriten trotz vieler Versuche nicht, oder sogar manchmal für einige, erst nach langem Warten.
Radio Classic, France Culture, France Inter, France Musique, TSF Jazz und Radio Swiss Jazz. sind meine Radiofavoriten.
Können Sie mir in diesem Punkt bitte weiterhelfen.

Andererseits, wenn das Programm beim Start die zuvor verwendete Station nicht findet, sucht es immer wieder und startet auch neu (reboot).
At this time, Das rotierende xxx ist nicht effektiv, um ein anderes funktionierendes Radio zu finden. Es ist Schade.

Vielen Dank im Voraus für Ihre Hilfe und für dieses sehr interessante Programm. Herzliche Grüße.

Zum beispiel : von http://fluxradios.blogspot.com/p/flux-radios-francaise.html#Nationales%20DEF

https://www.radioswissjazz.ch/fr/reception/internet
http://radioclassique.ice.infomaniak.ch/radioclassique-high.mp3
http://direct.franceculture.fr/live/franceculture-midfi.mp3

Gerald Lechner

Gerald Lechner

Eine Versorgung über den USB-Anschluss des ESP32 ist ohne Verdrahtungsänderung möglich. Allerdings ist dann der Ein- Aus-Schalter am Lautstärke-Potentiometer ohne Funktion. Eine andere Möglichkeit wäre am 5V Eingang des Verstärkers statt des StepUp-Converters eine externe 5V-Spannungsquelle (z.B. USB Netzgerät) anzuschließen. Dann funktioniert der Ein- Aus-Schalter.

Siggi

Siggi

Hallo,
schönes Projekt. Eine Frage:
Wenn man das Ganze ohne Akku, Laderegler und Step up Converter aufbauen möchte:
Reicht es dann denn ESP32 über die USB Buchse mit Spannung zu versorgen, oder muss dann an der Verdrahtung noch etwas geändert werden?
Gruß SP

Sigi

Sigi

Hallo, wollte vorab mal das Gehäuse drucken, aber bei allen Teilen gibt es Probleme. Es wird zwar etwas gedruckt, paßt aber irgendwie nicht zur Vorlage. Beim Vorderteil zb. wird nach einiger Zeit der Druck ohne Filamentnachschub ausgeführt! Habe einen Artillery Sidewinder X1 der an sich sehr gut funktioniert.

Gerald Lechner

Gerald Lechner

@Julian. Der ESP32 hat gegenüber dem ESP8266 einen gravierenden Vorteil. Die Ausgabe des Streams egal ob Analog oder I2S erfolgt über direkten Speicherzugriff auf Hardwarebasis im Hintergrund. Die Software muss nur dafür sorgen, dass ausreichend Daten im Buffer sind die kontinuierliche Ausgabe des Streams wird nicht beeinflusst. Beim ESP8266 erfolgt die Ausgabe an RX über die Programmsoftware, daher können parallell laufende Aktionen im Programm zu kurzen Unterbrechungen des Streams führen, was als Knack Geräusch gehört wird.

Andreas Wolter

Andreas Wolter

@Gerhard Spinker: “invalid conversion from int to …” bedeutet, dass ein Datentyp nicht korrekt verwendet wurde. Da das Programm aber problemlos laufen sollte, vermute ich, dass etwas mit der Installation der Arduino IDE bzw. des ESP Cores nicht korrekt ist. Ich schreibe ihnen dazu eine E-Mail.

Grüße,
Andreas Wolter

Julian

Julian

Ich hatte hier vor einiger Zeit einige ESP8266 d1 minis erworben. Damit geht das im Prinzip auch (Output über RX). Hatte dafür einen PAM8302A Verstärker benutzt (einfacher, nur mono) und ein OLED Display per I2C.

Will ich aber im Loop beispielsweise die Uhrzeit aktualisieren oder Senderinformationen anzeigen, gibt es bei jedem print()/sendBuffer() eine Störung auf dem Audiosignal (knacken, kurze pause).
Das habe ich auch mit Kondensatoren und Widerständen am PAM-Eingang nicht weg bekommen.

Norbert

Norbert

Hallo
habe alles bestellt und aufgebaut. Funktionierte sofort nach dem ersten einschalten. Stationen können gewählt werden . Aber nach einer nicht bestimmbarer Zeit ist keine Wiedergabe mehr vorhanden. Entweder Stille oder ein 50 Hz Brummton. Die Bedienelemente funktionieren nicht mehr, der Reset Taster reagiert nicht. Erst ein “Power Reset” bringt Abhilfe, aber leider nur für kurze Zeit. Wo liegt der Fehler??
Bitte um Hilfe.
Gruß
Norbert Schrills

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert