Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Fragen und Antworten zum Nachbau - ESP8266/ESP32 Webradio
#21
Hallo Bernd,

bei Eckstein sind sie nachbestellt! Dauert zirka 8-10 Tage. Ich lasse mir mal ein Exemplar kommen, baue es auf einem Steckbrett mit einem ESP32 auf. Dann haben wir beide die gleiche Hardware und ich kann Dir eine detailierte Aufbauanleitung geben. Mein Webradio wird gerade von zwei weiteren Nutzern im EEV-Forum nachgebaut und mit weiterentwickelt. Ein Nachbauer nutzt auch das Adafruit DSP-Board und bei Ihm läuft die Sache ohne Probleme. Müssen wir dann mal schauen woran es scheitert, es kann nichts Großes sein. Das bekommen wir Beide hin!
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#22
Guten Tag,

ok, dann mal schauen, bin dann erstmal wieder 4tage nicht am rechner....chemo
Zitieren
#23
Mensch Bernd,

und ich quäle Dich auch noch mit nem Mikrocontroller und dem DSP während Du in der Chemo steckst. Viel Kraft für die schei... Tage.

Liebe Grüße Bernhard.
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#24
Guten Abend,
klar mach ich das, ist Geistige Ablenkung.
Meine anderen Projekte sind erstmal auf Eis gelegt, zuviel Körperliche Anstrengung momentan.

Ahso, wenn ich das VS1053 Bord nicht angeschlossen habe, wird es dennoch am ESP32 erkannt, komisch komisch.
Hab erstmal Ein Powerboard fürs Steckbrett geordert. Ab Samstag nachmittag gehts dann weiter.
mfg Bernd
Zitieren
#25
Hallo Bernd,

gestern noch das Adafruit DSP-Bord telefonisch in Saarbrücken bestellt, heute zum Frühstück schon in der Briefpost! Was für ein Service!!!

Jetzt zum Anschluß:

VS1053 CS-Pin auf ESP32 Pin-17   // VS1053 Chip Select Pin
VS1053 XDCS-Pin auf ESP32 Pin-16   // VS1053 Data/Command Select Pin
VS1053 DREQ-Pin auf ESP32 Pin-34  // VS1053 Data request
VS1053 MOSI-Pin auf ESP32 Pin-25  // VS1053 MOSI
VS1053 MISO-Pin auf ESP32 Pin-26  // VS1053 MISO
VS1053 CLK-Pin auf ESP32 Pin-32   // VS1053 Clock Pin
VS1053 RESET-Pin auf ESP32 Pin- 27   // VS1053 reset pin (-1 unbelegt)

VS1053 VCC-Pin auf ESP32 Pin +5V
VS1053 GND-Pin auf ESP32 GND-Pin

GPIO0 und GPIO1 auf Masse
LOUT und ROUT auf Klinke Kopfhörer + AGND


Im Programm sieht das so aus (das ganze Programm nochmal unten):

// Anschlussschema des VS1053-DSP
#define VS1053_CS     17   // VS1053 Chip Select Pin
#define VS1053_DCS     16   // VS1053 Data/Command Select Pin
#define VS1053_DREQ    34  // VS1053 Data request
#define VS1053_MOSI    25  // VS1053 MOSI
#define VS1053_MISO    26  // VS1053 MISO
#define VS1053_CLK     32   // VS1053 Clock Pin
#define VS1053_RESET   27   // VS1053 reset pin (-1 unbelegt)

Hier jetzt das komplette Programm (ohne meine WLAN-Zugangsdaten!):

Code:
// Bibliotheken einbinden
#include <WiFiClient.h>
#include <WiFi.h>
#include <Adafruit_VS1053.h>

// Zugangsdaten zum WLAN
char* ssid     = "xxx";
const char* password = "xxx";

// Webstream DLF: http://st01.dlf.de/dlf/01/56/ogg/stream.ogg
char* hostrechner = "st01.dlf.de";
char* pfad = "/dlf/01/56/ogg/stream.ogg";
int httpPort = 80;

