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 |
|
|
1 |
|
|
1 |
|
|
2 |
Widerstände 4.7 kOhm |
|
2 |
Widerstände 22 kOhm |
|
1 |
Widerstand 10 kOhm |
|
1 |
Elko 1000uF / 10V |
|
1 |
|
|
1 |
|
|
1 |
|
|
1 |
|
|
1 |
|
|
1 |
|
|
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 |
|
|
1 |
|
|
1 |
|
|
diverse |
|
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.
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.
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“.
Für das Display benötigen Sie eine Bibliothek, die über die Arduino Bibliotheksverwaltung installiert werden kann. Das ist die Bibliothek „LiquidCrystal I2C“.
Eine weitere Bibliothek wird für den Rotary-Encoder benötigt. Ihr Name ist „AiEsp32RotaryEncoder“.
Kernstück dieses Projekts ist aber die Bibliothek „ESP8266Audio“.
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.
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(); }
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.
Viel Vergnügen mit dem Internet Radio
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.
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.
334 Kommentare
Kurt Hohmann
Hallo Jörn,
WO hast du den Eintrag geändert?
Ich habe das gleiche Problem, sehe aber den Fehler nicht.
VG Kurt
Kurt Hohmann
Hallo Werner (März 21, 2025 at 12:59pm)
Ich vermute einen Syntaxfehler beim Ändern der Senderliste.
Klammern gesetzt, Komma beachtet oder die Anzahl der Sendereinträge nicht geändert?
#define STATIONS 24 //gibt an, dass 24 Sender in der Liste sind.
Jeder Eintrag hat
{“http://Adresse“,“Anzeigename“},
Wenn du dich da verzählt hast, geht es schief.
VG Kurt
Andy
Thanks @Alfred
I reinstalled the ESPAsyncWebServer provider that you used:
- ESPAsyncWebServer 3.1.0 By lacamera
All good now. It builds and runs OK.
@Ronald are you using the 3.1.0 library by lacamera?
There was an earlier message about deleting the SD and WIFI folders
@ben – maybe similar problems for you?
I included all the library versions that I was using in a previous message (except for the 3.1.0 ESPAsyncWebServer – at that point, mine was using v3.7.4 by ESP32Async rather than lacamera)
Hope this gives you some clues.
Alfred
@ThomasErne.
“ESP geht auf stop” hast du geschrieben…. Hm. Tut mir leid… Das ist einfach zu wenig
Info von deinem Problem.
VG Alfred
Alfred
Werner, was hast du denn geändert???? Kannst auch dorthin deine Fragen stellen, geht schneller.... intern10online.de
VG Alfred
Werner
Am Anfang funktionierte alles super.
Dann änderte ich die Sendenliste. Dann begann das Problem. jetzt kommt immer diese Fehlermeldung.
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
Gespeicherte Station 23 von 25
Active station http://mp3.hitradiort1.c.nmdn.net/rt1rockwl/livestream.mp3
sourcebuffer created – Free mem=162324
created decoder
Decoder start…
MP3 done
ets Jul 29 2019 12:21:46
Kann mir jemand helfen?
Thomas ERNE
Hallo
Der ESP geht auf stop – Kann mir da jemand weiterhelfen ?
Mit freundlichen Grüßen Thomas
Alfred
Hallo Rudolf,,,,
danke für deine Rezension. Schön, dass alles jetzt funktioniert…
VG Alfred
Rudolf Beck
Letzter Nachtrag:
Bei Streamadressen der Sender /Play.mp3 ergänzen und anstelle https nur http.
Beispiel SWR3:
statt https://liveradio.swr.de/sw282p3/swr3/
geht mit http://liveradio.swr.de/sw282p3/swr3/play.mp3.
Nochmals vielen Dank für die Hilfen, vor allem hervorzuheben Alfred, ohne den ich bereits aufgegeben hätte.
Gruß Rudi
Rudolf Beck
So, ich habe nun auch den Fehler mit dem Rotary gefunden. Ein Kabel war abgegangen, neu verlötet und jetzt funktioniert die Senderplatzauswahl.
Einzig mit den Sendern kämpfe ich noch, finde außer NDR2 bisher keine weiteren abspielbaren Sender…
Rudolf Beck
So, jetzt spielt das Radio dank intensiver Hilfe von Alfred.
Allerdings nur NDR2 auf Platz 1 und 2.
Über Rotary lässt sich nichts ändern, nur über Senderliste mittels IP-Adresse.
Hat mir jemand Webadresse von ein paar weiteren Sendern, die funktionieren?
Und eventuell Ideen, warum Rotary nicht funktioniert?
Danke im voraus
Rudi
Rudolf Beck
Hallo zusammen,
erst einmal vielen Dank an Alfred, mit seiner Hilfe konnte ich als Anfänger einige Schritte weiterkommen. Ich war mir lange nicht sicher, ob das Kompilieren erfolgreich war und funktionierte. Einfacher Trick: Versorgt ESP über USB mit Spannung, dann müsste das WLAN Webradio auftauchen. Dann eigene WLAN-Name und Passwort eingeben und über seriellen Monitor mit Bausrate 115200 beobachten, was der ESP macht.
So kam ich drauf, dass mi ESP alles ok war, aber eine Versorgungsleitung auf Platine nicht verbunden war. Dieses korrigiert und Radio hat gespielt.
Als ich Sender gewechselt habe hat sich das Radio dann leider aufgehängt.
Jetzt suche ich nach Lösung für den nächstem Fehler.
Alfred
Hi,,,in die Runde….
all Habe mal ein bischen rumexperimentiert: - Ich nutze diesen Sketch aus dem Update: ESPwebRadio-20250211T114304Z-001.zip Diese läuft ohne Probleme durch den Compiler. Arduino-IDE 1.8.19 ESP32 Version 1.0.6 ESP8266Audio 1.9.5 LiquidCrystalI2C 1.1.2 AiEsp32RotaryEncoder 1.4.0 ESP8266Audio 1.9.5 Mit anderen Versionen gab es Fehlerausschriften. Die restlichen, erforderlichen Bibliotheken habe ich wie oben im Blog installiert. Das SketchBook sollte eben auch im Ordner ...\Dokumente\Arduino liegen. z.B.: C:\Users\Alfred\Documents\Arduino Da die Aktualisierung hier sehr lang dauert, könnt ihr auch eine PN an mich senden. intern10online.de
Könnte auch vom oben genannten Sketch eine *.bin Datei zur Verfügung stellen. Die kann dann direkt geflasht werden.
VG
Jörn
@Alfred
Danke für die Antwort. Leider ist die Zeitverzögerung aufgrund der Moderation hier sehr groß. Der Elko war korrekt verbaut.
Aber ich konnte das Problem inzwischen lösen, es war ein Softwareproblem: In der Funktion MDCallback hatte die Zeile
`char s132, s264;`
den Fehler ausgelöst und initialisieren der Arrays mit
`char s132 = {0} , s264 = {0};`
hat geholfen. War also ein Speicherzugriffsfehler. Trotzdem seltsam, dass der Code offenbar bei anderen durchlief, aber jetzt tönt auch mein Webradio :)
Gruß Jörn
Andy
Hi all,
Does anyone have a reference list of the library versions that successfully compiled Andreas Schroeder’s sketch?
I get the same error as others
senderconfig:29:50: error: call of overloaded ‘getParam(int)’ is ambiguous
I presume the build has opted for the wrong alternative package at some point but what are the correct ones.
This is my list at the end of the compile:-
Using library Preferences at version 1.0 in folder: C:\Users\user\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Preferences
Using library ESP8266Audio at version 2.0.0 in folder: C:\Users\user\Documents\Arduino\libraries\ESP8266Audio
Using library HTTPClient at version 1.2 in folder: C:\Users\user\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\HTTPClient
Using library WiFi at version 1.0 in folder: C:\Users\user\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\WiFi
Using library LiquidCrystal_I2C at version 1.1.2 in folder: C:\Users\user\Documents\Arduino\libraries\LiquidCrystal_I2C
Using library Wire at version 1.0.1 in folder: C:\Users\user\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Wire
Using library Ai_Esp32_Rotary_Encoder at version 1.7 in folder: C:\Users\user\Documents\Arduino\libraries\Ai_Esp32_Rotary_Encoder
Using library ESP_Async_WebServer at version 3.7.1 in folder: C:\Users\user\Documents\Arduino\libraries\ESP_Async_WebServer
Using library FS at version 1.0 in folder: C:\Users\user\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\FS
Using library Async_TCP at version 3.3.5 in folder: C:\Users\user\Documents\Arduino\libraries\Async_TCP
Using library SPIFFS at version 1.0 in folder: C:\Users\user\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\SPIFFS
Using library SD at version 1.0.5 in folder: C:\Users\user\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\SD
Using library SPI at version 1.0 in folder: C:\Users\user\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\SPI
These were the 3 errors reported…
senderconfig:29:50: error: call of overloaded ‘getParam(int)’ is ambiguous
senderconfig:53:47: error: invalid conversion from ‘const AsyncWebParameter*’ to ‘AsyncWebParameter*’ [-fpermissive]
wlanconfig:135:47: error: invalid conversion from ‘const AsyncWebParameter*’ to ‘AsyncWebParameter*’ [-fpermissive]
Thanks
Andy
Ronald Kattner
Hallo,
ich komme nicht weiter.
Ich nutze Arduino 1.8.19, ESP32 1.0.6, habe alle Bibliotheken wie hier beschrieben eingebunden. ich bekomme beim Kompilieren folgende Fehlermeldung:
In file included from C:\Internetradio\ESPwebRadio\senderconfig.ino:2:0:
C:\IDEPortable\arduino-1.8.19-windows\arduino-1.8.19\portable\sketchbook\libraries\ESPAsyncWebServer-3.1.0\src/ESPAsyncWebServer.h:33:22: fatal error: AsyncTCP.h: No such file or directory
compilation terminated.
Mehrere Bibliotheken wurden für “WiFiClient.h” gefunden
Benutzt: C:\IDEPortable\arduino-1.8.19-windows\arduino-1.8.19\portable\packages\esp32\hardware\esp32\1.0.6\libraries\WiFi
Nicht benutzt: C:\IDEPortable\arduino-1.8.19-windows\arduino-1.8.19\libraries\WiFi
exit status 1
Fehler beim Kompilieren für das Board ESP32 Dev Module
von den EspAsyncwebserver gibt es nur die Version 3.1.0.
Kann mir bitte jemand sagen, wo der Fehler liegt, ich bin am Verzweifeln.
Danke
Ben
@Rudolf
Hallo,
ich habe das selbe Problem wie du.
Habt ihr eine Lösung gefunden?
Würde mich sehr über eine Antwort freuen.
Alfred
Hi, also das Forum ist hier nicht optimal….
- Meine Programmcodezeilen im letzten Post von mir, werden hier nicht korrekt dargestellt.
- Sendet deshalb eine PN an intern10@online.de…. wenn jmd die Zeilen möchte.
LG Alfred …bBh…
Alfred
Hi, in die Runde…..
if (tryCount < MAXWLANTRY) { Serial.print(F("IP-Adresse per DHCP ist ")); Serial.println(WiFi.localIP()); // ab hier eingefügt , ab Zeile 95 bei mir im Programm wlanconfig // ANFANG Anzeige der IP Adresse am Display nach Bootvorgang lcd.clear(); lcd.setCursor(0,0); lcd.print(“IP-Adresse”); lcd.setCursor(0,1); // Cursor setzen Zeile 2 Position 1 lcd.print(WiFi.localIP()); // aktuelle IP-Adresse ausgeben delay(1000); lcd.clear(); // ENDE der eingefügten Zeilen // // Für den Automatik-Test if (TESTMODUS) { preferences.putString(“password”, “XXX”); } return(true); // when connection ok, stop here and return positiveErfahrungsbericht:
- Sollte ein Sender nicht empfangen werden können, ist es schwierig mit dem Rotary-Knopf einen anderen Sender einzustellen. Da hilft nur Online über den Browser einen anderen Platz zu wählen.
Bei mir sind es die Sender auf den Plätzen 5 , 8 , 10 und 11… Werde dort andere eintragen.
- Auch prellt der RotaryDreher manchmal. Ist aber nicht so schlimm.
- Um die IP-Adresse des WLAN-Radios ohne die Konsole(Arduino-IDE) herauszufinden, habe ich die folgenden Zeilen in im Programmteil “wlanconfig” eingefügt.
- Nach jedem Bootvorgang wird ca. 1Sek die IP angezeigt.
Ansonsten läuft das Teil prima.
Könnte für euch Gehäuse drucken und auch ESPs flashen…..
LG Alfred
Alfred
@Rudolf.
Hi,lösche die Librarys:
C:\Users\Admin\Downloads\arduino-1.8.19-windows\arduino-1.8.19\libraries\WiFi
C:\Users\Admin\Downloads\arduino-1.8.19-windows\arduino-1.8.19\libraries\SD
Die Arduino-Ide sollte auch vom WIN-Programmordner gestartet werden.
C:\Programm(x86)\Arduino\arduino.exe (Installationsordner)
In einem Installationsunterordner liegen dann auch schon viele Librarys.
LG….Viel Erfolg.
s.auch Post @Thoralf 12.12.24
Rudolf Beck
Hallo Experten,
Jetzt bräuchte ich doch Eure fachmännische Hilfe.
Alles zusammengebaut und verdrahtet, aber es kommt nur ein Balken in der oberen Reihe des LCD.
Das Kompilieren des Sketches mit den Unterordnern
ESPwebRadio, audio, lcdisplay, rotary, senderconf.h, senderconfig, senderlist, wlanconf.h, wlanconfig funktioniert irgendwie nicht.
Habe Arduino V1.8.19, und darin ESP32 V1.0.6, LiquidCrystal I2C V1.1.2, AiEsp32RotaryEncoder V1.4.0 und ESP8266Audio V1.9.5 eingebunden.
Arduino: 1.8.19 (Windows 10), Board: “ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 115200, None”
Folgende Fehlermeldungen kommen:
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.
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\ESPwebRadio.ino:62:74: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings] (kommt nacheinander 48 Mal)
audio:8:11: error: redefinition of ‘const int preallocateBufferSize’
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\ESPwebRadio.ino:65:11: note: ‘const int preallocateBufferSize’ previously defined here
audio:9:11: error: redefinition of ‘const int preallocateCodecSize’
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\ESPwebRadio.ino:66:11: note: ‘const int preallocateCodecSize’ previously defined here
audio:11:7: error: redefinition of ‘void* preallocateBuffer’
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\ESPwebRadio.ino:68:7: note: ‘void* preallocateBuffer’ previously defined here
audio:12:7: error: redefinition of ‘void* preallocateCodec’
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\ESPwebRadio.ino:69:7: note: ‘void* preallocateCodec’ previously defined here
audio:15:17: error: redefinition of ‘AudioGenerator* decoder’
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\ESPwebRadio.ino:78:17: note: ‘AudioGenerator* decoder’ previously defined here
audio:16:27: error: redefinition of ‘AudioFileSourceICYStream* file’
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\ESPwebRadio.ino:79:27: note: ‘AudioFileSourceICYStream* file’ previously defined here
audio:17:24: error: redefinition of ‘AudioFileSourceBuffer* buff’
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\ESPwebRadio.ino:80:24: note: ‘AudioFileSourceBuffer* buff’ previously defined here
audio:18:17: error: redefinition of ‘AudioOutputI2S* out’
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\ESPwebRadio.ino:81:17: note: ‘AudioOutputI2S* out’ previously declared here
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\audio.ino: In function ‘void MDCallback(void*, const char*, bool, const char*)’:
audio:21:6: error: redefinition of ‘void MDCallback(void*, const char*, bool, const char*)’
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\ESPwebRadio.ino:91:6: note: ‘void MDCallback(void*, const char*, bool, const char*)’ previously defined here
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\audio.ino: In function ‘void stopPlaying()’:
audio:36:6: error: redefinition of ‘void stopPlaying()’
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\ESPwebRadio.ino:106:6: note: ‘void stopPlaying()’ previously defined here
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\audio.ino: In function ‘void startUrl()’:
audio:55:6: error: redefinition of ‘void startUrl()’
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\ESPwebRadio.ino:125:6: note: ‘void startUrl()’ previously defined here
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\lcdisplay.ino: At global scope:
lcdisplay:5:22: error: redefinition of ‘LiquidCrystal_I2C lcd’
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\ESPwebRadio.ino:76:19: note: ‘LiquidCrystal_I2C lcd’ previously declared here
lcdisplay:8:18: error: redefinition of ‘uint8_t speaker 8’
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\ESPwebRadio.ino:84:9: note: ‘uint8_t speaker 8’ previously defined here
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\lcdisplay.ino: In function ‘void showStation()’:
lcdisplay:12:6: error: redefinition of ‘void showStation()’
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\ESPwebRadio.ino:144:6: note: ‘void showStation()’ previously defined here
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\rotary.ino: At global scope:
rotary:16:22: error: redefinition of ‘AiEsp32RotaryEncoder rotaryEncoder’
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\ESPwebRadio.ino:74:22: note: ‘AiEsp32RotaryEncoder rotaryEncoder’ previously declared here
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\rotary.ino: In function ‘void rotary_loop()’:
rotary:20:6: error: redefinition of ‘void rotary_loop()’
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\ESPwebRadio.ino:163:6: note: ‘void rotary_loop()’ previously defined here
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\rotary.ino: In function ‘void readEncoderISR()’:
rotary:54:16: error: redefinition of ‘void readEncoderISR()’
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\ESPwebRadio.ino:197:16: note: ‘void readEncoderISR()’ previously defined here
C:\Internetradio\Dateien Andreas Schröder\ESPwebRadio\senderlist.ino: In function ‘void setup_senderList()’:
senderlist:5:3: error: ‘sender’ was not declared in this scope
Mehrere Bibliotheken wurden für “SD.h” gefunden
Benutzt: C:\Users\Admin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\SD
Nicht benutzt: C:\Users\Admin\Downloads\arduino-1.8.19-windows\arduino-1.8.19\libraries\SD
Mehrere Bibliotheken wurden für “WiFi.h” gefunden
Benutzt: C:\Users\Admin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\WiFi
Nicht benutzt: C:\Users\Admin\Downloads\arduino-1.8.19-windows\arduino-1.8.19\libraries\WiFi
exit status 1
redefinition of ‘const int preallocateBufferSize’
Und damit endet das Kompilieren ☹.
Hat jemand eine Idee, was falsch ist bzw. was ich machen kann?
Alfred
@Rudolf
Hi, was gibt denn die Compilerkonsole aus, wenn Du den Sketch NUR kompilierst?… Das wäre erstmal ein Ansatz. Es dürfen keine Fehler angezeigt werden, außer die Warnung von der LCD-Bibliothek.
LG Alfred
Alfred
@Jörn:
Hi, ich kann nur vermuten: Die Programmierung ist warscheinlich iO abgelaufen. Aber die Versorgungsspannungen oder auch die Siebung der Versorgungsspannung ist nicht optimal.
Messe die 5 Volt Pins nach und auch die 3,3V Pins! Ist auch ein Elko mit verbaut worden?
Manchmal haben auch die Elkos eine Macke, großer Leckstrom… dann pumpt die Spannung.
Der ESP zieht auch ein bissel Strom, dass muss der Elko ausgleichen, vor allem in der Startphase.
LG
cadet
Vorab, mittlerweile funktioniert mein Aufbau, zumindest im Moment noch, komplett einwandfrei.
Aber, auch ich hatte anfangs den mehrfach beschriebenen “panic” Loop Fehler. Leider habe ich vor dem letzten Upload gleich zwei Dinge geändert, (statt besser eins nach dem anderen):
1. @Reiner: Auskommentieren der “Serial.printf(”METADATA ‘%s’ = ‘%s’\n", ptr, s1, s2);" Zeile im Code. Toll, dass es solche User-Kommentare gibt. Danke.
2. Boot- und Reset- Button am Controller gedrückt, beim Start des Uploads.
Des Weiteren hatte ich vorher schon den “WiFi-Manager” eingebunden, um SSID und Passwort am Smartphone für unterschiedliche WLANS konfigurieren zu können. Das hat mit dem “PANIC”-Problem natürlich nichts zu tun und es sollte mit dem Original WiFi Code oder dem Access Point Code von Reiner ganz sicher genauso funktionieren.
Was mich allerdings anfangs sehr verwirrt hatte, das war die Tatsache dass der mir von AZ-Delivery gelieferte Rotary-Encoder anders aussah und anders angeschlossen werden musste, als im Bild “Schaltung” des Blogs. Dort ist nur ein Anschluss an 5V, an der Unterseite des Encoders dargestellt.
Die Abbildungen zum realen Hardware-Aufbau passten jedoch wieder zu meinem Encoder mit den 5 Pins: CLK,DT,SW,+,GND.
Den Platinen-Aufbau finde ich jetzt im nachhinein, wo alles funktioniert, ganz toll, Respekt, da Kabelverbindungen zur Peripherie keine einzige Kabelvertauschung erforderlich machte. Ich bin absoluter Anfänger und habe den Controller zur Stromversorgung im Moment noch ohne Batterie-Anschluss am USB Port meines Laptops hängen. Als nächstes werde ich das Gehäuse auf meinem Saturn8K ausdrucken und mit dem Batterieanschluss dann fertig stellen.
Ich kann das Projekt deshalb wirklich nur jedem Anfänger empfehlen. Übrigens habe auch ich mich sehr schnell dafür entschieden PlatformIO auf VSCODE statt der Arduino IDE zu verwenden. Und wenn ICH (73) das kann, dann kann das ganz sicher JEDER :-).
Nochmal danke an den “Erfinder” und alle die ihre Kommentare hier hinterlassen haben, und weiter so, – macht Spaß. ;-).
Rudolf Beck
Hallo,
Habe Spannung auf 5,2 V eingestellt und alles verdrahtet.
Beim Einschalten kommen nur einzeilige weiße Blöcke.
Vermute da hat irgendwas mit der Programmierung nicht geklappt.
Wie mache ich weiter?
Freue mich über jeden Tip…
Jörn
Hallo,
ich habe folgendes Problem: Nach Einschalten der Spannung höre ich für einen Sekundenbruchteil das Programm vom Sender. Dann Knacken und Brummen und der ESP startet neu. Immer wieder. In der kurzen Zeit kann ich die Sender auch mit dem Drehgeber verstellen. Es scheint also zumindest alles richtig verdrahtet zu sein.
Im seriellen Monitor sehe ich, dass Wifi Verbindung klappt
und dann aber:
sourcebuffer created – Free mem=128428
created decoder
Decoder start…
Guru Meditation Error: Core 1 panic’ed (LoadProhibited). Exception was unhandled.
und es geht von vorne los
Kann jemand helfen? Ich habe ein anderes ESP Board versucht, aber gleiches Verhalten.
Viele Grüße
Jörn
Alfred
Hallo Rodolf,
den ESP nicht auflöten…. versorge DIr ein paar Steckerleisten welche Du auflötest. Die Boards immer steckbar einsetzen.
Den Sketch kannst Du auch OHNE die Peripherie auf das Board laden. Wenn Du die Konsole im Arduino-IDE startest, kannst Du alles Verfolgen was das Board nach dem Upload macht.
Stelle natürlich auch die richtige Baud-Rate an der Konsole ein, sonst siehst Du nix… :-)
Viel Erfolg….. Alfred
Alfred
Hallo in die Runde… erstmal vielen Dank an alle Entwickler, welche dieses Projekt WEBRADIO erstellt haben.
Nach einigen Hürden spielt das Ding seine Lieder ganz gut ab.
Tips: – prüft alle Lötstellen auf den Platinen (es gibt einige KALTE Lötstellen !!!)
– zum Hochladen des Sketches habe ich die ADUINO-IDE 1.8.19 genutzt
– die ESP32 – Version ist die 1.0.6
– ESPAsynWebServer 3.1.0 von lacamera
Einige Hürden gab es auch beim Hochladen vom PC aus. Es sollten unbedingt USB-Kabel
genutzt werden, welche NICHT zu lang sind und die auch die 5Volt bis zum Board bringen.
Sonst klappt der UpLoad nicht.
Sollte der ESP32 nicht von allein in den Flash-Modus gehen, dann drückt während des
Kompiliervorgangs die Boot-Taste und kurz die Reset-Taste. Danach beide Tasten loslassen.
Dann viel Spaß beim Zusammenbau…… :-)
Rudolf Beck
Hallo zusammen,
ich habe eine grundlegende Frage, da ich bisher nur mit Arduino etwas gespielt habe.
wie bringe ich den Sketch auf den ESP32?Verbinde ich einfach die Platine mit dem USB meines Laptops und dann Arduino mit den entsprechenden Einstellungen? Oder soll/muss ich die Pheripherie (Einschalter mit Verstärker, LCD, Drehgeber, Spannungsversorgung etc.) vor Verbingung über USB anschließen?
Wenn ich das richtig verstanden habe, soll ich den Mikrocontroller zuerst programmieren und dann einsetzen. Da ich keinen passsenden Sockel habe würd eich den ESP32 direkt auf die Lochrasterplatine löten. Wenn ich dann später am Sketch etwas ändern muss, kann ich dann einfach Stromversorgung vom Internetradio entfernen und ESP32 über USB mit Laptop verbinden?
Robin
Habe noch selbst gemachte PLatinen:
unter Discord →
robinegs
Holger Spitz
Hallo, bei mir kommt auch die Fehlermeldung
call of overloaded ‘getParam(int)’ is ambiguous
beim compilieren.
Hat jemand einen Rat für mich?
Ingo
Liest Marcel hier noch mit? (Im Github-Repository habe ich keine Kontaktadresse gefunden.)
Ich bin nicht so der begnadete Löter und Deine fertige Platine lässt weniger Spielraum für Fehler ;-) Hast Du davon noch ein Exemplar abzugeben?
Danke!
Ingo
Moin!
Ich habe eine Frage zu den Federleisten, bei denen kein Link angegeben ist. Kann ich diese verwenden und auf 19 Pins abschneiden/sägen?
https://www.az-delivery.de/products/40-pin-buchsenleiste
Danke!
Ernst27
Esp32 Radio!
Das Projekt ist bei mir elektrisch vollendet.
Schwierigkeiten habe ich mit den Kommentaren gelöst. Jetzt meine Frage an die Community: "Gibt es eine 3D Druckdatei für ein Gehäuse?. Hat jemand einen Vorschlag dazu. Ich würde mich freuen, wenn auch hier Dateien zur Verfügung gestellt würden. LG Ernst
Jürgen Dorn
Ich versuche das Internet Radio mit dem ESP32Wroom aufzubauen an welchen Pin wird der Rotary Encoder angesclossen? Komme nicht weiter!!
Walter dl2sew
@Thoralf
Die Warnung mit dem LiquidCrystal_I2C darf ignoriert werden.
Wenn exakt die beschriebenen Bibliotheken verwendet werden, sollte das kompilieren auch funktionieren.
@Chris
Die Widerstände sind Spannungsteiler zur Pegelanpassung für die NF-Verstärker (sind unkritisch) und der Elko dient zur “Spannungsstabilisierung”(Siebung).
Electro eBooks
ESP32 eBooks
https://electroebooks.com/esp32
PeKo
Kann man auch irgendwoher den Titel und Interpreten anzeigen lassen?
Ich habe es auf ein 128×64 OLED umgestellt und habe noch Platz auf dem Display
Krister Svärd
@Thoralf. I have the exact same error as you. Any progress in finding a solution?
Chris
Hallo Zusammen,
ich komme eher aus der Programmierecke, daher eine Einstiegsfrage:
Ich würde gerne verstehen, wieso bzw. zu welchem Zweck dienen die Wiederstände bzw. der ELKO. Wie würden diese dimensioniert.
Vielen Dank
Chris
Thoralf
Hallo zusammen. Ich habe jetzt auch alles probiert, compile error. Bitte helft mir.
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), 115200, 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/thoralf/Downloads/ESPWebRadio 2/ESPwebRadio/senderconfig.ino: In lambda function:
senderconfig:44:50: error: call of overloaded ‘getParam(int)’ is ambiguous
AsyncWebParameter* p2 = request→getParam(0);
^
In file included from /Users/thoralf/Downloads/ESPWebRadio 2/ESPwebRadio/senderconfig.ino:2:0:
/Users/thoralf/Documents/Arduino/libraries/ESP_Async_WebServer/src/ESPAsyncWebServer.h:403:30: note: candidate: const AsyncWebParameter* AsyncWebServerRequest::getParam(const char*, bool, bool) const
const AsyncWebParameter* getParam(const char* name, bool post = false, bool file = false) const;
^
/Users/thoralf/Documents/Arduino/libraries/ESP_Async_WebServer/src/ESPAsyncWebServer.h:405:30: note: candidate: const AsyncWebParameter* AsyncWebServerRequest::getParam(const String&, bool, bool) const
const AsyncWebParameter* getParam(const String& name, bool post = false, bool file = false) const { return getParam(name.c_str(), post, file); };
^
/Users/thoralf/Documents/Arduino/libraries/ESP_Async_WebServer/src/ESPAsyncWebServer.h:416:30: note: candidate: const AsyncWebParameter* AsyncWebServerRequest::getParam(size_t) const
const AsyncWebParameter* getParam(size_t num) const;
^
senderconfig:60:47: error: invalid conversion from ‘const AsyncWebParameter*’ to ‘AsyncWebParameter*’ [-fpermissive]
AsyncWebParameter* p = request→getParam(i); // read parameter
^
/Users/thoralf/Downloads/ESPWebRadio 2/ESPwebRadio/wlanconfig.ino: In lambda function:
wlanconfig:137:47: error: invalid conversion from ‘const AsyncWebParameter*’ to ‘AsyncWebParameter*’ [-fpermissive]
AsyncWebParameter* p = request→getParam(i);
^
Mehrere Bibliotheken wurden für “WiFi.h” gefunden
Benutzt: /Users/thoralf/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/WiFi
Nicht benutzt: /Applications/ArduinoV1.app/Contents/Java/libraries/WiFi
Mehrere Bibliotheken wurden für “SD.h” gefunden
Benutzt: /Users/thoralf/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/SD
Nicht benutzt: /Applications/ArduinoV1.app/Contents/Java/libraries/SD
Nicht benutzt: /Users/thoralf/Documents/Arduino/libraries/SD
exit status 1
call of overloaded ‘getParam(int)’ is ambiguous
YuFi
Uii… Aus diesem Beitrag wird man weder schlau, noch glücklich!! Am End haufen zeit sinnlos verballert!! mit den codes aus hier geht nicht wirklich iwas…. aber was ich auf jeden korrigieren kann… mit dem bib vor version 2.0 geht gar nichts… hatte zwar n kompilier und hochlade erlebniss mit den beuesten bibs.. aber richtige verbindung geschweigedenn lala aus dem ding kam nicht..,..spart euch eure lebzeit.. ist viel mehr n verkaufs ding vom az-wohl…
Lars Häuser
Hallo zusammen, ich habe das Radio inzwischen den halb fertig. Mit den Arduino Bits war es etwas nervig, aber letztlich hat alles geklappt. Das Platinenlayout ist schwer entzifferbar, aber auch das hat geklappt.
@Andreas Schröder: Haben Sie das 3d Case zufällig mit Autodesk Fusion erstellt und könnten die Fusionen-Dateien zum Bearbeiten zur Verfügung stellen? Denn ich verwende einen anderen Akkutyp und muss das Gehäuse noch etwas umbauen.
Ich nutze aktuell einen einzigen 18650. Dieser reicht aber nicht für genug Strom, um den ESP zu starten. Ich muss es erst kurz an den Strom hängen zum Starten und dann kann ich das Kabel ziehen und alles funktioniert. Daher müssen jetzt zwei rein. Dann sollte es hoffentlich klappen.
Danke und VG
Lars Häuser
Udo
Hallo!
Ich habe ein Problem das Internet-Radio ans Laufen zu bringen.
Sämtliche Bibliotheken habe ich mehrmals neu installiert. Aufbau mehrmals kontrolliert.
Erhalte bei jedem Hochladen die Meldung: Fehler beim Kompilieren für das Bord ESP32 Dev Module.
Ich weiß mir keinen Rat mehr!
Sollte eigentlich ein “Anfänger-Projekt” ein.
Benno
Hallo,
ich habe das Problem inzwischen gelöst. Beim Abspeichern muss man die Erweiterung in der IP Adresse löschen.
Bei mir zB “/?play=4” http://192.168.179.7/?play=4.
ronny
ich habe das Problem das ich die ESPAsyncWebServer.h benötige. Welche Bibliothek muss noch installiert werden? Ich habe einige Bibliotheken probiert aber es kommen immer Fehler.
Benno
Hallo,
ich habe, dank der vielen Tipps im Blog, das Radio zum laufen gebracht. Leider gelingt es mir nicht die Senderliste dauerhaft zu ändern. Bei jedem Neustart kommt wieder die ursprüngliche Liste.
Viele Grüße
Benno
Richard Derganc
Hello. I have difficulties with code. ESP32 start and made a connection to my wifi and after that when the decoder starts there is an error and ESP restarts itself. It is Guru Medidation Error: Core 1 panic’ed….
Can someone help me or at least direct me to the solution?
Thanks in advance,
Richard
Dre van den Elshout
@Wolf Geldmacher Ich habe versucht, Ihren aktualisierten Code von https://owncloud.womaro.ch/owncloud/index.php/s/gjR4LMZMaRWYWbt herunterzuladen
Allerdings funktioniert der Link bei mir nicht. Wurden die Daten an einen anderen Ort verschoben?
Thomas Dorn
Ok , keine Ahnung warum aber das Ding funktioniert jetzt ( nur für Moderator , den letzten Post nicht veröffentlichen ). Heute neu eingesteckt und funktioniert …
Was ich noch hinzugefügt habe ist ein Timer für das Backlight .
Wenn es das für jemand interessant ist kann ich das gerne posten .
MFG
Th. Dorn