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

Update: The reader Andreas Schröder has changed the project a little and supplemented some functions. You can find the text and sketch at the end of the post.

Many radio stations can be heard as a MP3 stream over the Internet. Since the microcontroller ESP32 has WLAN skills on the one hand and, on the other hand, can convert the digital data stream into an analog signal with two built-in digital/analog converters, it offers itself as an ideal solution. In addition, a battery power supply, an audio amplifier, two speakers, a display for the transmitter display and an input device for the transmitter setting is required. The whole thing is rounded off with a housing from the 3D printer.

Required hardware

Number Component annotation

1

ESP32 Development Board

 

1

Audio amplifier 3W

 

1

speaker

 

2

Resistance 4.7 KOHM

 

2

Resistance 22 KOHM

 

1

Resistance 10 kohm

 

1

Elko 1000UF / 10V

 

1

3.7V battery 2000mAh

 

1

Loader

 

1

DC-DC Step Up Converter

 

1

LCD display with I2C interface

 

1

Distributor Encoder

 

1

Lochraster plate 50x70

 

2

Spring strips 19-pin

 

1

Park bar 3-pin

 

1

 Park bar 4-pin

 

1

Pin bar 5-pin

 

2

Turntons for 6mm axis

 

Several

Jumper cable female too female

 

1

Housing front part from the 3D printer

 

1

Housing back from the 3D printer

 

1

Lid for battery protection from the 3D printer

 

various

Fastening screws 2.2mm

 

 

circuit

 

Important!
If the Rotary Encoder is not used, the PIN 34 of the ESP32 must still be connected to the 10 co-cock resistance with 3.3V.

The ESP32 is built up on a 50x70 mm hole grid plate with the resistances and pen strips for the periphery.


The figure shows the assembly and wiring on the underside

wiring

First of all, the loader's battery connection is connected to the input of the DC-DC Step Up converter. Note the polarity! The battery is also soldered via a suitable connector with the battery input of the loader. Now the output voltage of the converter with the blue potentiometer should be set to approx. 5.2 V. To do this, either a battery must be connected or the loader's USB input must be connected to a USB network.

If the voltage is set, the output of the converter can be connected to the supply receipt of the audio amplifier. There are two soldering points on the back of the amplifier, the plus connection is switched over the switch of the volume potentiometer.

 amplifier underside

This connection is used to supply the ESP32 and the display so that the device can be switched off completely via the potentiometer.
Now the connections to the control board can be made on the hole grid plate. It is best to use jumper wires with two female plugs. You need a 3-pin connection from the audio output to the amplifier, a 4-pin to the display and a 5-pin to the Rotary Encoder.

Important NOTE!
The loudspeakers should not be attached or staked out when switched on, since inductive tension peaks could destroy the amplifier outputs.

If the housing presented in the blog post is used, battery, loader, DC/DC converter and the control board come to the baking tarpaulin. The speakers, the amplifier, the Rotary Encoder and the display come to the front tarpaulin. The lid is used to secure the battery.

 baking tarpaulinassembly

software

In order for the sketch to be compiled, the Arduino IDE must be prepared accordingly. By default, Arduino IDE supports a large number of boards with different microcontrollers, but not the ESP32. So that you can create and upload programs for these controllers, a software package for the support must therefore be installed.

First you have to communicate the Arduino IDE where you can find the additional data required. To do this, open the Preferences in the File menu. In the preset window there is the input field called "Additional board administrator URLS". If you click on the icon to the right of the input field, a window in which you can open the URL https://dl.espressif.com/dl/package_esp32_index.json for the ESP32 can enter. Version 2.0.0 or higher of the ESP32 package should not be used for this project, since these versions have problems related to the ESP8266audio library!

Now choose the board management in the Arduino IDE under tool → board.

A window opens in which all available packages are listed. In order to narrow down the list, you enter "ESP32" in the search field. Then you only get an entry in the list. Install the "ESP32" package.

ESP32 Lib
For the display you need a library that can be installed via the Arduino library management. This is the library "Liquidcrystal I2C".

Liquid Crystal Lib

Another library is required for the Rotary Encoder. Her name is "Aiesp32rotary Coder".

Rotary Encoder Lib 

The core of this project is the library "ESP8266audio".

 audio lib

This library enables various digital input currents to be read, decoding and reproducing them using various output channels. As an entrance, the program memory, the internal RAM can be used by an SD card, an HTTP stream or an ICY stream. The icy stream is typically used by internet radios.
WAV, MOD, MIDI, Flac, AAC and MP3 files can be decoded. MP3 is required for the web radio. The output can finally be made in memory, files or I2S. There is a special feature for the ESP32. The I2S Output can be output on the internal digital analog converter. An analog stereo signal is then available at the output pins of the DAW (PIN 25 and PIN 26). This feature is used in the present project.

If all libraries are installed, the sketch can be compiled and uploaded to the hardware.

The sketch

#include <Wifi.H> 
// Includes from ESP8266audio
#include "AudioFileesourceiSstream.h" // input stream
#include "AudioFileesourcebuffer.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 "AiesP32rotaryScoder.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 Behavior
//#define rotary_encoder_steps 1
//#define rotary_encoder_steps 2
#define Rotary_encoder_steps 4

// Structure for Station List
type struct {
  char * url;  // stream url
  char * Surname; // station name
} station;

#define Ward 24 // Number of Stations in Tzhe List

// Station List Can Easily Be Modified to Support Other Stations
station wardlist[Ward] Progmem = {
{"http://icecast.ndr.de/ndr/ndr2/niedersachsen/mp3/128/stream.mp3","NDR2 Lower Saxony"},
{"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/br3/live/mp3/low","Bayern 3"},
{"http://dispatcher.rndfnk.com/hr/hr3/live/mp3/48/stream.mp3","Hessen3"},
{"http://stream.antentne.de/antne","Antenne Bayern"},
{"http://stream.1a-webradio.de/saw-deutsch/","Radio 1a German hits"},
{"http://stream.1a-weibradio.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","Bavaria Classic"},
{"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/antnebrandenburg/live/mp3/mid","Antenne Brandenburg"},
{"http://wdr3-live.iceCasttssl.wdr.de/wdr/wdr3/live/mp3/128/stream.mp3","WDR3"},
{"http://wdr2-aachenundregion.iceCasttssl.wdr.de/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 90s"},
{"http://mp3.hitradiort1.c.nmdn.net/rt1rockwl/livestream.mp3","RT1 Rock"}};

// Buffer size for stream buffering
const intimately Preallocatebuffersize = 80*1024;
const intimately PreallocateCodecsize = 29192;         // MP3 Codec Max Mem Needed
// pointer to preallocated memory
void *Preallocatebuffer = ZERO;
void *PreallocateCodec = ZERO;

// Instance of Preferences
Preferences Pref;
// Instance for Rotary Encoder
AISP32Rotary code rotary = AISP32Rotary code(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
// Instance for Audio Components
Audio *decoder = ZERO;
Audio filesourceistream *file = ZERO;
Audio filesource buffer *buff = ZERO;
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 curing = 0;   // Index for current selected station in station list
uint8_t act = 0;   // Index for current station in station list used for streaming 
uint32_t liability = 0;  // Time of Last Selection Change

// Callback function wants to 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 instantences
void stop playing() {
  IF (decoder)  {
    decoder->Stop();
    delete decoder;
    decoder = ZERO;
  }
  IF (buff)  {
    buff->close();
    delete buff;
    buff = ZERO;
  }
  IF (file)  {
    file->close();
    delete file;
    file = ZERO;
  }
}

//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")) curing = Pref.gut("station");
  IF (curing >= Ward) curing = 0;
  // Set Active Station to Current Station 
  // Show on display and start streaming
  act = curing;
  show station();
  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.remaining start();
  }
  // Read events from Rotary Encoder
  rotary_loop();

} 

Sketch to download

Before compiling, the SSID and the password must be set for the WLAN. At the beginning of the sketch is a list of 24 German radio stations. You can edit or expand them as you like to hear your desired program. A maximum of 100 stations can be defined.

After uploading, the program can be started. The channel list can be scrolled with the Rotary Encoder. If you press the button of the Rotary Encoder, the station that has just been displayed is set as active. This selection is saved in the flash, so that after a power break, the program is started again with the selected transmitter. The station that has just been reproduced is displayed on the display by a preceding loudspeaker symbol.

Finished device

Have fun with the internet radio

Post as a PDF

Update from our reader Andreas Schröder

(thanks at this point)

With a cut black film on white housing, it looks really good.

Because this is not tingling and screwing up, I expanded the code to include the following:

1. An automatic AP mode with a lack of WLAN connection, which then queries the access data via web server.

2. In normal operation, the transmitter list can be maintained via a web front end. Would like to have provided the code, screenshots and the plotter file for the film here.

WIRELESS INTERNET ACCESS

The WLAN configuration is held in the internal flash memory. This can be configured using the web interface. The configuration process is as follows:

  • Charge the saved login data

  • Attempt to make connections (display shows "WLAN")

  • If that is not possible

    • Change to AP mode and create the WLAN "WebRadio"

    • Expect the data entry under http://192.168.4.1

    • Restart with new data

==> The whole thing is repeated until a connection is possible

 

 

Transmitter list

The list of stored transmitters can above http: // be adjusted.

 

Sketches download

 

Plotter file (silhouette format)

DisplaysEsp-32Projekte für anfängerStromversorgung

232 comments

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.

Reinhard

Reinhard

@Karl-Heinz Schumacher:
mit welcher Version der Arduino IDE arbeitest du??

Reinhard

Reinhard

Hallo zusammen,
vielleicht schafft es ja irgendwann “jemand” eine funktionierende bin-Datei zur Verfügung zu stellen. Würde sicher vielen hier helfen.
Danke im Voraus.

Andreas

Andreas

Hallo an alle! Vielen Dank für das interessante Projekt an alle, die damit beschäftigt waren/sind.
Ich habe erst die originale Variante aufgebaut, danach das Update. Soweit so gut. Einmal hat alles finktioniert, auch der Ap wurde aufgebaut, ich konnte WLAN konfigurieren, alles gut. Ein 2. Mal ist es mir bisher nicht gelungen. Ich versuche es auf einem 2. ESP32, die gleiche Marke, alles identisch. Der Sketch ist auch drauf und im Seriellen Monitor kommt auch die entsprechende Ausschrift:
“Keine WLAN-Logindaten gespeichert!
Erstelle AP (Access Point)…Connecting to WiFi
ESP-Webradio”
Aber ich kann nirgendwo diesen AP finden, weder in meiner Fritzbox noch als verfügbares Netz auf dem Smartphone. Ich komme nicht weiter, kann mir jemand einen Denkanstoß oder Hilfe anbieten? Vielen Dank schon mal.
Gruß, Andreas

Karl-Heinz Schumacher

Karl-Heinz Schumacher

So ich habe die Char (speaker) in Byte geändert .Wenn ich auf dem Aktuellen Sender bin kommt der Speaker drehe ich weiter kommt vorangestellt ein Play Zeichen. Die Sender stehen alle in der 2 Zeile .angepasst auf die 16 zeichen.
//uint8_t speaker8 = {0x0,0×5,0×19,0×11,0×19,0×5,0×3};
byte play[] = { B11000, B11100, B11110, B11111, B11111, B11110, B11100, B11000 };
byte speaker[] = { B00011, B00101, B01001, B10001, B10001, B01001, B00101, B00011 };

im Setup von lcd: habe ich zusätzlich
lcd.createChar(0, play);
lcd.createChar(1, speaker);
aufgerufen wird es so:
if (curStation == actStation) {
lcd.home();

lcd.write(1); lcd.setCursor(loff+2,0); lcd.print("Pl.: "); //Sender der abgespielt wird } else { lcd.home(); lcd.write(0); lcd.setCursor(loff,0); }

Ich werde mir einen reset Taster dazu bauen oder den reset dafür benutzen immer einen channel weiter zu schalten .so macht er so lange einen reset bis er einen Sender aus der Liste gefunden hat, der funktionert. (Kann ja mal sein das ein Sender auf einmal nicht mehr arbeitet.

Karl-Heinz Schumacher

Karl-Heinz Schumacher

Also ich schreibe mal ne Antwort obwohl meine Frage noch nicht veröffentlicht ist.
Also jetzt nachdem ich auf ESpAudio1.95 und ESP32 1.06 gegangen bin klappt alles einwandfrei. Kein Automatischer Reboot . Prima Leistung. Aber die STL vom Gehäuse würde ich anders gestalten. Mehr Platz zw. Display und Arduino .Besser Verschraubungen mit Einpressmuttern. Ist eleganter meiner Meinung nach. Knöpfe habe ich selber gezeichnet .

EhrwuerdigerJorge

EhrwuerdigerJorge

Halli,
gerade aufgebaut und funktioniert mit Schroeders neuem Code. Im Text ist wenn auch kurz beschrieben, dass die esp8266audio Bibliothek sehr wählerisch und empfindlich ist.
Bei mir lief nach wenigen Versuchen:

esp32 1.0.6 Boardverwalter esp8266audio 1.9.5 Bibliotheken verwalten
LiquidCrystal sollte nur eine Warnung generieren, aber keine Fehler (in der aktuellsten Version).
Der ständige Neustart ist imho meist ein Softwareproblem mit esp8266audio

LG
J

Karl-Heinz Schumacher

Karl-Heinz Schumacher

Auch ich habe ständiges rebooten nach dem ich im Webserver die richtige WLAnverbindung eingetragen habe.
hier der ErrorCOde

19:29:24.251 → Rebooting…
19:29:24.251 → ets Jun 8 2016 00:22:57
19:29:24.251 →
19:29:24.251 → rst:0xc (SW_CPU_RESET),boot:0×13 (SPI_FAST_FLASH_BOOT)
19:29:24.251 → configsip: 0, SPIWP:0xee
19:29:24.251 → clk_drv:0×00,q_drv:0×00,d_drv:0×00,cs0_drv:0×00,hd_drv:0×00,wp_drv:0×00
19:29:24.251 → mode:DIO, clock div:1
19:29:24.251 → load:0×3fff0030,len:1184
19:29:24.251 → load:0×40078000,len:13260
19:29:24.251 → load:0×40080400,len:3028
19:29:24.251 → entry 0×400805e4
19:29:26.764 → Connecting to WiFi
19:29:27.004 → ESP-Webradio
19:29:27.004 → meinWlan
19:29:27.164 → Verbinde mit WiFi …..IP-Adresse per DHCP ist meine IP
19:29:30.164 → Connected
19:29:30.164 → Webserver ist gestartet
19:29:30.204 → Active station http://icecast.ndr.de/ndr/ndr2/niedersachsen/mp3/128/stream.mp3
19:29:30.324 → sourcebuffer created – Free mem=67528
19:29:30.364 → created decoder
19:29:30.364 → Decoder start…
19:29:31.084 → Guru Meditation Error: Core 1 panic’ed (LoadProhibited). Exception was unhandled.
19:29:31.084 →
19:29:31.084 → Core 1 register dump:
19:29:31.084 → PC : 0×4008ae4d PS : 0×00060b30 A0 : 0×80157dec A1 : 0×3ffcbb70
19:29:31.084 → A2 : 0×00000000 A3 : 0xfffffffc A4 : 0×000000ff A5 : 0×0000ff00
19:29:31.124 → A6 : 0×00ff0000 A7 : 0xff000000 A8 : 0×00000000 A9 : 0×3ffcbf70
19:29:31.124 → A10 : 0×3ffc55dc A11 : 0×0000059c A12 : 0×0000001c A13 : 0×00000002
19:29:31.124 → A14 : 0×00000000 A15 : 0×00000000 SAR : 0×00000018 EXCCAUSE: 0×0000001c
19:29:31.124 → EXCVADDR: 0×00000000 LBEG : 0×4008ae4d LEND : 0×4008ae5d LCOUNT : 0xffffffff
19:29:31.124 →
19:29:31.124 →
19:29:31.124 → Backtrace: 0×4008ae4a:0×3ffcbb70 0×40157de9:0×3ffcbb80 0×4015c982:0×3ffcbe90 0×4015c9be:0×3ffcbf20 0×400e7e62:0×3ffcbf60 0×400d48c3:0×3ffcc000 0×400d5604:0×3ffcc090 0×400d4e5e:0×3ffcc1e0 0×400d4d65:0×3ffcc200 0×40165306:0×3ffcc220 0×400d5c6a:0×3ffcc240 0×400d3603:0×3ffcc260 0×400d3897:0×3ffcc280 0×400e8f15:0×3ffcc2a0
19:29:31.164 →
19:29:31.164 →
19:29:31.164 →
19:29:31.164 →
19:29:31.164 → ELF file SHA256: a531a13bebf1dadf

Hat da jemand ne Lösung?

Gerald Lechner

Gerald Lechner

@Michael-S: Mit folgenden URLs funktionieren SWR1 und SWR3
http://liveradio.swr.de/sw282p3/swr1rp/
https://liveradio.swr.de/sw282p3/swr3/

Reimund

Reimund

Läuft das bei einem ? Bekomme diesen Mist nicht ans laufen.
Habe extra alle Sachen neu gekauft.

Comapli und hochgeladen.
Keine Ausgabe auf dem LCD…. Seriell Monitor nur Fehlermeldungen.
u.a.
psram: PSRAM ID read error: 0xffffffff

Michael

Michael

… hab noch ein wenig rumprobiert. Der Code hat leider einige Einschränkungen.
- .m3u Playlisten funktionieren nicht
- https:// funktioniert (scheinbar) nicht. Kann man oft durch http:// ersetzen.
- der erste Eintrag in der Stationsliste wird sofort beim Einschalten abgespielt, bzw. der letzte gespeicherte Sender. Wenn der nicht funktioniert, dann crasht das Programm.

Nachdem ich die obigen Punkte beherzigt habe, läuft das Programm nun sehr gut.

Reimund

Reimund

Habe das Update installiert.
Ap Modus. Gebe dann SSID und Passwort ein.
Er bekommt von der Fritzbox eine IP Adresse.
Laut ser. Monitor wird die Verbindung aufgebaut. Station wird gefunden. Danach Disconnect und wieder neu.
Verbindung bleibt nie stabil.
Wie kann man das verhindern ?

Gerhard Kündig

Gerhard Kündig

Das Geschäftsmodell von az-Delivery finde ich sehr gut. Hier werden sehr tolle Projekte vorgestellt und auch dokumentiert. Wenn man aber zeitlich später etwas realisieren will, funktioniert bei einigen Projekten offenbar das kompilieren der Sketch’s nicht mehr immer, da verschiedene Libraries oder Board-Dateien nicht mehr kompatibel sind. Man sollte sich bei az-Delivery überlegen, ab man nicht fertige .bin-Dateien in einem Archiv anbieten will, so dass man das auch ein- zwei Jahre später noch aufbauen kann. Ansonsten staut sich beim Erbauer nach stundenlangem pröbeln einen erheblichen Frust auf, was für euch sicher nicht vorteilhaft ist.

Gerhard

Christian Zirlewagen

Christian Zirlewagen

Bei mir funktioniert es mit esp32 Espressif Systems Version 2.0.11
Zunächst war es ein Hardwareproblem mit dem 10kOhm Widerstand zwischen 3,3V und Pin 34 des Rotary – einfach eine Lötbrücke vergessen. 3D Druck hat gut funktioniert dank der stl Dateien.
Vielen Dank für das schöne Projekt – wird nun in der Jugendgruppe nachgebaut!

Michael

Michael

Hallo zsuammen.
habe auch ein paar Stunden gekämpft, bis es auf einem ESP32 Lyrat4.3 einigermaßen lief. Ich denke, der RAM-Bereich für den Codec ist zu klein. Seit ich den vergrößert habe läuft es viel besser (auch, insbesondere AAC).

Habe
“const int preallocateCodecSize = 29192;”
geändert in
“const int preallocateCodecSize = 85332; // AAC+SBR codec max mem needed”
Siehe https://github.com/earlephilhower/ESP8266Audio/issues/622
Viele Grüße

Martin van Doorn

Martin van Doorn

Danke für dieses Projekt, sieht sehr schön aus und ich würde es gerne nachbauen.
Aber zuerst habe ich versucht, den Code zu kompilieren.
Dabei bin ich auf mehrere Probleme gestoßen.

Type benennt keinen Typ
Station benennt keinen Typ

WEBradio_ESP32_AZ_Dilevry:29:3: Fehler: ‘type’ benennt keinen Typ
type struct {char * url;
^
WEBradio_ESP32_AZ_Dilevry:31:17: error: ‘station’ benennt keinen Typ
} station;
^
WEBradio_ESP32_AZ_Dilevry:36:1: Fehler: ‘station’ benennt keinen Typ
station wardlist[Ward] Progmem = {
^

Exit-Status 1
‘type’ benennt keinen Typ

Kann mir jemand weiterhelfen?
Vielen Dank im Voraus

Übersetzt mit DeepL.com (kostenlose Version)

Martin van Doorn

Martin van Doorn

Hello, Very nice project and love to build, but first I tried the code:
Run in multiple problem.
Somebody to help?

WEBradio_ESP32_AZ_Dilevry:29:3: error: ‘type’ does not name a type
type struct {char * url;
^
WEBradio_ESP32_AZ_Dilevry:31:17: error: ‘station’ does not name a type
} station;
^
WEBradio_ESP32_AZ_Dilevry:36:1: error: ‘station’ does not name a type
station wardlist[Ward] Progmem = {
^
Multiple libraries were found for “AudioFileSource.h”
Used: C:\Users\cme\Documents\Arduino\libraries\ESP8266Audio-master
Not used: C:\Program Files (x86)\Arduino\libraries\ESP8266Audio
Multiple libraries were found for “WiFi.h”
Used: C:\Users\cme\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\WiFi
Not used: C:\Program Files (x86)\Arduino\libraries\WiFi
Multiple libraries were found for “SD.h”
Used: C:\Users\cme\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\SD
Not used: C:\Program Files (x86)\Arduino\libraries\SD
exit status 1
‘type’ does not name a type

Reimund

Reimund

Kann man auch statt des 2 zeiligen Display ein 4 stelliges einbinden ? Da hat man ja mehr Informationen. Es gibt zwar ein Projekt welches mit einem 4 stelligen arbeitet, aber dort werden zwei Mono Verstärker gebraucht.

Bart Crimson

Bart Crimson

Problems booting, what’s happening?

Rebooting…
ets Jul 29 2019 12:21:46

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×3fff0030,len:1184
load:0×40078000,len:13260
load:0×40080400,len:3028
entry 0×400805e4
Connecting to WiFi
…Connecting to WiFi
…Connecting to WiFi
Connected
Gespeicherte Station 0 von 25
Active station http://icecast.vrtcdn.be/stubru-high.mp3
sourcebuffer created – Free mem=97520
created decoder
Decoder start…
Guru Meditation Error: Core 1 panic’ed (LoadProhibited). Exception was unhandled.

Reimund

Reimund

Bekomme am Schluss immer die Fehlermeldung
Compilation error: ‘class LiquidCrystal_I2C’ has no member named ‘init’

Und das bei der Version von Update von unserem Leser Andreas Schröder

Kann mir da bitte jemand helfen ?

Leave a comment

All comments are moderated before being published

Recommended blog posts

  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