// Anschlussschema des VS1053-DSP
#define VS1053_CS     17   // VS1053 Chip Select Pin
#define VS1053_DCS     16   // VS1053 Data/Command Select Pin
#define VS1053_DREQ    34  // VS1053 Data request
#define VS1053_MOSI    25  // VS1053 MOSI
#define VS1053_MISO    26  // VS1053 MISO
#define VS1053_CLK     32   // VS1053 Clock Pin
#define VS1053_RESET   27   // VS1053 reset pin (-1 unbelegt)


// Dekoderinstanz erstellen
Adafruit_VS1053 VS1053Dekoder = Adafruit_VS1053(VS1053_MOSI, VS1053_MISO, VS1053_CLK, VS1053_RESET, VS1053_CS, VS1053_DCS, VS1053_DREQ);


// MP3 Datenpuffer
uint8_t mp3buff[32];  

// Einen WiFi-Client für HTTP/TCP-Verbindungen erstellen
WiFiClient client;


void setup() {
Serial.begin(115200); // Serielle Console für Fehlersuche

if (! VS1053Dekoder.begin())
  { // initialisiere VS1053-Dekoder
   Serial.println(F("Kein VS1053-DSP-Dekoder gefunden"));
   while (1) delay(10);
}

Serial.println(F("VS1053-DSP-Dekoder gefunden"));
// Einstellung Standardlaustärke (links, rechts)
VS1053Dekoder.setVolume(7, 7);

// WIFI-Client initialisieren
Serial.print("Verbinde mit Netzwerk-SSID "); Serial.println(ssid);
WiFi.begin(ssid, password);  
while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print(".");
}

Serial.print("WIFI-Verbindung hergestellt. ");  
Serial.println("IP-Adresse: ");  Serial.println(WiFi.localIP());


Serial.print("Verbinde zum Audiostream: ");  Serial.println(hostrechner);

if (!client.connect(hostrechner, httpPort)) {
  Serial.println("Verbindung fehlgeschlagen!");
  return;
}

// URI zur Anfrage erzeugen
Serial.print("Verbindung steht, stelle Anfrage-URL: ");
Serial.println(pfad);

client.print(String("GET ") + pfad + " HTTP/1.1\r\n" +
             "Host: " + hostrechner + "\r\n" +
             "Connection: close\r\n\r\n");
}


void loop() {
// DSP für weitere Daten bereit?
if (VS1053Dekoder.readyForData()) {      
  if (client.available() > 0) {
    // Datenpuffer füllen
    uint8_t bytesread = client.read(mp3buff, 32);
    // und zum Dekoder schicken
    VS1053Dekoder.playData(mp3buff, bytesread);      
   }
}
}



Nach einem Neustart des ESP32 meldet die Konsole:


Zitat:rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0x00
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
modeBig GrinIO, clock div:1
load:0x3fff0008,len:8
load:0x3fff0010,len:160
load:0x40078000,len:10632
load:0x40080000,len:252
entry 0x40080034
VS1053-DSP-Dekoder gefunden
Verbinde mit Netzwerk-SSID xxx
..WIFI-Verbindung hergestellt. IP-Adresse:
192.168.1.37
Verbinde zum Audiostream: st01.dlf.de
Verbindung steht, stelle Anfrage-URL: /dlf/01/56/ogg/stream.ogg


Die Verbindung steht, über den Kopfhörerausgang des Adafruit-DSP-Boards ist das Programm des DLF zu hören.
Trenne ich nur eine Datenleitung vom Board und mache einen Neustart des ESP32 wird der Dekoder nicht mehr gefunden und in der Konsole steht richtigerweise:


Zitat:rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0x00
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
modeBig GrinIO, clock div:1
load:0x3fff0008,len:8
load:0x3fff0010,len:160
load:0x40078000,len:10632
load:0x40080000,len:252
entry 0x40080034
Kein VS1053-DSP-Dekoder gefunden

