Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery

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

 

diverse

Befestigungsschrauben 2.2mm

 

 

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.

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

351 Kommentare

Werner oe9fwv

Werner oe9fwv

@Jörg:
Ich hatte das gleiche Problem wie du, das Radio funktionierte nur mit einem USB Anschluss am ESP32. Ursache: Das Batterielademodul brachte nicht genug Strom auf, um den Up-Converter zu versorgen und die Spannung zur Versorgung des ESP32 war unter 4V. Da ich das Radio ohne Batterie beitreiben wollte, hab ich einfach den Upconverter eingang direkt an die USB Versorgung des Batterieladegerätes angeschlossen. (2 Lötaugen links und rechts des Mini-USB Steckers) Damit funktioniert das Radio, Stromverbrauch ist <200mA. Mit der Bedienung habe ich allerdings noch Probleme. Es gibt im Sketch Radiostationen, die nicht erreichbar sind (Polen, Hessen3) und wenn man so eine Station auswählt ist man in einer Endlosschleife gefangen, das Radio bootet neu und da die Station im Memory gespeichert wird, ist man wieder dort wo man keine Verbindung hat. Tips willkommen, wie man das lösen kann.

louis chambon

louis chambon

hello ! I just bought the kit INTERNET RADIO.
I have a problem with the sotfware :
" ARDUINO\libraries\SD\src/utility/Sd2PinMap.h:524:2: error: #error Architecture or board not supported."

I work with latest IDE V2.3.2 :
card manager V1.0.6 ESP32 ( < 2.0.0 as noticed in the documentation)
and these version for libraries :
V1.9.7 ESP8266audio
V1.6 AiEsp32RotaryEncoder
V2.1.0 Preferences
V1.1.2 LiquidCrystal_I2C.h
V1.2.4 SD
Is somebody have a solution ?
thank’s

Jörg

Jörg

Esp32 funktioniert nur bei USB Anschluss am Board, auch mit Powerbank. Betrieb mit Akku funktioniert nicht, kein Wlan. Test mit Versorgung über ext.Usb an Pin 5V funktioniert nur wenn ich beide Usbbuchsen am Gehäuse mit einer Drahtbrücke verbinde, sonst gleiches Fehlerbild. Test erfolgte auch noch mit Esp32 Devkit v4, gleiches Problem. Leider bin ich mit meinen Ideen am Ende. Der Akkubetrieb wäre wichtig.

Wolle

Wolle

Wie Rolf im Juni24 geschrieben hat, habe ich es auch gemacht: erst die in den Fehlermeldungen auftauchenden Bibliotheken löschen (Pfad wird angezeigt), dann exakt nach den Bildern die Bibliotheken mit entsprechenden Versionen neu laden, plötzlich funktioniert das Ganze.
ESP32 Version 1.0.6
LiquidCrystal I2C Version 1.1.2
AiEsp32RotaryEncoder Version 1.4.0
ESP8266Audio Version 1.9.5

Rolf

Rolf

Ich habe das Radio zum Laufen gebracht. Als ESP32 habe ich das “ESP32 Pico Kit” ausgewählt.
Was mir (noch) nicht gefällt, ist daß die meißten Stationen sehr leise sind. Probleme gab es noch mit der Senderliste. Sobald ein Sender auftaucht, welcher nicht läuft, fährt sich das Radio fest. Aus und Einschalten hilft dann auch nichts, da sich das Radio die letzte Station merkt und immer wieder dort hin will. Ich konnte mir nur so helfen, die entsprechende Station im Sketch mit vorgestellten // inaltiv zu schalten , den Sketch neu zu kompilieren und wieder hoch zu laden.
Vllt kann ich mit diesen Hinweisen einigen Usern weiterhelfen.

Rolf

Rolf

Heute wurde mein Kommentar veröffentlicht.
Zwischenzeitlich habe ich meine Probleme gelöst und den ESP32 beschreiben können.
Ich bin folgendermaßen vorgegangen:
Die Ordner auf meinen Pc, welche in den Fehlermeldungen angezeigt wurden, habe ich gelöscht. Danach habe ich genau nach Anleitung verfahren, und darauf geachtet, dß genau die in den Bildern angegebenen Bibliotheksversionen geladen wurden.
Wenn die Arduino IDE die daten hochladen will, muß man korz den Taster Boot auf der Platine drücken. Danach hat es bei mir einwandfrei geklappt.
Ich weiß nicht, ob es mit fertigen Bin-Dateien überhaupt klappt, da man ja seine Verbindungsdaten vom WLAN eintragen muss.
@Thorsten Die Plotterdatei hat nichts mir der 3D-Druckdatei zu tun. Zum 3D-Druck musst du Dir die stl-Dateien herunterladen und iese auf dem 3-Drucker ausdrucken.

Rolf

Rolf

Ich bin am Ende.
Ich habe mir den Bausatz gekauft und möchte den Sketch auf meinen ESP32 -WROOM-32 laden. Ich habe nach Anleitung das Board über espressif.com in der Version 1.06 geladen. In der Bordauswahl erscheint dann mein Board ESP32-WROOM-32 nicht. Wenn ich ein anderes Board , z.B. ESP32 Dev Module auswähle, kommen beim Kompilieren einige Fehlermeldungen.
Gibt es nicht eine fertige Bin-Datei, welche man dann einfach hochladen kann?

rlm

rlm

@Glenn Foyster
Take the German words and plug them into Amazon.de
That’s how I found the parts.

Oliver Dreier

Oliver Dreier

Stand 06/2024
Beim Compilieren gibt es diverse Fehlermeldungen.
Es ist auch echt ätzend, in den Kommentaren nach Hinweisen zu suchen, wie es gehen sollte (was scheinbar die genauen Bibliotheken und deren Versionen betrifft). Es gibt geschätzt 5 Andreas die alle Beiträge gemacht haben, aber die alle in ihrem “Kontext” richtig sind, aber im gesamten nicht weiterbringen.
Das Projekt aus aus 03/2022
→ Zeugs in die Tonne, nicht mehr dran denken.

Thorsten

Thorsten

Ich komme mit der Plotterdatei nicht klar. Das ist doch wohl eine Datei zum ausdruck des Gehäuses mit einem 3D-Drucker, oder? Gibt’s die auch in DXF oder so?

Gerald Grummt

Gerald Grummt

@Andreas:
Danke für den Hinweis, mein kleiner update-Beitrag war für die Variante “2. Advent: Neues Internetradio mit ESP32 und MAX 98357A” gedacht. Sorry nochmals ..
Gruß
Gerald

Hajo

Hajo

Aus meinem Step-Up Konverter kommt leider nur konstant 4.0 Volt, egal bei welcher Poti-Stellung. Ich vermute mal, das Ding ist nicht in Ordnung. Hat jemand eine Idee?

Herbert Dietl

Herbert Dietl

Hallo, ich habe schon mehrmals versucht den " Deckel " mit meinem 3D-Drucker auszudrucken. Die Datei wurde mit dem Ultimate Cura erstellt.
Leider funktioniert das nicht, da die vier Füsse zuerst und dann erst der Grundrahmen.
Also Seitenverkehrt. Auch das 3D-Spiegeln hilft nicht. Es gibt nur ein Fadengewirr.
Gruß Herbert

Mumut

Mumut

Bonjour,
Très déçu de cette expérience avec AZ-delivery. Pourtant j’ai souvent acheté des éléments sans problème MAIS le kit vendu avec une promesse de fonctionnement (c’est le principe d’un KIT) qui est totalement faux.
J’ai refait deux les cablages testé plusieurs fois avec les programmes fournis aucun fonctionnement possible.
J’ai dépensé de l’argent pour rien sauf enrichir AZ-DELIVRY. Je pense que ce KIT est trop ancien et quand on lit le forum je ne suis pas le seul à avoir des problèmes et aucune solution donné par le vendu. C’est de l’arnaque pure.
Je pense que je vais arrêter de travailler avec ce site.
Bon courage pour ceux qui continu.

Andreas

Andreas

@Gerald Grummt:
Ihre Änderungen und Hinweise betreffen aber nicht das hier vorgestellte Radio. Wir haben einen ganz anderen Aufbau der Senderliste und auch keine display.ino. Nur, damit andere nicht durcheinander kommen!

Andreas

Andreas

Hier mal paar Antworten:
@Glenn Foyster:
Eingabe SSID und Passwort in wlanconfig ist richtig und wichtig!
Radiosender alle nur in mp3 und keine sicheren Seiten!! Kein https://!
Error für die LiquidCrystal Bibliothek einfach ignorieren, dass ist nur eine Information. Der Webserver muss korrkt installiert sein. Dringend an meine Tips weiter unten im Forum halten. Die Versionen müssen genau stimmen.
Wenn Radio WLAN anzeigt, mit einem Smartphone diesen AP auswählen und und in diesem Netzwerk anmelden, dann auf die angegebene IP gehen….
@ Bernd:
Es ist wirklich so, es werden keine Seiten mit https:// angenommen! NUR http funktioniert. Die Adressen lassen sich aber auch alle unter http: erreichen. Einfac das “s” entfernnen.

Andreas

Andreas

@Germano Perina
I also had this error from time to time. But it has nothing to do with the radio. Comes from “Arduino IDE”. Just restart, be patient!

Andreas

Andreas

@Karl-Heinz
Kann es sein, dass Du hier falsch bist? Dieses Radio hat keine Weckfunktion. Du meinst doch sicher dieses hier: “Radiowecker mit dem AZ-Touch und ESP32”, oder? Dann musst Du auch dort Deine Fragen stellen. :-)

Germano Perina

Germano Perina

Running the sketch of Radio Internet i got the following error
Guru Meditation Error: Core 1 panic’ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
.
.
.
What happened ??. The code is correct.

Karl-Heinz

Karl-Heinz

@All,
kann leider nicht auf das Webinterface zugreifen, sprich, kann keine Weckzeiten usw einstellen, Browser öffnet nicht die Webseite http://radiowecker/, radio usw funktioniert aber ansonsten tadellos. Betriebssystem Windows 11 Firefox, was mache ich falsch???
Danke schonmal für Eure Antworten

Karl-Heinz

Karl-Heinz

@All,
Radio funktioniert einwandfrei, habe nur ein “Problem”, wie kann ich die Senderliste per Webinterface ändern, das Webinterface lässt sich weder auf Handy noch auf PC öffnen?
(Android, Windows 11 Firefox, Microsoft Edge). Firewall abgestellt…
Wer kann helfen???

Glenn Foyster

Glenn Foyster

@Bernd
Vielen dank für Ihre Antwort. Ich bin immer noch etwas verwirrt darüber, was ich in die Registerkarte „wlanconfig“ eingebe. Gib ich meine SSID und mein Passwort in den Zeilen 62 und 63 ein und wenn ja, was sonst?
Ich habe das gemacht und hochgeladen und bekomme nur WLAN auf dem Display. Es wurden zwar einige Radiosender angezeigt (ich habe alle deutschsprachigen Sender auf ein paar englische umgestellt), aber ohne Ton. Nur WLAN zeigt.
Ich erhalte auch zwei Warnungen, die eine, dass die LiquidCrystal-Bibliotheken inkompatibel sind (obwohl es in Ordnung zu sein scheint) und die andere, dass der ESP Async Webserver inkompatibel ist, aber das ist neu und wurde noch nie zuvor angezeigt.
Jede Hilfe wird geschätzt.
Grüße
Glenn Foyster

Gerald Lechner

Gerald Lechner

@Bernd: Wenn eine Verbindung nicht möglich ist, startet die Software einen Accesspoint mit der SSID “WebRadio” ohne Passwort. können sich dann mit einem Smartphone an diesem Netzwerk anmelden und über die URL http://192.168.4.1 die Konfigurationsseite aufrufen. Dort können Sie dann die Zugangsdaten eingeben.

Glenn Foyster

Glenn Foyster

Ich habe Andreas Schroders Arduino-Skizze verwendet, bin aber bei Wireless Internet Access etwas hängen geblieben. Auf dem Display wird WLAN angezeigt, ich bin mir aber nicht sicher, wohin ich von dort aus gehen soll.

„Laden Sie die gespeicherten Anmeldedaten auf
Versuchen Sie, Verbindungen herzustellen (Anzeige zeigt „WLAN“)
(Es tut)

Wenn das nicht möglich ist

Wechseln Sie in den AP-Modus und erstellen Sie das WLAN „WebRadio“

Erwarten Sie den Dateneintrag unter http://192.168.4.1

Starten Sie mit neuen Daten neu

==>
Das Ganze wiederholt sich so lange, bis eine Verbindung möglich ist.

Wo ändere ich den AP-Modus und erstelle das WLAN „WebRadio“?
Jede Hilfe wird geschätzt
Grüße,
Glenn Foyster

Bernd

Bernd

Hallo miteinander, ich habe das Radio nach langem Kampf zum Laufen gebracht.
Das Problem ist aber jetzt, wenn ich einen neuen Sender hinzu fügen will, funktioniert es nicht. Kann es sein, dass es nicht geht, weil ja mittlerweile überall https:// am Anfang steht?
Kann mir jemand helfen?

Vielen Dank schon mal.

Karl-Heinz Schumacher

Karl-Heinz Schumacher

@Reinhard was meinst du mit Leidlich? Also bei mir klappt es gut.
Es ist immer ein knarzen beim Sender wechsel. Bei Radio Paloma habe ich ab und zu das
Problem das es knarzt nach dem Senderwechsel. Ich werde es so ändern das nach dem speichern des Senders ein Reset gesetzt wird. Dann versuche ich das bei aktivität des Rotari die audioausgabe abgeschaltet wird. Muss aber erstmal den 3d Drucker vom Bruder umbauen .Sobald das erledigt ist gehe ich ans Radio.

Reinhard

Reinhard

Die von mir angepasste und für das ESP32 Devboard (aus dem Bausatz) kompilierte Datei ist hier :
http://tinyurl.com/2ce8rcng
zu finden und downzuloaden.
Sie kann direkt geflasht werden.
Viel Spaß.
@Redaktion:
Wäre es möglich, die Blogbeiträge ZEITNAH zu veröffentlichen und dabei auch das KORREKTE Datum / Uhrzeit zu verwenden?
Danke

Gerald Grummt

Gerald Grummt

Noch 2 kleine updates zum webradio_MAX:
1) vielleicht ist es auch schon jemand aufgefallen, in der 4.Zeile des 20×4-LCD’s werden die RDS-Daten nur bis Spalte 19 angezeigt, das mögliche 20.Zeichen fehlt immer. Dazu muss nur in displayMessage2 (display.ino) in Zeile 97 p+20 durch p+21 ersetzt werden (siehe Definition von substring):
ex_print(msg.substring(p+1,p+21)); // @GG: ori was (p+1,p+20)
2) Wer das Radio noch mit Lion-Batterie betreibt (ich habe das RPI PowerPack V2.0 mit 3800mAh/3,7V) kann noch Strom sparen, wenn man die Display-Beleuchtung bequem an- und abschalten kann. Dazu benutze ich den noch freien Push-Switch am Gain-Encoder. Hier das Code-Snippet in gain.ino:
//used pins for rotary encoder
#define ROTARY_ENCODER_A_PIN 13
#define ROTARY_ENCODER_B_PIN 14
#define ROTARY_ENCODER_BUTTON_PIN 34
#define ROTARY_ENCODER_VCC_PIN -1 /*put -1 of Rotary encoder Vcc is connected directly to 3,3V */
uint32_t idx;
void gain_loop()
{
if (gain.encoderChanged())
{ ..
//react on gain encoder switch
if (gain.isEncoderButtonClicked())
{
idx++;
if (idx & 01) {
lcd.noBacklight();
}
else {
lcd.backlight();
}
}
}
void setup_gain() {

idx = 0;
}

3) Habe die Senderliste noch um ein paar interessante lauffähige Einträge erweitert:
//default stationlist
#define DEFAULTSTATIONS 32

Station defstations[DEFAULTSTATIONS] PROGMEM = {
{"http://icecast.ndr.de/ndr/ndr2/niedersachsen/mp3/128/stream.mp3",“NDR2 Niedersachsen”,1},
{"http://icecast.ndr.de/ndr/ndr1niedersachsen/hannover/mp3/128/stream.mp3",“NDR1 Hannover”,1},
{"http://wdr-1live-live.icecast.wdr.de/wdr/1live/live/mp3/128/stream.mp3",“WDR1”,1},
{"http://liveradio.swr.de/sw282p3/swr1rp/“,”SWR-1",1},
{"http://radiohagen.cast.addradio.de/radiohagen/simulcast/high/stream.mp3",“Radio Hagen”,1},
{"http://st01.sslstream.dlf.de/dlf/01/128/mp3/stream.mp3",“Deutschlandfunk”,1},
{"http://dispatcher.rndfnk.com/br/br1/nbopf/mp3/low",“Bayern1”,1},
{"http://dispatcher.rndfnk.com/br/br3/live/mp3/low",“Bayern3”,1},
{"http://dispatcher.rndfnk.com/hr/hr3/live/mp3/48/stream.mp3",“Hessen3”,1},
{"http://stream.antenne.de/antenne",“Antenne Bayern”,1},
{"http://stream.1a-webradio.de/saw-deutsch/“,”Radio 1A Deutsche Hits",1},
{"http://stream.1a-webradio.de/saw-rock/“,”Radio 1A Rock",1},
{"http://streams.80s80s.de/ndw/mp3-192/streams.80s80s.de/“,”Neue Deutsche Welle",1},
{"http://dispatcher.rndfnk.com/br/brklassik/live/mp3/low",“Bayern Klassik”,1},
{"http://mdr-284280-1.cast.mdr.de/mdr/284280/1/mp3/low/stream.mp3",“MDR”,1},
{"http://icecast.ndr.de/ndr/njoy/live/mp3/128/stream.mp3",“N-JOY”,1},
{"http://dispatcher.rndfnk.com/rbb/rbb888/live/mp3/mid",“RBB”,1},
{"http://dispatcher.rndfnk.com/rbb/antennebrandenburg/live/mp3/mid",“Antenne Brandenburg”,1},
{"http://wdr-wdr3-live.icecastssl.wdr.de/wdr/wdr3/live/mp3/128/stream.mp3",“WDR3”,1},
{"http://wdr-wdr2-aachenundregion.icecastssl.wdr.de/wdr/wdr2/aachenundregion/mp3/128/stream.mp3",“WDR 2”,1},
{"http://rnrw.cast.addradio.de/rnrw-0182/deinschlager/low/stream.mp3",“NRW Schlagerradio”,1},
{"http://rnrw.cast.addradio.de/rnrw-0182/deinrock/low/stream.mp3",“NRW Rockradio”,1},
{"http://rnrw.cast.addradio.de/rnrw-0182/dein90er/low/stream.mp3",“NRW 90er”,1},
{"http://mp3.hitradiort1.c.nmdn.net/rt1rockwl/livestream.mp3",“RT1 Rock”,1},
{"http://icecast.radiobremen.de/rb/bremenvier/live/mp3/128/stream.mp3",“Bremen-4”,1},
{"http://stream.rs2.de/rs2/mp3-128/internetradio/“,”rs2 94.3 Berlin",1},
{"http://liveradio.swr.de/sw282p3/swr3/play.mp3",“SWR-3”,1},
{"http://mdr-284300-3.cast.mdr.de/mdr/284300/3/mp3/high/stream.mp3",“MDR-Thueringen”,1},
{"http://mdr-284340-0.cast.mdr.de/mdr/284340/0/mp3/high/stream.mp3",“MDR-Aktuell”,1},
{"http://dispatcher.rndfnk.com/br/br24live/live/mp3/mid",“BR24-Live”,1},
{"http://frontend.streamonkey.net/fho-schwarzwaldradiolive/stream/mp3",“Schwarzwaldradio”,1},
{"http://st01.sslstream.dlf.de/dlf/01/128/mp3/stream.mp3",“WLAN-Reset”,1}
};

chris

chris

@Karl-Heinz Schumacher
vandewalle.christian at skynet.be
can you please send me the (latest version) of the ino file ?
please consider also my question about some belgian streaming websites

Reinhard

Reinhard

So, nun läuft es dank der Infos von Andreas Kreher auch bei mir. …so leidlich wenigstens.
Hessen3 darf man nicht auswählen!! —> Absturz.
Danke auch an Karl-Heinz Schumacher für die angebotene Hilfe.
Wer “meine” Bin-Datei haben möchte, bitte per email melden, Adresse siehe vorherigen Post.

Karl-Heinz Schumacher

Karl-Heinz Schumacher

@Reinhard
Warum muss es eine Bin sein ? .
Ich schicke dir gerne die Ino Dateien .Kann dir auch gerne beim kompilieren helfen
Arduino IDE hast du installiert?

Reinhard

Reinhard

@ Andreas Kreher
Hallo Andreas
ICH bin immer noch an der BIN-Datei interessiert.
Darfst sie mir gerne an rb4846@gmail.com per email schicken.
Danke im Voraus.

Karl-Heinz Schumacher

Karl-Heinz Schumacher

@Georgios Ioannou
Das mit der LCD Library kannst du ignorieren. Das wurde in einem Kommentar weiter oben auch schon beschrieben.
Den Rest bitte achten das die richtigen Libs in der richtigen Version installiert sind.
Auch das Problem mit dem rebooten( hatte ich auch) wird hier weiter oben erklärt.
Bitte alle Kommentare lesen. Der reboot kommt durch das ESP8266 dieses ist sehr sensibel mit anderen Lib versionen.

Karl-Heinz Schumacher

Karl-Heinz Schumacher

Hi an alle.
Ich helfe gerne wo ich kann aber ich kann keine Dateien hier Hochladen.
Ich könnte auf Discord gerne helfen. Bitte dort anschreiben .Dann kann man auch miteinander sprechen und evtl. noch weitere Features zufügen.
Mein Discord Name ist: kalle_the_oldman
Ich werde auch dort keine Bin zu Verfügung stellen. In einer Bin kann ich Code einsetzen der evtl. schaden kann. Daher gebe ich nur die Ino’s weiter . Jeder kann dann diese Dateien ansehen und kompilieren. Arduino IDE setze ich mal voraus.

Gerald Grummt

Gerald Grummt

@Karl-Heinz:
Ich habe das Radio mit den beiden I2S-Chips und den beiden Rotary-Encoder nachgebaut. Es funktioniert super, allerdings antwortet der (synchrone) Web-Server im normalen Betrieb nicht. Kann damit auch im normalen Betrieb keine neuen Sender konfigurieren. Daher finde ich deine Idee mit den Reset-Taster gut, der in Folge den AP wieder aktiviert. Kannst du evtl. code-Schnipsel bereitstellen, oder ggf. den gesamten Prj-File als zip ?
Gruß, Gerald

Reinhard Bruckner

Reinhard Bruckner

@Karl-Heinz Schumacher und @Redaktion
Nochmal die Bitte, eine funktionierende Binärdatei ALLEN Usern zur Verfügung zu stellen, wie es bei anderen Projekten auch der Fall ist.
DAS würde sicher vielen Leuten helfen.
DANKE!!

Georgios Ioannou

Georgios Ioannou

Ich kriege mit dem ESP32 WROOM 32 folgendes Error:

WARNING: library LiquidCrystal I2C claims to run on avr architecture(s) and may be incompatible with your current board which runs on esp32 architecture(s).
In file included from C:\Users\smart\AppData\Local\Arduino15\libraries\SD\src/utility/Sd2Card.h:26:0,
from C:\Users\smart\AppData\Local\Arduino15\libraries\SD\src/utility/SdFat.h:29,
from C:\Users\smart\AppData\Local\Arduino15\libraries\SD\src/SD.h:20,
from c:\Users\smart\Documents\Arduino\libraries\ESP8266Audio\src\AudioFileSourceSD.h:25,
from c:\Users\smart\Documents\Arduino\libraries\ESP8266Audio\src\AudioFileSourceSD.cpp:21:
C:\Users\smart\AppData\Local\Arduino15\libraries\SD\src/utility/Sd2PinMap.h:524:2: error: #error Architecture or board not supported.
#error Architecture or board not supported.
^
Multiple libraries were found for “SD.h”
Used: C:\Users\smart\AppData\Local\Arduino15\libraries\SD
Not used: C:\Users\smart\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\SD
exit status 1

Compilation error: exit status 1

Arduino IDE 2.0.4; Board Manager ESP32 Espressif V1.0.6; ESP8266Audio 1.9.7.
Ich habe den ESP 32 WROOM32 als ESP32 Dev Module erkannt.
Danke.

Georgios Ioannou

Georgios Ioannou

Hallo, kann es sein dass ein ESP32 mit SD Card für den Projekt benutzt wird ?

Bernd

Bernd

Hallo alle miteinander. Ich habe mir diesen Bausatz gekauft, weil ich dachte, dass man es zusammen steckt, Code rüber spielt und einschaltet. Hat leider nicht so funktioniert und da meine Programmierkenntnisse gegen Null gehen, war’s das wahrscheinlich. Bei mir knackt es nur in den Lautsprechern und das Display schaltet sich ständig ein und aus. Im seriellen Monitor sehe ich, dass sich das WLAN immer wieder verbindet. Sender werden aber angezeigt. Vielleicht kann mich ja hier jemand an die Hand nehmen und wenn nicht, dann war es eben die nächste Fehlinvestition.

Andreas Kreher

Andreas Kreher

Es ist gelungen, mein Radio spielt. War nicht einfach, hat aber Spaß gemacht. Zunächst Danke an Kar-Heinz-Schumacher. Eine BIN Datei liegt vor, noch Interesse?
Hier meine abschließende Zusammenfassung, unter folgenden Bedingungen läuft nun (fast) alles:
Ardunio 1.8.19
esp32: 1.0.6
ESP32audio: 1.9.5
LiquidCrystal I2C: 1.1.2
AiEsp32RotaryEncoder: 1.4.0 oder 1.6.0 geht beides
ESPAsyncWebServer: by lacamera, glaube das ist 3.0…
Alles Sender NUR mit MP3 Streamadressen!
Warum nur fast? Der Rotary wollte nicht, wie gewünscht. Ich kann Sender anwählen, aber nicht mir drücken bestätigen. Nach langen Versuchen habe ich nun einfach einen Taster zwischen GPIO34 und SW gebastelt und gut ist. Als Akku habe ich einen aus der Brennstuhl-LED Taschenlampe (1800mA) verwendet, Spielt damit gut 12 Stunden, mit einem Solarpanel (6W, 5V) dazu komme ich über einen Tage hin, ohne Steckdose. Die Taschenlampenelemente habe ich gleich mit verbaut, so habe ich ein Radio mit Taschenlampe :-)
Hat Spaß gemacht, auf zu neuen Projekten!

Chris

Chris

At last I was able to have a working setup . Now I want to modify the Sender-List with Belgian radio streams. Here are a number of website addresses with mp3 streams.
I tried a number of them without succes (http and/or https). Can anyone help me please.
Ob this website you can find a number of web-addresses: https://www.online-radio-luisteren.be/radiostreams.
Thanks in advance for all possible help.

Andreas Kreher

Andreas Kreher

@ Karl-Heinz Schumacher
Vielen Dank, ich werde es testen.

Pit

Pit

Hello, can I ask for the code? The one from the website after downloading has a terrible number of errors, I can’t deal with it, unfortunately

Karl-Heinz Schumacher

Karl-Heinz Schumacher

Hallo man ne Frage .Gibt es ne Möglichkeit dieses knarzen beim Senderwechsel oder ab und zu mal zwischendurch. Klar im PC hab ich auch hier und da mal kurzzeitig Wlan Verlust. Schön wäre es wenn dann einfach kurz die Wiedergabe gestoppt wird und wenn der Ton wieder normal ist fortgesetzt wird.

Karl-Heinz Schumacher

Karl-Heinz Schumacher

So ich habe den WLAN Reset über einen Dummy Sender(Letzter Sender in der Liste) realisiert. Diesen habe ich WLAN RESET benannt . Um sicher zu gehen habe ich dort einen Sender hinterlegt der zu 99% funktioniert http://st01.sslstream.dlf.de/dlf/01/128/mp3/stream.mp3
In der Rotary.ino habe ich folgendes geändert.:
//react on rotary encoder switch
if (rotaryEncoder.isEncoderButtonClicked())
{
if (curStation == 17){
Serial.println(“Wlan_Reset”);
pref.putUShort(“station”,0);//Start ist 0 ;18 also = 17 Nach einem Reset Start immer
//mit Platz 1
removessid_wlanconfig();
ESP.restart();

} else { //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(); } }

}
In der wlanconfig habe ich das ans ende gehangen
void removessid_wlanconfig()
{
preferences.remove(“ssid”);//debug um wlan zu löschen
}

Also bei mir klappt es einwandfrei.

Karl-Heinz Schumacher

Karl-Heinz Schumacher

Was haltet ihr davon ,ich hab 17 Stationen. Werden den Pointer wieder auf 20 setzen.
In der Rotari.ino werde ich ein IF abfrage setzen wo bei Platz 20 das Wlan resettet wird .So habe ich 2 leere Plätze zur Sicherheit. Dann würde ich einen separaten Reset Taster sparen.

Glenn Foyster

Glenn Foyster

I have purchased the above from AZ-Delivery but I am not sure what is meant by the Park Bar 3-pin etc. and the spring strips? Could you please clarify and possibly give links to the items?
Best regards

Karl-Heinz Schumacher

Karl-Heinz Schumacher

So ich hoffe ich konnte Andreas helfen.
Ich habe mir überlegt einen Resettaster einzubauen.
Dieser soll die Prefernces vom Wlan bzw nur die SSid löschen.So macht das Radio dann den AP wieder auf und ich kann mich einfach an ein neues WLan anmelden
Ich benutzt Pin5 . Abfrage in ESPRadio Loop Sprung dann in LCDDisplay um eine Anzeige auszugeben . Gleichzeitg wird SSID gelöcht evtl kommt dann ein softwarreset damit ich nicht ausschalten muss

Karl-Heinz Schumacher

Karl-Heinz Schumacher

@Andreas
in der ESPRadio
#define STATIONS 34 //number of available stations auch in senderconfig einzutragen
in der senderconfig die 20 durch 34 ersetzen
fields.concat(“’ size=’34’>\n”);//Hier die MAX Senderzahl
habe es gerade getestet.
Alle anderen änderungen bitte rückgängig machen.
PS über Byte kann man im Display andere Zeichen anzeigen lassen.

Andreas Kreher

Andreas Kreher

Ich muss noch etwas fragen.
Am 09.05.22 hat Andreas Schröder für Denis eine Erwiterung für die Verlängerung von Senderlisten hier eingestellt. Da mich das auch brennend interessiert, ich aber überhaupt kein Programmierer bin, komme ich damit nicht klar.
1. Wo muss das eingefügt werden? Vor, oder nach der geschweiften Klammer von
void setup_senderList()
{ es folgen 20 Sendereinträge…….
letzte Zeile dann }
2. Egal, wo ich es einfüge, es kommen permanent Fehler:
senderlist:55:1: error: expected unqualified-id before ‘while’
while(se < STATIONS) {
Hier ein kurzer Auszug, wie “senderlist” bei mir aussieht:
Z46 strcpy(stationlist19.url, sender.getString(“u20”, “http://icecast.ndr.de/ndr/njoy/live/mp3/128/stream.mp3”).c_str());
Z47
Z48 }
Z49 // set additional sender (more than 20) with flash-values or defaults
Z50 int se=20;
Z51 char nnn10;
Z52 while(se < STATIONS) {
Z53 sprintf(nnn,“n%d”,se+1);
Z54 strcpy(stationlist[se].name, sender.getString(nnn,“NDR2 Niedersachsen”).c_str());
Z55 sprintf(nnn, “u%d”, se+1);
Z56 strcpy(stationlist[se].url,
sender.getString(nnn,“http://icecast.ndr.de/ndr/ndr2/niedersachsen/mp3/128/stream.mp3”).c_str());
Z 57 se++;
}
Für Hilfe wäre ich sehr dankbar.

Kommentar hinterlassen

Alle Kommentare werden von einem Moderator vor der Veröffentlichung überprüft

Empfohlene Blogbeiträge

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery