Hallo Bernd,
dann müsste dies das Pinout-Diagramm deines ESP32-Boards sein.
[
attachment=40990]
Hier eine Anleitung zur Inbetriebnahme und Einrichtung der Arduino IDE für den ESP32.
[
attachment=40999]
Schritt 1:
Alle weißen GPIOs (siehe Bild oben) kannst Du ersteinmal ohne weitere Programmmodifikationen schon nutzen. Die Nummer hinter GPIO ist dann die Pinnummer die Du im Programm angeben musst. Ein kleines Testprogramm mit einer blinkenden LED.
Code:
#define LED_BUILTIN 2
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Hinter #define LED_BUILTIN steht eine Nummer. Dies ist die Nummer des GPIO-Anschlusses an den eine LED angeschlossen wird. Oben genanntes Beispiel müsste also eine LED an GPIO2 zum Blinken bringen. Funktionierts bei Dir?
Als Board habe ich unter Werkzeuge "ESP32 Dev Modul" ausgewählt und dann das Programm hochgeladen.
Wenn das funktioniert, dann gehe zu Schritt 2:
Schritt 2:
Identifiziere an deinem VS1053-Board folgende Anschlüsse:
XDCS
XCS
XRST (XRESET)
DREQ
SCLK
SI (MOSI)
SO (MISO)
DGND/GND
+5V
Verbinde +5V mit +5V des ESP32 und DGND/GND (Masse) mit GND deines ESP32-Bords. Die restlichen Daten-/Steuerleitungen müssen auf je ein GPIO des ESP32 (siehe Schritt 1) laufen. Die zugeteilten Nummern müssen dann in nachfolgendem Testprogramm, unter Anschlussschema des VS1053, eingetragen werden.
Danach trägst Du für XXX bei ssid = "XXX"; deinen WLAN-Netzwerknamen ein. Bei Passwort das Passwort zu deinem WLAN-Netz.
Hier noch die Bibliothek für den VS1053, die muss noch in der Arduino IDE installiert werden (Inhalt des gepackten Archiv ins lokale "Arduino-libraries" kopieren).
[
attachment=40996]
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 GPIONummer_CS-Pin // VS1053 Chip Select Pin
#define VS1053_DCS GPIONummer_DCS-Pin // VS1053 Data/Command Select Pin
#define VS1053_DREQ GPIONummer_DREQ-Pin // VS1053 Data request
#define VS1053_MOSI GPIONummer_MOSI-Pin // VS1053 MOSI
#define VS1053_MISO GPIONummer_MISO-Pin // VS1053 MISO
#define VS1053_CLK GPIONummer_CLK-Pin // VS1053 Clock Pin
#define VS1053_RESET -1 // 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);
}
}
}
Nachdem Du das Programm kompiliert und auf den ESP32 übertragen hast, sollte nach einigen Sekunden aus dem Kopfhöreranschluß des VS1053 der Deutschlandfunk hörbar sein. Öffne bitte während der Übertragung des Programms zum ESP32 den "Seriellen Monitor" aus dem Menüpunkt "Werkzeuge". Dort gibt das Programm seine Meldungen aus. Wenn alles richtig angeschlossen ist sollte dort auch "VS1053-DSP-Dekoder gefunden" ausgegeben werden. Wenn die Verkabelung fehlerhaft ist, dann erscheint dort "Kein VS1053-DSP-Dekoder gefunden". Im Seriellen Monitor kann man auch sehen ob der ESP32 eine WLAN-Verbindung bekommen hat.
Schritt 3:
Sollte im Seriellen Monitor gemeldet werden, das sowohl der VS1053 Dekoder als auch eine WLAN-Verbindung gefunden wurde, aber im Kopfhörerausgang des VS1053 nichts zu hören sein, dann nochmal melden.