Das ist alles richtig so. Es geht mit der Bibliothek auch nicht anders, da kein Register des VS1053 mehr ausgelesenen werden kann, deshalb liefert die VS1053Dekoder::begin() beziehungsweise uint8_t Adafruit_VS1053::begin() einen 
Wert zurück, der in if (! VS1053Dekoder.begin()) eine TRUE-Bedingung ergibt. Folglich wird auf der Konsole ausgegeben, das kein VS1053-DSP-Dekoder gefunden wurde.

Warum das bei Dir nicht so ist? Ja eventuell hast Du kein Reset des ESP32 gemacht und es war noch eine alte Konsolenmeldung von einem Durchlauf als der Dekoder gefunden wurde (die Konsole wird ja nicht gelöscht) oder dein ESP32 oder VS1053 ist defekt. Möglicherweise beim Anlöten der Stiftleisten gekillt? Aber das kann ich mir ehrlich gesagt nicht vorstellen. Soviel Pech das bisher alle Boards defekt sind? Bitte überprüfe nochmal deine Verkabelung, dein Programm (kopiere es aus diesem Posting heraus) , deine Programmiereinstellung. 
Wenn Du alles genauso gemacht hast wie oben beschrieben, kann eigentlich nur alles funktionieren. Wenn nicht, müsste man mit einem Logic-Analyzer schauen was der ESP32 bei dir auf den Bus schreibt. Dann kann eigentlich nur die Hardware eine Macke haben. Vielleicht hat das Steckbrett auch fehlerhafte Kontakte? Denke daran, der DSP  gibt nur Kopfhörerpegel aus! Also keine große Box dran hägen. Mehr kann man eigentlich per "Fern-"Diagnose nicht machen.

Gruß Bernhard.
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#26
Guten Tag,
bin wieder ON.

also habe das eben umgesetzt, funktioniert.
Schade nur Kopfhörer, ich probier mal einen anderen mit 3Watt ausgang.
Da solte dann noch ein Lautstärkeregler angeknotet werden.
Zitat:rst:0x1 (POWERON_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
modeBig GrinIO, clock div:1
load:0x3fff0010,len:4
load:0x3fff0014,len:708
load:0x40078000,len:0
load:0x40078000,len:12168
entry 0x40078a68
VS1053-DSP-Dekoder gefunden
Verbinde mit Netzwerk-SSID ++++++
..WIFI-Verbindung hergestellt. IP-Adresse:
+++++
Verbinde zum Audiostream: st01.dlf.de
Verbindung steht, stelle Anfrage-URL: /dlf/01/56/ogg/stream.ogg


mfg Bernd
Zitieren
#27
Hallo Bernd,

willkommen zurück! Super das es jetzt funktioniert, ich hätte nämlich auch keine Idee mehr gehabt warum es nicht funktionieren sollte. Als "Nachbrenner" benutze ich diese Klasse-D Stereo Verstärker mit guten Ergebnissen:
https://www.amazon.de/XCSOURCE-PAM8403-V...B01MR169J8
Die Versorgungsspannung belasse ich bei dem Chip bei 3.3 bis 3.7 Volt, mit vollen 5V gehts auch, aber da wird mir das Verstärker IC etwas zu warm.

Im nächsten Schritt müssen wir dann schauen welche Bedienung (Tasten oder Encoder) und welches Display dein Internetradio haben soll, denn ein Senderwechsel nur im Quellcode ist auf Dauer auch ganz schön unbefriedigend.
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#28
Guten tag, Nachbrenner ist geordert, Danke

Wie bekomme ich das Display angeknotet ?
und die webseite vom esp32 angezeigt ?
und warum geht das webradio aus wenn usb abgestöpselt ? externes 5V 3,3V ist angeschlossen

mfg Bernd
Zitieren
#29
Hallo Bernd,

das Display sollte eines mit I2C-Bus sein um nicht zuviele Pins am ESP32 zu belegen.

Für die Webseite brauchst Du noch einige zusätzliche Software-Module, das machen wir später. Ersteinmal müssen solche Sachen wie Kanalwechsel und Display umgesetzt werden, das ist schon für Nichtprogammierer eine ganze Menge an Arbeit. Eines nach dem Anderen.

Der ESP32 kann seine Spannung aus verschiedenen Quellen beziehen, die Umschaltung erfolgt automatisch. Allerdings zieht er zusammen mit dem DSP einges an Strom. Ist die Pufferung zu klein ausgelegt wirds eng und der Prozessor steigt aus. Ich habe in meinem Radio zwei 1500 uF nach dem Regler drin, damit klappt der Wechsel der Versorgungsspannung ohne das der ESP32/VS1053 ein Reboot macht. Der ESP32 und der DSP wollen wirklich keine Störungen auf der Versorgungsspannung.
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#30
Guten Abend,
ist ok, mach och mit den Elkos.
Momentan siehts so aus:
   
also i2c ist am Display dran.

mfg Bernd
Zitieren
#31
Super Bernd,

wie das Display angeschlossen und programmiert wird ist bekannt? Ich schätze mal man kann es mit der LiquidCrystal_I2C - Bibliothek ansprechen, oder? Ansonsten gibt mir ein paar Daten zum Display (Auflösung 2*16, 4*20 oder .....), damit wir wieder die gleiche Hardware haben. Das Programm von oben passe ich dann an. Wofür sind die beiden Potis rechts unten auf dem Steckbrett?
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#32
Guten Abend,
die potis sind nur Zierde momentan.
Das Display ist 2 x 16 , so eins mit Blauem Hintergrund.
Wie ichs an den esp32 anschließe weis ich nicht.
Seh da noch nicht so ganz durch.
mfg Bernd
Zitieren
#33
Hallo Bernd,

okay. I2C Display 2*16.


Schließe mal Vcc des Display an +5V und Masse an Masse, SCL an Pin 22 des ESP32, SDA an Pin 21 des ESP.
Im neuen Testprogramm stehen die Pinzuweisungen bei


Zitat:// LCD
#define DISPLAY_SDA_PIN 21
#define DISPLAY_SCL_PIN 22

#define DISPLAY_X 16
#define DISPLAY_Y 2


Die Displayauflösung ist darunter, also 16 in X-Richtung und 2 in Y-Richtung.

Meine Displayadresse am I2C - Bus ist die 0x27, wenn die nicht bei Dir funktioniert, probiere die: 0x3F

Ansonsten schreiben die restlichen Code-Änderungen jetzt die Statusmeldungen zusätzlich aufs Display.

Hier jetzt das abgeänderte Testprogramm:

Code:
// Bibliotheken einbinden
#include <WiFiClient.h>
#include <WiFi.h>
#include <Adafruit_VS1053.h>
#include <LiquidCrystal_I2C.h>

// Zugangsdaten zum WLAN
char* ssid     = "xxx";
const char* password = "xxx;

// Webstream DLF: http://st01.dlf.de/dlf/01/56/ogg/stream.ogg
char* hostrechner = "st01.dlf.de";
char* pfad = "/dlf/01/56/ogg/stream.ogg";
int httpPort = 80;

// Anschlussschema des VS1053-DSP
#define VS1053_CS     17   // VS1053 Chip Select Pin
#define VS1053_DCS     16   // VS1053 Data/Command Select Pin
#define VS1053_DREQ    34  // VS1053 Data request
#define VS1053_MOSI    25  // VS1053 MOSI
#define VS1053_MISO    26  // VS1053 MISO
#define VS1053_CLK     32   // VS1053 Clock Pin
#define VS1053_RESET   27   // VS1053 reset pin (-1 unbelegt)

// LCD
#define DISPLAY_SDA_PIN 21
#define DISPLAY_SCL_PIN 22

#define DISPLAY_X 16
#define DISPLAY_Y 2

#define DISPLAY_I2C_ADRESSE 0x27
//#define DISPLAY_I2C_ADRESSE 0x3f

//LiquidCrystal_I2C lcd(0x3F, DISPLAY_X, DISPLAY_Y);
LiquidCrystal_I2C lcd(DISPLAY_I2C_ADRESSE, DISPLAY_X, DISPLAY_Y);

// Dekoderinstanz erstellen
Adafruit_VS1053 VS1053Dekoder = Adafruit_VS1053(VS1053_MOSI, VS1053_MISO, VS1053_CLK, VS1053_RESET, VS1053_CS, VS1053_DCS, VS1053_DREQ);


// MP3 Datenpuffer
uint8_t mp3buff[32];

// Einen WiFi-Client für HTTP/TCP-Verbindungen erstellen
WiFiClient client;


void setup() {
 Serial.begin(115200); // Serielle Console für Fehlersuche

 Wire.begin(DISPLAY_SDA_PIN, DISPLAY_SCL_PIN);
 lcd.begin(DISPLAY_X, DISPLAY_Y);
 lcd.init();
 lcd.backlight();

 if (! VS1053Dekoder.begin())
 { // initialisiere VS1053-Dekoder
   Serial.println(F("Kein VS1053-DSP-Dekoder gefunden"));
   lcd.clear();
   lcd.setCursor(0, 0);
   lcd.print("BOOT: VS1053 FAIL");
   while (1) delay(10);
 }

 Serial.println(F("VS1053-DSP-Dekoder gefunden"));
 // Einstellung Standardlaustärke (links, rechts)
 VS1053Dekoder.setVolume(7, 7);

 // WIFI-Client initialisieren
 Serial.print("Verbinde mit Netzwerk-SSID "); Serial.println(ssid);
 WiFi.begin(ssid, password);
 while (WiFi.status() != WL_CONNECTED) {
   delay(500);
   Serial.print(".");
   lcd.clear();
   lcd.setCursor(0, 0);
   lcd.print("BOOT: WLAN...");
 }

 Serial.print("WIFI-Verbindung hergestellt. ");
 Serial.println("IP-Adresse: ");  Serial.println(WiFi.localIP());
 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print("BOOT: WLAN OK");
 lcd.setCursor(0, 1);
 lcd.print(WiFi.localIP());
 delay(3000);

 Serial.print("Verbinde zum Audiostream: ");  Serial.println(hostrechner);

 if (!client.connect(hostrechner, httpPort)) {
   Serial.println("Verbindung fehlgeschlagen!");
   return;
 }

 // URI zur Anfrage erzeugen
 Serial.print("Verbindung steht, stelle Anfrage-URL: ");
 Serial.println(pfad);

 client.print(String("GET ") + pfad + " HTTP/1.1\r\n" +
              "Host: " + hostrechner + "\r\n" +
              "Connection: close\r\n\r\n");

 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print("P0-DLF");
}


void loop() {
 // DSP für weitere Daten bereit?
 if (VS1053Dekoder.readyForData()) {
   if (client.available() > 0) {
     // Datenpuffer füllen
     uint8_t bytesread = client.read(mp3buff, 32);
     // und zum Dekoder schicken
     VS1053Dekoder.playData(mp3buff, bytesread);
   }
 }
}



Gruß
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#34
Guten Morgen,
alles klar, teste ich gleich mal
mfg Bernd
Zitieren
#35
Musik Läuft, keine anzeige im Display.

Das ganze bleibt bei "Wire" hängen.

Zitat:
Code:
void setup() {
 Serial.begin(115200); // Serielle Console für Fehlersuche

 Wire.begin(DISPLAY_SDA_PIN, DISPLAY_SCL_PIN);
 lcd.begin(DISPLAY_X, DISPLAY_Y);
 lcd.init();
 lcd.backlight();

Ich habe die Wire mit eingebunden.

#include <Wire.h>

und dann


Code:
void setup() {
 Serial.begin(115200); // Serielle Console für Fehlersuche

 Wire.begin(21, 22);
 lcd.begin(16, 2);
 lcd.init(0x3f);
 lcd.backlight();


Arduino: 1.8.3 (Windows 7), Board: "ESP32 Dev Module, QIO, 80MHz, 115200, None"
C:\Users\klammi\Documents\Arduino\sketch_aug08b\sketch_aug08b.ino: In function 'void setup()':

sketch_aug08b:53: error: 'class LiquidCrystal_I2C' has no member named 'init'

   lcd.init(0x3f);

       ^

sketch_aug08b:56: error: a function-definition is not allowed here before '{' token

 void setup() {

              ^
sketch_aug08b:123: error: expected '}' at end of input

 }

 ^

exit status 1
'class LiquidCrystal_I2C' has no member named 'init'

Jetzt bin ich Ratlos... KopfWand Smiley43

mfg Bernd
Zitieren
#36
Hallo Bernd,

zu deinen Fehlern.

1.) Die Wire.h wird bereits durch die LiquidCrystal_I2C.cpp eingebunden, also nicht einfach irgendwas diesbezüglich ins Testprogramm schreiben.

2.) Warum jetzt diese Änderungen ?
Zitat: Wire.begin(21, 22);
 lcd.begin(16, 2);
 lcd.init(0x3f);
 lcd.backlight();

lass bitte das Testprogramm wie es war,also die Defines sind nicht grundlos gesetzt weil man sonst das Programm noch an weiteren Stellen ändern müsste!
Zitat:Wire.begin(DISPLAY_SDA_PIN, DISPLAY_SCL_PIN);
 lcd.begin(DISPLAY_X, DISPLAY_Y);
 lcd.init();
 lcd.backlight();

3.) Die Funktion muss wie im Testprogramm geschrieben lcd.init() lauten und darf nicht die Adresse als Parameter mitbekommen. Denn der Compiler sagt hier:
Zitat:class LiquidCrystal_I2C' has no member named 'init'

   lcd.init(0x3f);

zu Deutsch: Die Klassenbibliothek hat keine Funktion lcd.init(0x3f)!!! Sie hat aber eine Funktion lcd.init(), also ohne Parameterübergabe. Zudem sagt der Rest der Fehlermeldung, das Du durch das viele (nicht nötige) Editieren des Quelltextes eine geschlossene Klammer zu wenig hast. Der Funktionskörper von setup() ist nicht mehr abgeschlossen.
Möchtest Du die Adresse des Displays ändern, tust Du das an diesen beiden Stellen, ich habe es doch schon so vorbereitet das nur das eine auskommentiert und das andere kommentiert werden muss.
Zitat:#define DISPLAY_I2C_ADRESSE 0x27

//#define DISPLAY_I2C_ADRESSE 0x3f

Als letzte Bemerkung. Mit dem zusätzlichen Display kannst Du die Schaltung nicht mehr rein aus dem USB-Port versorgen, dieser liefert leider nur 100mA, weil der Treiber in deinem Programmierrechner denkt er müsse nur einen Schnittstellenwandler für den ESP32 versorgen.  Versuche ich hier bei mir eine Versorgung über USB, dann bleibt das Display nach kurzem aufzucken immer dunkel (obwohl es richtig konfiguriert ist), und der ESP32 bootet mal anständig, mal nicht. Das USB-Kabel also nur noch zum Programmieren benutzen, dann abziehen und das System mit einer ordentlichen Stromversorgung neu starten. Deine extern angelegte Spannung über dein zusätzliches Versorgungsboard ist wahrscheinlich auch etwas niedriger als die die über das Programmierkabel kommt, deshalb schaltet der Prozessor auch nicht auf die Spannungsquelle um die mehr (und ausreichend) Strom liefern könnte, deshalb Prpgrammerkabel abziehen.

Abschließend noch eine neue LCD_Bibliothek, falls deine nicht mehr aktuell oder durch Änderungen zerschossen ist.

.zip   LiquidCrystal_I2C-master.zip (Größe: 20,22 KB / Downloads: 13)

Also nochmal alles so wie in Beitrag Nummer 33 beschrieben aufbauen und den Original-Code übernehmen, ggf. Displayadresse und Displayauflösung an den Defines(!) ändern.

Gruß
Bernhard
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#37
Guten Tag,
habs geändert, war eine Klammer zuviel.
Jetzt funzt das mit dem Display


Code:
// Bibliotheken einbinden
#include <WiFiClient.h>
#include <WiFi.h>
#include <Adafruit_VS1053.h>
#include <LiquidCrystal_I2C.h>

// Zugangsdaten zum WLAN
char* ssid     = "+++++++";
const char* password = "+++++++";

// Webstream Good Time Oldies: listen.181fm.com/181-goodtime_64k.aac
char* hostrechner = "listen.181fm.com";
char* pfad = "/181-goodtime_64k.aac";
int httpPort = 80;

// Anschlussschema des VS1053-DSP
#define VS1053_CS     17   // VS1053 Chip Select Pin
#define VS1053_DCS     16   // VS1053 Data/Command Select Pin
#define VS1053_DREQ    34  // VS1053 Data request
#define VS1053_MOSI    25  // VS1053 MOSI
#define VS1053_MISO    26  // VS1053 MISO
#define VS1053_CLK     32   // VS1053 Clock Pin
#define VS1053_RESET   27   // VS1053 reset pin (-1 unbelegt)

// LCD
#define DISPLAY_SDA_PIN 21
#define DISPLAY_SCL_PIN 22

#define DISPLAY_X 16
#define DISPLAY_Y 2

#define DISPLAY_I2C_ADRESSE 0x27
//#define DISPLAY_I2C_ADRESSE 0x3f

//LiquidCrystal_I2C lcd(0x3F, DISPLAY_X, DISPLAY_Y);
LiquidCrystal_I2C lcd (0x27, DISPLAY_X, DISPLAY_Y);

// Dekoderinstanz erstellen
Adafruit_VS1053 VS1053Dekoder = Adafruit_VS1053(VS1053_MOSI, VS1053_MISO, VS1053_CLK, VS1053_RESET, VS1053_CS, VS1053_DCS, VS1053_DREQ);


// MP3 Datenpuffer
uint8_t mp3buff[32];

// Einen WiFi-Client für HTTP/TCP-Verbindungen erstellen
WiFiClient client;


void setup() {
 Serial.begin(115200); // Serielle Console für Fehlersuche

 Wire.begin(DISPLAY_SDA_PIN, DISPLAY_SCL_PIN);
 lcd.begin(DISPLAY_X, DISPLAY_Y);
 lcd.init();
 lcd.backlight();


 if (! VS1053Dekoder.begin())
 { // initialisiere VS1053-Dekoder
   Serial.println(F("Kein VS1053-DSP-Dekoder gefunden"));
   lcd.clear();
   lcd.setCursor(0, 0);
   lcd.print("BOOT: VS1053 FAIL");
   while (1) delay(10);
 }

 Serial.println(F("VS1053-DSP-Dekoder gefunden"));
 // Einstellung Standardlaustärke (links, rechts)
 VS1053Dekoder.setVolume(7, 7);

 // WIFI-Client initialisieren
 Serial.print("Verbinde mit Netzwerk-SSID "); Serial.println(ssid);
 WiFi.begin(ssid, password);
 while (WiFi.status() != WL_CONNECTED) {
   delay(500);
   Serial.print(".");
   lcd.clear();
   lcd.setCursor(0, 0);
   lcd.print("BOOT: WLAN...");
 }

 Serial.print("WIFI-Verbindung hergestellt. ");
 Serial.println("IP-Adresse: ");  Serial.println(WiFi.localIP());
 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print("BOOT: WLAN OK");
 lcd.setCursor(0, 1);
 lcd.print(WiFi.localIP());
 delay(3000);
{
 Serial.print("Verbinde zum Audiostream: ");  Serial.println(hostrechner);

 if (!client.connect(hostrechner, httpPort)) {
   Serial.println("Verbindung fehlgeschlagen!");
   return;
 }
}
 // URI zur Anfrage erzeugen
 Serial.print("Verbindung steht, stelle Anfrage-URL: ");
 Serial.println(pfad);

 client.print(String("GET ") + pfad + " HTTP/1.1\r\n" +
              "Host: " + hostrechner + "\r\n" +
              "Connection: close\r\n\r\n");

 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print("P0-GoodTimeOldies");
}


void loop() {
 // DSP für weitere Daten bereit?
 if (VS1053Dekoder.readyForData()) {
   if (client.available() > 0) {
     // Datenpuffer füllen
     uint8_t bytesread = client.read(mp3buff, 32);
     // und zum Dekoder schicken
     VS1053Dekoder.playData(mp3buff, bytesread);
   }
 }
}

kann weitergehen Smiley32

mfg Bernd
Zitieren
#38
Super Bernd,

da das Display jetzt prinzipiell arbeitet brauchen wir noch eine Möglichkeit um Programme umzuschalten und natürlich eine Programmliste.

Zu Punkt 1: Wie willst Du denn die Umschaltung vornehmen?

Zu Punkt 2:

In meiner Firmware werden alle Programme in einer Datei in einem Flash-Dateisystem auf dem Controller gehalten. Ein solches Dateisystem auf dem Controller einzurichten ist ein bisschen kompliziert. Man muss dazu die Arduino IDE umbauen und ein eigenständiges Programmiertool benutzen. Vielleicht verwenden wir hier ersteinmal eine zusätzliche Headerdatei (Programmliste.h) in der wir unsere Programme festlegen und die mit der Standard-Arduino-IDE auf den Controller übertragen werden kann.
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren
#39
Guten Tag,

also umschalten mit dem Drehregler.
Eventuell noch ne Lautstärkereglung mit so einem Regler.
Mit der Programliste erstmal was einfaches.
Kompliziert kann später kommen.

mfg Bernd
Zitieren
#40
Ja so ein Encoder lässt sich nutzen. Die Arduino -Umgebung hat dazu auch schon eine fertige Bibliothek und Beispielcode an Bord.
Oben im Artikel steht ersteinmal die technische Seite zum Encoder, darunter dann die Beispiele.
http://playground.arduino.cc/Main/RotaryEncoders

Ich denke für einen Einsteiger ist das Polling-Verfahren ein guter Weg um das Testprogramm zu erweitern. Wird eine Drehung nach rechts detektiert, dann die Kanalnummer (also eine neue Variable) erhöhen, nach links geht die Kanalnummer nach unten. Zusätzlich bei jedem Kanal dann die neuen Werte für Programmname (ist noch nicht im Beispielcode oben), Serveradresse und Serverpfad aktualisieren beziehungsweise aus einer Programmliste (Array, Vector was auch immer) aus der Programmliste.h auslesen. Danach die Abfrage URI zusammenbasteln damit der neue Datenstrom angefordert werden kann. Ein Tip: Ein Softreset des VS1053 beschleunigt die Umschaltzeit, da der DSP gezwungen wird gleich alle neuen Parameter vom Datenstrom einzulesen. Mit VS1053Dekoder.reset(); löst Du so ein Reset aus.

Wenn es nicht klappt dann melde Dich nocheinmal.
Ansprechpartner für Umbau oder Modernisierung von Röhrenradios mittels SDR,DAB+,Internetradio,Firmwareentwicklung. 
Unser Open-Source Softwarebaukasten für Internetradios gibt es auf der Github-Seite! Projekt: BM45/iRadio (Google "github BM45/iRadio")
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Gartenradio mit ESP32 fx2radio 9 3.111 15.06.2022, 10:23
Letzter Beitrag: fx2radio
  Webradio mit ESP32 Neuling 173 67.461 01.04.2022, 16:31
Letzter Beitrag: saarfranzose
  Packard Bell Easynote SJ82 -Fragen snzgl 1 1.125 13.06.2021, 12:44
Letzter Beitrag: pintel
  Wolle's Webradio mit dem ESP32 Tubefan 7 7.534 20.04.2021, 20:22
Letzter Beitrag: saarfranzose
  Webradio mit ESP8266 / ESP32 Bernhard45 54 24.297 01.02.2021, 12:21
Letzter Beitrag: saarfranzose

Gehe zu: