ESP32 Radio

Mehr
15 Okt 2017 08:59 #317 von supporter
ESP32 Radio
Cooles Projekt, Danke für's Beschreiben und Teilen.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
11 Apr 2018 14:26 #404 von Wolle
ESP32 Radio
inzwischen läuft die Bibliothek recht stabil, es sind auch andere MP3 Boards verwendbar wie z.B. das von AliExpress.
Es kann auch die Arduino IDE zum programmieren des ESP32 verwendet werden.
Getestet wurden über hundert Stream URLs, hauptsächlich deutscher Radiosender mit unterschiedlichem Format, m3u,pls,mp3 oder asx ist möglich

GitHub: github.com/schreibfaul1/ESP32-vs1053_ext

vG
Wolle

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
12 Jun 2020 11:27 #680 von karl_napp@arcor.de
ESP32 Radio
Hallo in die Runde,

ich wollte das Projekt mit einem TTGO T-Display (siehe Anhang) umsetzen. Der Haken dabei ist, dass das Board den Standard SPI Bus (VSPI) für das Display benutzt und diese Pins nicht herausgeführt sind.
Also wollte ich für die Ansteuerung des VS1053 (rotes Board) den HSPI Bus benutzen. Ich habe dafür im Sketch eine neue Klasse SPI3 gesetzt und die entsprechenden Ports zugewiesen.
#include "Arduino.h"
#include "WiFi.h"
#include "SPI.h"
#include "vs1053_ext.h"

SPIClass SPI3(HSPI);

#define SPI_MOSI      13
#define SPI_MISO       2
#define SPI_SCK       17
#define VS1053_CS     15
#define VS1053_DCS    25
#define VS1053_DREQ   26

String ssid =     "FRITZ!Box 7590 PJ";
String password = "67625843405859146784";

int volume = 11; // max = 21

VS1053 mp3(VS1053_CS, VS1053_DCS, VS1053_DREQ);

//The setup function is called once at startup of the sketch
void setup() {
  Serial.begin(115200);
  SPI3.begin(SPI_SCK, SPI_MISO, SPI_MOSI);
  WiFi.disconnect();
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid.c_str(), password.c_str());
  while (WiFi.status() != WL_CONNECTED) delay(1500);
  Serial.println("Wlan verbunden");
  mp3.begin();
  Serial.println("DSP initialisiert");
  delay(1000);
  mp3.setVolume(volume);
  Serial.println("Lautstärke eingestellt");
  delay(1000);
  //mp3.connecttohost("hr-edge-20ab-fra-lg-cdn.cast.addradio.de/hr/hrinfo/live/mp3/128/stream.mp3");
  mp3.connecttohost("hr-edge-2052-fra-lg-cdn.cast.addradio.de/hr/hr1/live/mp3/128/stream.mp3");
  Serial.println("Station verbunden");
}

// The loop function is called in an endless loop
void loop()
{
  mp3.loop();

  if (Serial.available()) {
    mp3.connecttohost(Serial.readString());
  }
}

// next code is optional:
void vs1053_info(const char *info) {                // called from vs1053
  Serial.print("DEBUG:        ");
  Serial.println(info);                           // debug infos
}
void vs1053_showstation(const char *info) {         // called from vs1053
  Serial.print("STATION:      ");
  Serial.println(info);                           // Show station name
}
void vs1053_showstreamtitle(const char *info) {     // called from vs1053
  Serial.print("STREAMTITLE:  ");
  Serial.println(info);                           // Show title
}
void vs1053_showstreaminfo(const char *info) {      // called from vs1053
  Serial.print("STREAMINFO:   ");
  Serial.println(info);                           // Show streaminfo
}
void vs1053_eof_mp3(const char *info) {             // called from vs1053
  Serial.print("vs1053_eof:   ");
  Serial.print(info);                             // end of mp3 file (filename)
}
void vs1053_bitrate(const char *br) {               // called from vs1053
  Serial.print("BITRATE:      ");
  Serial.println(String(br) + "kBit/s");          // bitrate of current stream
}
void vs1053_commercial(const char *info) {          // called from vs1053
  Serial.print("ADVERTISING:  ");
  Serial.println(String(info) + "sec");           // info is the duration of advertising
}
void vs1053_icyurl(const char *info) {              // called from vs1053
  Serial.print("Homepage:     ");
  Serial.println(info);                           // info contains the URL
}
void vs1053_eof_speech(const char *info) {          // called from vs1053
  Serial.print("end of speech:");
  Serial.println(info);
}
void vs1053_lasthost(const char *info) {            // really connected URL
  Serial.print("lastURL:      ");
  Serial.println(info);
}
Das funktioniert aber so nicht. Das Board rebootet, sobald es zur Wiedergabe des Streams kommen soll.
12:28:01.248 -> Wlan verbunden
12:28:01.575 -> DSP initialisiert
12:28:02.605 -> Lautstärke eingestellt
12:28:03.635 -> DEBUG:        Song stopped correctly after 0 msec
12:28:03.635 -> DEBUG:        Connect to new host: hr-edge-2052-fra-lg-cdn.cast.addradio.de/hr/hr1/live/mp3/128/stream.mp3
12:28:03.635 -> DEBUG:        Connect to hr-edge-2052-fra-lg-cdn.cast.addradio.de on port 80, extension /hr/hr1/live/mp3/128/stream.mp3
12:28:03.635 -> STREAMINFO:   Connect to hr-edge-2052-fra-lg-cdn.cast.addradio.de on port 80, extension /hr/hr1/live/mp3/128/stream.mp3
12:28:07.332 -> DEBUG:        Connected to server
12:28:07.332 -> Station verbunden
12:28:07.425 -> DEBUG:        audio/mpeg seen.
12:28:07.425 -> BITRATE:      128kBit/s
12:28:07.425 -> DEBUG:        ice-audio-info: ice-samplerate=44100;ice-bitrate=128;ice-channels=2
12:28:07.425 -> BITRATE:      128kBit/s
12:28:07.425 -> DEBUG:        icy-name=hr1
12:28:07.425 -> STATION:      hr1
12:28:07.425 -> DEBUG:        icy-private:1
12:28:07.425 -> DEBUG:        icy-pub:0
12:28:07.425 -> Homepage:     http://www.hr.de
12:28:07.425 -> DEBUG:        Server: dg-hr-https_fra-lg_edge_783d2e73099f1a5d68227cfd6bb0b416
12:28:07.425 -> DEBUG:        Cache-Control: no-cache, no-store
12:28:07.425 -> DEBUG:        Access-Control-Allow-Origin: *
12:28:07.425 -> DEBUG:        Access-Control-Allow-Headers: Origin, Accept, X-Requested-With, Content-Type
12:28:07.425 -> DEBUG:        Access-Control-Allow-Methods: GET, OPTIONS, HEAD
12:28:07.425 -> DEBUG:        Connection: Close
12:28:07.425 -> DEBUG:        Expires: Mon, 26 Jul 1997 05:00:00 GMT
12:28:07.425 -> DEBUG:        Switch to DATA, bitrate is 128, metaint is 16000
12:28:07.425 -> lastURL:      hr-edge-2052-fra-lg-cdn.cast.addradio.de/hr/hr1/live/mp3/128/stream.mp3
12:28:08.455 -> Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
12:28:08.455 -> Core 1 register dump:
12:28:08.455 -> PC      : 0x400d907c  PS      : 0x00060230  A0      : 0x800d3124  A1      : 0x3ffb1ed0  
12:28:08.455 -> A2      : 0x00000000  A3      : 0x3ffc15a0  A4      : 0x00000020  A5      : 0x00000040  
12:28:08.455 -> A6      : 0x00000010  A7      : 0xf8c27f4d  A8      : 0x00000008  A9      : 0x00000001  
12:28:08.455 -> A10     : 0x00000000  A11     : 0x00241001  A12     : 0x00000000  A13     : 0x00000001  
12:28:08.455 -> A14     : 0xff000000  A15     : 0x00000001  SAR     : 0x0000001a  EXCCAUSE: 0x0000001c  
12:28:08.502 -> EXCVADDR: 0x00000000  LBEG    : 0x400d9130  LEND    : 0x400d9192  LCOUNT  : 0x00000002  
12:28:08.502 -> 
12:28:08.502 -> Backtrace: 0x400d907c:0x3ffb1ed0 0x400d3121:0x3ffb1ef0 0x400d3315:0x3ffb1f10 0x400d73e5:0x3ffb1f30 0x400d1d22:0x3ffb1f80 0x400da3b5:0x3ffb1fb0 0x40088ddd:0x3ffb1fd0
12:28:08.502 -> 
12:28:08.502 -> Rebooting...
Hat schonmal jemand etwas ähnliches probiert und kann mir helfen?
Mir fehlt da die Erfahrung. Ich habe allerdings die Vermutung, dass es da auch einer Anpassung in einer Lib bedarf?

Viele Grüße
KN
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Powered by Kunena Forum