Beiträge: 7.048
Themen: 605
Registriert seit: Sep 2013
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)
Beiträge: 827
Themen: 66
Registriert seit: Feb 2021
22.11.2022, 19:03
(Dieser Beitrag wurde zuletzt bearbeitet: 22.11.2022, 19:04 von pintel.)
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.
Beiträge: 1.538
Themen: 130
Registriert seit: Oct 2013
22.11.2022, 21:16
(Dieser Beitrag wurde zuletzt bearbeitet: 23.11.2022, 08:37 von Bosk Veld.)
Hallo zusammen,
mein ESP32 Audio von Jens läuft jetzt auch! Es ließ sich einfach einrichten.
Wie fügt man denn mit der KaRadio-App einen Sender hinzu? Der voreingestellte Sender spielt Hupfdohlenmusik, das ist auf die Dauer nix.
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.
Beiträge: 7.048
Themen: 605
Registriert seit: Sep 2013
Hallo Frank,
die Senderliste kann bei den Settings in eine Textdatei gespeichert werden oder von einer Textdatei wiederhergestellt werden
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)
Beiträge: 1.538
Themen: 130
Registriert seit: Oct 2013
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.
Beiträge: 827
Themen: 66
Registriert seit: Feb 2021
(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.
Beiträge: 1.538
Themen: 130
Registriert seit: Oct 2013
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.
Beiträge: 7.048
Themen: 605
Registriert seit: Sep 2013
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)
Beiträge: 827
Themen: 66
Registriert seit: Feb 2021
23.11.2022, 21:30
(Dieser Beitrag wurde zuletzt bearbeitet: 23.11.2022, 21:31 von pintel.)
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.
Beiträge: 7.048
Themen: 605
Registriert seit: Sep 2013
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)
Beiträge: 7.048
Themen: 605
Registriert seit: Sep 2013
24.11.2022, 12:39
(Dieser Beitrag wurde zuletzt bearbeitet: 24.11.2022, 12:43 von saarfranzose.)
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.
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)
Beiträge: 827
Themen: 66
Registriert seit: Feb 2021
(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.
Beiträge: 827
Themen: 66
Registriert seit: Feb 2021
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.
Beiträge: 169
Themen: 14
Registriert seit: Oct 2020
Moin Jens,
wollte kurz bestätigen das es mit dem obigen earlephilhower-Beispiel läuft.
-Joe
Beiträge: 827
Themen: 66
Registriert seit: Feb 2021
(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.
Beiträge: 169
Themen: 14
Registriert seit: Oct 2020
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
Beiträge: 7.048
Themen: 605
Registriert seit: Sep 2013
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)
Beiträge: 827
Themen: 66
Registriert seit: Feb 2021
(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.
Beiträge: 1.538
Themen: 130
Registriert seit: Oct 2013
(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! Vielen Dank für Deine Hinweise per WhatsApp, Jupp! (Wir wollten mit meinen unbeholfenen Schritten nicht diesen Thread aufblähen. )
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.
Beiträge: 7.048
Themen: 605
Registriert seit: Sep 2013
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)
|