Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Das einfachste Internetradio mit dem neuen ESP32 Audio
#21
Unterstützung für eine IR-Fernbedienung ist zumindest mal integriert. Damit experimentiert habe ich noch nicht. Die app-Lösung ist m.E. die elegantere.

Zitat:// IR Signal
//-----------
#define PIN_IR_SIGNAL GPIO_NUM_21 // Remote IR source
.....
- Remote IR support integrated. Nec protocol only.
.....
Version 1.5 and up of KaRadio32 allows you to configure gpio's and two custom IR keys per action. 
This allows you to take advantage of the standard software even if your port configuration and/or your remote control are not the same. 
The configuration must be specified in a csv file. 
A template is given by the pattern.csv file
The default configuration of the current software is in the standard_adb.csv file. 
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#22
IR Empfänger habe ich dran und es geht auch. Habe die csv geändert und in die Binärdatei codiert. Habe gedacht, Du findest eine einfachere Lösung.
Liebe Grüße,
der Jens wars gewesen...

--------------------------------------------------------------
Die Wege der Elektronen sind unergründlich.
Zitieren
#23
Hallo zusammen,

mein ESP32 Audio von Jens läuft jetzt auch! Es ließ sich einfach einrichten. Smiley20

Wie fügt man denn mit der KaRadio-App einen Sender hinzu? Der voreingestellte Sender spielt Hupfdohlenmusik, das ist auf die Dauer nix. Smile
Den Sender kann man zwar editieren, ich kann auch höhere Slot Nummern (wohl Senderspeicherplätze) sehen und editieren, aber nicht speichern.

Edit: Mit der KaRadio-App sucht man wohl nur die Stationen aus. Editieren oder importieren kann man sie per Web-Oberfläche des KaRadio.

Gruß, Frank
Keiner von uns kommt lebend hier raus. Also spart nicht alles für später auf. Eßt leckeres Essen. Spaziert in der Sonne. Springt ins Meer. Sagt die Wahrheit und tragt euer Herz auf der Zunge. Seid albern. Seid freundlich. Seid komisch. Bastelt mit Radios. Für nichts anderes ist Zeit.
Zitieren
#24
Hallo Frank,

die Senderliste kann bei den Settings in eine Textdatei gespeichert werden oder von einer Textdatei wiederhergestellt werden


.jpg   save.JPG (Größe: 23,34 KB / Downloads: 730)


Zitat:{"Name":"WDR5","URL":"wdr-wdr5-live.icecast.wdr.de","File":"/wdr/wdr5/live/mp3/128/stream.mp3","Port":"80","ovol":"0"}
{"Name":"SR 1","URL":"streaming01.sr-online.de","File":"/sr1_1.m3u","Port":"80","ovol":"-18"}
{"Name":"Arabella Classic Rock","URL":"rs32.stream24.net","File":"/arabella-rock.mp3:80/","Port":"80","ovol":"0"}
{"Name":"","URL":"","File":"","Port":"80","ovol":"48"}
{"Name":"","URL":"","File":"","Port":"80","ovol":"0"}
{"Name":"","URL":"","File":"","Port":"80","ovol":"0"}
{"Name":"","URL":"","File":"","Port":"80","ovol":"0"}
{"Name":"","URL":"","File":"","Port":"80","ovol":"0"}
....
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#25
Hallo Jupp,

ja, ich habe schon einige Web-Stationen ausprobiert/importiert/geändert.
Einige Streams werden nicht empfangen, auch "Arabella Classic Rock" nicht.
Evtl. liegt es auch an https-URLs oder an .aac-Files, aber das habe ich noch nicht ausreichend "erforscht".

Die Verbindung mit der Web-Oberfläche ist nicht so stabil. Manchmal kann ich nicht mehr mit dem Browser drauf zugreifen; während die Musik ohne Unterbrechung weiterspielt. Das liegt aber evtl. an meinem WLAN. Der Zugriff mit der App funktioniert ganz gut; die belastet den Datenverkehr ja auch nicht soviel.
Die Betriebsspannung aus dem 5-V-Netzteil liegt ziemlich stabil bei 5,1 V. Oszillografiert habe ich sie aber noch nicht.

Gruß, Frank
Keiner von uns kommt lebend hier raus. Also spart nicht alles für später auf. Eßt leckeres Essen. Spaziert in der Sonne. Springt ins Meer. Sagt die Wahrheit und tragt euer Herz auf der Zunge. Seid albern. Seid freundlich. Seid komisch. Bastelt mit Radios. Für nichts anderes ist Zeit.
Zitieren
#26
(23.11.2022, 00:43)Bosk Veld schrieb: Einige Streams werden nicht empfangen, auch "Arabella Classic Rock" nicht.
Evtl. liegt es auch an https-URLs oder an .aac-Files, aber das habe ich noch nicht ausreichend "erforscht".

Soweit ich weiß, spielt KaRadio über I2S nur MP3 Streams ab. Bitte berichtigt mich, wenn ich da falsch liege. Wenn Du unbedingt andere Formate brauchst, dann müsstest Du auf ein anderes System umsteigen.
Das https kannst Du bei fast allen Sendern einfach in http abändern. 

Ich bin im Moment beruflich auswärts unterwegs. Wenn ich wieder zu Hause bin, möchte ich mir dieses mal genauer anschauen.
Liebe Grüße,
der Jens wars gewesen...

--------------------------------------------------------------
Die Wege der Elektronen sind unergründlich.
Zitieren
#27
Yepp, "aac" kann er nicht dekodieren. Playlists ("*.pls", "*.asx" und "*.m3u") klappen.

Zitat:Das https kannst Du bei fast allen Sendern einfach in http abändern.
Das hatte ich bei Deutschlandfunk versucht, zunächst vergeblich. Mit Port 80 funktionierte es dann.
"Arabella Classic Rock" klappt jetzt auch, nach dem Entfernen der Port-Angabe vom Filenamen.

Code:
{"Name":"DLF","URL":"st01.sslstream.dlf.de","File":"/dlf/01/128/mp3/stream.mp3","Port":"80","ovol":"0"}
{"Name":"Arabella Classic Rock","URL":"rs32.stream24.net","File":"/arabella-rock.mp3","Port":"80","ovol":"0"}

Auch die KaRadio-App verliert öfter die Verbindung zum Radio, obwohl es nur 1 m vom Repeater entfernt steht. Die Wifi-Signalmesser-App zeigt an der Stelle ein starkes Signal an.

Gruß, Frank
Keiner von uns kommt lebend hier raus. Also spart nicht alles für später auf. Eßt leckeres Essen. Spaziert in der Sonne. Springt ins Meer. Sagt die Wahrheit und tragt euer Herz auf der Zunge. Seid albern. Seid freundlich. Seid komisch. Bastelt mit Radios. Für nichts anderes ist Zeit.
Zitieren
#28
Bosk Veld schrieb:Auch die KaRadio-App verliert öfter die Verbindung zum Radio, obwohl es nur 1 m vom Repeater entfernt steht. Die Wifi-Signalmesser-App zeigt an der Stelle ein starkes Signal an.

das Problem habe ich auch. Vor allem auch mit dem webinterface. Das liegt nicht am Wlan, sondern es ist ein Ressourcenproblem.
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#29
Mit meiner obigen Einstellung in der FritzBox (dieses Gerät priorisieren) geht das weg. In Routern anderer Hersteller gibt es manchmal ähnliche Menupunkte.
Leider hat man bei diesen "Fertigradio Scripten" wenig Möglichkeiten, den Buffer deutlich zu erhöhen. Sie sind für 4Mb konstruiert und nutzen nicht den zusätzlichen Speicherplatz den wir haben. Im Prinzip verschwenden wir die zusätzlichen 4Mb des ESP32 Audio.
Von daher haben wir eigentlich kein Ressourcenproblem, die Ressourcen werden nur nicht genutzt.
Liebe Grüße,
der Jens wars gewesen...

--------------------------------------------------------------
Die Wege der Elektronen sind unergründlich.
Zitieren
#30
ich bin diesem Hinweis nachgegangen:

Zitat:For a wrover cpu you need a csv file with psram in the name. Without it, the default configuration will fail.

hab dann einfach die esp32_audio.bin in esp32_audio_psram.bin umbenannt. Dann den ESP gelöscht und wieder neu bespielt.

aac kann zwar immer noch nicht decodiert werden, und im debug-mode wird immer noch ein buffer von 40960 angezeigt:

Zitat:I (1228616) audio_player: Buffer fill 99%, 40750 // 40960 bytes

ABER ich kann flüssig in der Senderliste im webinterface arbeiten. Beim Speichern dauert es zwar immer ein paar Sekunden, aber dann ist das webinterface wieder komplett da, wo es vorher überhaupt nicht mehr auf die Beine kam. Auch die app reagiert zügig. Innerhalb von 3 Sekunden ist der buffer beim Umschalten gefüllt und der Sender wird abgespielt.
Ich will mich noch nicht festnageln, vielleicht spielt ja irgendein Zufall rein, aber ihr könnt das ja mal ausprobieren. Änderungen am router habe ich nicht durchgeführt.
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#31
Zitat:For a wrover cpu you need a csv file with psram in the name. Without it, the default configuration will fail.

Eigentlich macht das überhaupt keinen Sinn. Wo sollte der Name des hochgeladenen binary ausgewertet werden? Bestenfalls im header der Datei. Und dort ist sowohl bei esp32_audio.bin als auch bei esp32_audio_psram.bin noch der ursprüngliche Name der Vorlage standard_adb.csv hinterlegt.


.jpg   standard.JPG (Größe: 71,85 KB / Downloads: 611)

nun gut, die Zukunft wird es zeigen. Der nächste Versuch wäre dann ein Patchen des Vorlagenamen.

noch was anderes:

ein OTA Update hat die komplette Installation zerschossen. Hier also vorsichtig sein!

Code:
....
Written  1440078  of  1562384
Written  1472846  of  1562384
Written  1505614  of  1562384
Written  1538382  of  1562384
Have written image length 1562384  of  1562384

Connection closed, all packets received

Total Write binary data length : 1562384
Update firmware succeded. Restarting
E (570056) main: Wifi Disconnected.
ets Jul 29 2019 12:21:46

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:4532
load:0x40078000,len:10724
ho 0 tail 12 room 4
load:0x40080400,len:5600
entry 0x400806b4
E (597) psram: PSRAM ID read error: 0xffffffff
E (597) spiram: SPI RAM enabled but initialization failed. Bailing out.
E (611) main: RAM left: 213712
E (611) main: Running partition type 0 subtype 17 (offset 0x001d0000)
Log level is now ESP_LOG_ERROR
E (2021) vs1053: NO VS1053 detected
E (2111) i2c: i2c_param_config(662): i2c clock choice is invalid, please check flag and frequency
E (2111) err: esp_err_t = 258

assert failed: u8g2_esp32_i2c_byte_cb u8g2_esp32_hal.c:141 (0 && "i2c_param_config(I2C_MASTER_NUM, &conf)")


Backtrace:0x400827f0:0x3ffc1dd00x40091b91:0x3ffc1df0 0x4009a341:0x3ffc1e10 0x400ea7ad:0x3ffc1f40 0x400eb37b:0x3ffc1f80 0x400eb39f:0x3ffc1fa0 0x400eb780:0x3ffc1fc0 0x4019c661:0x3ffc1fe0 0x400e6812:0x3ffc2000 0x400e3e48:0x3ffc2090 0x400d86cc:0x3ffc20b0 0x401a8237:0x3ffc2110




ELF file SHA256: e5c867e2a4282ac5

Entering gdb stub now.
$T0b#e6ets Jul 29 2019 12:21:46
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#32
(24.11.2022, 12:39)saarfranzose schrieb:
Zitat:For a wrover cpu you need a csv file with psram in the name. Without it, the default configuration will fail.

Eigentlich macht das überhaupt keinen Sinn. Wo sollte der Name des hochgeladenen binary ausgewertet werden? Bestenfalls im header der Datei. Und dort ist sowohl bei esp32_audio.bin als auch bei esp32_audio_psram.bin noch der ursprüngliche Name der Vorlage standard_adb.csv hinterlegt.

Ein ESP32 WROOM 32 hat keinen PSRAM, das ist das Geheimnis an der Sache. Man könnte externen PSRAM über SPI anschließen, das ist aber eigentlich nicht im Sinne des Erfinders.
Doch leider nutzen die fertigen Scripte nur 4 Mb Speicher, dabei hätte man bei 8 Mb Flashspeicher 4 Mb übrig. Das ist Bufferspeicher für mindestens 30 Sekunden bei guter Qualität. Daran werde ich die nächsten Tage mal basteln.
Liebe Grüße,
der Jens wars gewesen...

--------------------------------------------------------------
Die Wege der Elektronen sind unergründlich.
Zitieren
#33
Hallo Jupp, ich habe große Erfolge mit dem Script von earlephilhower. Dort kann man die Größe des Buffers selbst definieren.
Erst Bibliothek runterladen, wie immer. Dort muss in der AudioOutputI2S.cpp folgendes geändert werden:
  bclkPin = 27;
  wclkPin = 26;
  doutPin = 25;
So funktioniert das auch mit dem ESP32 Audio.
Und nun das Script. Wäre schön, wenn Du das mal probieren könntest (und wer das noch kann natürlich auch).
Code:
#include <Arduino.h>
#include <WiFi.h>
#include "AudioFileSourceICYStream.h"
#include "AudioFileSourceBuffer.h"
#include "AudioGeneratorMP3.h"
#include "AudioOutputI2S.h"

// Enter your WiFi setup here:
const char *SSID = "SSID";
const char *PASSWORD = "PASSWORT";

//const char *URL="http://fm02-ice.stream.khz.se/fm02_mp3";
const char *URL="http://stream.ffn.de/energybremen/mp3-192/;stream.nsv";

AudioGeneratorMP3 *mp3;
AudioFileSourceICYStream *file;
AudioFileSourceBuffer *buff;
AudioOutputI2S *out;
// Called when a metadata event occurs (i.e. an ID3 tag, an ICY block, etc.
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();
}

// Called when there's a warning or error (like a buffer underflow or decode hiccup)
void StatusCallback(void *cbData, int code, const char *string)
{
  const char *ptr = reinterpret_cast<const char *>(cbData);
  // Note that the string may be in PROGMEM, so copy it to RAM for printf
  char s1[64];
  strncpy_P(s1, string, sizeof(s1));
  s1[sizeof(s1)-1]=0;
  Serial.printf("STATUS(%s) '%d' = '%s'\n", ptr, code, s1);
  Serial.flush();
}


void setup()
{
  Serial.begin(115200);
  delay(1000);
  Serial.println("Connecting to WiFi");

  WiFi.disconnect();
  WiFi.softAPdisconnect(true);
  WiFi.mode(WIFI_STA);
 
  WiFi.begin(SSID, PASSWORD);

  // Try forever
  while (WiFi.status() != WL_CONNECTED) {
    Serial.println("...Connecting to WiFi");
    delay(1000);
  }
  Serial.println("Connected");

  audioLogger = &Serial;
  file = new AudioFileSourceICYStream(URL);
  file->RegisterMetadataCB(MDCallback, (void*)"ICY");
  buff = new AudioFileSourceBuffer(file, 65536); // hier kann man ein wenig spielen, dieser Wert war bei mir optimal
  buff->RegisterStatusCB(StatusCallback, (void*)"buffer");
  out = new AudioOutputI2S();
  out->SetGain(0.1);
  mp3 = new AudioGeneratorMP3();
  mp3->RegisterStatusCB(StatusCallback, (void*)"mp3");
  delay(1000); // Das habe ich eingefügt, damit er beim ersten Buffer füllen nicht sofort anläuft und aussetzt
  mp3->begin(buff, out);
}


void loop()
{
  static int lastms = 0;

  if (mp3->isRunning()) {
    if (millis()-lastms > 10000) {
      lastms = millis();
      Serial.printf("Running for %d ms...\n", lastms);
      Serial.flush();
     }
    if (!mp3->loop()) mp3->stop();
  } else {
    Serial.printf("MP3 done\n");
    delay(1000);
  }
}

Man muss natürlich noch SSID und Passwort ändern. Wenn das überall funktioniert, könnte man darauf ein nicht so überladenes Radio ermöglichen. Dabei können wir es nach unseren Bedürfnissen programmieren, denn wir machen ja einen Neuanfang.

Ich freue mich über Dein Feedback.
Liebe Grüße,
der Jens wars gewesen...

--------------------------------------------------------------
Die Wege der Elektronen sind unergründlich.
Zitieren
#34
Moin Jens,

wollte kurz bestätigen das es mit dem obigen earlephilhower-Beispiel läuft.

-Joe
Zitieren
#35
(26.11.2022, 12:09)JoeXXL schrieb: Moin Jens,

wollte kurz bestätigen das es mit dem obigen  earlephilhower-Beispiel läuft.

-Joe

Vielen Dank für die Rückmeldung.
Liebe Grüße,
der Jens wars gewesen...

--------------------------------------------------------------
Die Wege der Elektronen sind unergründlich.
Zitieren
#36
Statt die "AudioOutputI2S.cpp" zu ändern ist es einfacher in setup() nach der Zeile
   out = new AudioOutputI2S();
folgendes einfügen
    out->SetPinout(27, 26, 25);

-Joe
Zitieren
#37
earlephilhower hab ich ebenfalls auf einem der Bausteine laufen. Mit der setup-Änderung von Joe. Nach einem anfänglichen Compilererror "stray '\240' in program". War wohl ein Zeichensatzproblem beim Übertragen des code von RBF nach IDE oder umgekehrt.

Die Meldungen beim Programmstart sind wohl normal bis der buffer gefüllt ist.

Zitat:...
STATUS(mp3) '257' = 'Decoding error 'lost synchronization' at byte offset 70904'
STATUS(mp3) '257' = 'Decoding error 'lost synchronization' at byte offset 70905'
STATUS(mp3) '257' = 'Decoding error 'lost synchronization' at byte offset 70906'
STATUS(mp3) '257' = 'Decoding error 'lost synchronization' at byte offset 70907'
STATUS(mp3) '257' = 'Decoding error 'lost synchronization' at byte offset 70908'
STATUS(mp3) '257' = 'Decoding error 'lost synchronization' at byte offset 70909'
STATUS(mp3) '257' = 'Decoding error 'lost synchronization' at byte offset 70910'
STATUS(mp3) '565' = 'Decoding error 'bad main_data_begin pointer' at byte offset 709'
STATUS(mp3) '565' = 'Decoding error 'bad main_data_begin pointer' at byte offset 712'
Running for 12586 ms...
Running for 22587 ms...
Running for 32588 ms...
Running for 42592 ms...
Running for 52596 ms...
...
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren
#38
(26.11.2022, 12:44)JoeXXL schrieb: Statt die "AudioOutputI2S.cpp" zu ändern ist es einfacher in setup() nach der Zeile
   out = new AudioOutputI2S();
folgendes einfügen
    out->SetPinout(27, 26, 25);

-Joe

Super, ich habe mich noch nicht damit beschäftigt. Daher war das für mich erstmal der schnellste Weg. Aber so ist das natürlich noch besser.
Liebe Grüße,
der Jens wars gewesen...

--------------------------------------------------------------
Die Wege der Elektronen sind unergründlich.
Zitieren
#39
(24.11.2022, 00:56)saarfranzose schrieb: hab dann einfach die esp32_audio.bin in esp32_audio_psram.bin umbenannt. Dann den ESP gelöscht und wieder neu bespielt.
Das hat bei mir zwar nicht auf Anhieb geklappt, aber: Es hat geklappt! Smiley20 Vielen Dank für Deine Hinweise per WhatsApp, Jupp! (Wir wollten mit meinen unbeholfenen Schritten nicht diesen Thread aufblähen. Smile )
Die Kommunikation mit dem ESP32 läuft jetzt sehr gut. Vorher mußte ich ihn oft neu starten; jetzt überhaupt nicht mehr.

Gruß, Frank
Keiner von uns kommt lebend hier raus. Also spart nicht alles für später auf. Eßt leckeres Essen. Spaziert in der Sonne. Springt ins Meer. Sagt die Wahrheit und tragt euer Herz auf der Zunge. Seid albern. Seid freundlich. Seid komisch. Bastelt mit Radios. Für nichts anderes ist Zeit.
Zitieren
#40
zu dem Thema mit der Umbenennung will ich noch etwas sagen wenn ich gesicherte Erkenntnisse habe. Ist noch etwas Arbeit bis dahin.
Gruß,
Jupp
-----------------------------

was du baust ist immer mit dir verbunden
(Lego)

Einsamkeit ist nur ein Mangel an Technologie
(@beetlebum)
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
Rainbow YoRadio ESP32 Hilfe bei minimaler Softwareänderung Ralf_00 2 232 08.04.2024, 21:20
Letzter Beitrag: Ralf_00
  yoradio mit ESP32 Juppy 22 765 08.04.2024, 11:24
Letzter Beitrag: saarfranzose
  ESP32 Internetradio yoRadio Problembesprechung Klaus99 103 8.971 02.04.2024, 13:22
Letzter Beitrag: Bosk Veld
  KaRadio ESP32 Wlan Problem thomas.linz 9 602 08.03.2024, 00:01
Letzter Beitrag: Siegfried55
  Das (aller-) einfachste InternetRadio mit WT32-SC01 DrNeurosurg 19 2.152 06.03.2024, 18:56
Letzter Beitrag: DrNeurosurg

Gehe zu: