Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe
Makerprojekte => Arduino und Co (Mikrocontroller) => Thema von: Dietrich am 08. Oktober 2020, 07:16:29

Titel: ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Dietrich am 08. Oktober 2020, 07:16:29

Ich habe eine Tivoli Radio MODEL ONE, welches immer wieder Probleme mit der Sendereinstellung hat.
Meine Überlegung dazu war, es um ein WiFi Internetradiomodul zu ergänzen.
Meine Wahl viel auf folgende Projekt:

https://www.hackster.io/mircemk/simple-esp32-internet-radio-with-oled-display-83e49d

Die benötigte Hardware ist mittlerweile eingetroffen und erste Versuche das ESP Modul über Arduino IDE anzusprechen schlagen fehl, weil

Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: DL8EBD am 08. Oktober 2020, 07:19:32

Hallo Dietrich,

sehr schönes Projekt!

Frage: hast Du den ESP32 Arduino Core installiert?
Siehe auch hier:
**klick** (http://esp32-server.de/)

Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Dietrich am 08. Oktober 2020, 07:39:30

Weitere Quellen meiner Recherche haben mich auch nicht richtig schlauer gemacht.

https://github.com/espressif/esptool
Hier habe ich gesehen das mit pip eine Aktion aufgerufen wird....das ist NIX für Arch-Linux
python-pyserial /Habe ich über die Konsole installiert

Es liest sich so, das gerade der ESP32 mit Arduino IDE
1. nicht alle Funktionen bedient
2. und eher was für den bereits längeren Bediener von Arduini IDE ist.

Meine Erfahrung damit ist eher rudimentär und beruht auf ein Projekt welches ich zum laufen bekommen habe, glaube aber das war mehr Glück. ::)

Bevor ich jetzt die die "falsche" Ausfahrt nehme und stundenlang im Nebel stochere, gibt es einen besseren Weg als mit Arduino IDE.

LG
Dietrich


Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Dietrich am 08. Oktober 2020, 07:43:19

Hallo Thomas,
danke für die schnelle Antwort, ja habe ich

Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: DL8EBD am 08. Oktober 2020, 08:00:27

Zitat von: Dietrich am 08. Oktober 2020, 07:39:30
Es liest sich so, das gerade der ESP32 mit Arduino IDE
1. nicht alle Funktionen bedient
2. und eher was für den bereits längeren Bediener von Arduini IDE ist.


nein, kann ich beides so nicht bestätigen!
zu2:
Habe hier im Kollegenkreis einen totalen Arduino Anfänger der bis vor 14 Tagen nicht wusste was das ist
und auch zuvor noch nie etwas mit Controllern und Co. zutun hatte.
Der hat die Arduino IDE inkl. dem ESP32 Core ruck zuck installiert und sein erstes Programm bereits nach wenigen
Minuten kompiliert.

zu1:
Mir ist jetzt keine Funktion begegnet die nicht funktioniert - was meinst Du genau?

Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Andreas am 08. Oktober 2020, 08:01:58

Ich kann leider auch nur stochern ohne das Modul hier zu haben. Da steht "disabled". Das kann bedeuten, dass das Modul nicht angesprochen werden kann. An welcher Schnittstelle hängt es denn? An ttyUSB0? Da scheint es zumindest gesucht zu werden. Hast Du die Rechte, um auf diese Schnittstelle zuzugreifen? Wem gehört sie (User/Gruppe)? Wenn Du nicht weißt wo das Modul angesprochen wird rufe in einer Konsole auf
journalctl -f
und stecke dann das Modul an.

LG
Andreas

Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Dietrich am 08. Oktober 2020, 12:10:45

Zitat von: Andreas am 08. Oktober 2020, 08:01:58
Ich kann leider auch nur stochern ohne das Modul hier zu haben. Da steht "disabled". Das kann bedeuten, dass das Modul nicht angesprochen werden kann. An welcher Schnittstelle hängt es denn? An ttyUSB0? Da scheint es zumindest gesucht zu werden. Hast Du die Rechte, um auf diese Schnittstelle zuzugreifen? Wem gehört sie (User/Gruppe)? Wenn Du nicht weißt wo das Modul angesprochen wird rufe in einer Konsole auf
journalctl -f
und stecke dann das Modul an.

LG
Andreas


Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Andreas am 08. Oktober 2020, 12:44:52

Schmeiß den Modemmanager raus. Das ist kein Modem. Selbstverständlich wird das von keinem Plugin unterstützt.

Die relevante Stelle ist bei 13:50:37 - da wird die Schnittstelle benannt.
Und um 13:50:38 erkennt der GPS-Daemon da ein GPS-Gerät - warum auch immer. Das ist so auch nicht richtig.

LG
Andreas

Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Andreas am 16. Oktober 2020, 09:32:19

Bei mir funktionieren die Beispiele - auf vielen verschiedenen Rechnern (alle mit Arch-Basis). Es müssen die beiden Pakete python-pyserial und python2-pyserial installiert sein und im Boardverwaltr muss das "ESP32" installiert sein. Dann funktioniert alles out-of-the-box. Eventuell ist der Inhalt deines .arduino-Orrdners in deinem Homeversichnis durch ein anderes Projekt irgendwie zerschossen?

Jetzt versagt jede Fernhilfe und wird zur wilden Glaskugelreiberei, weil ich das Fehlverhalten hier nicht nachstellen kann. Eine sinnvolle Fehlersuche geht jetzt nur an dem Gerät selbst, wo das Problem auftritt.

LG
Andreas

Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Dietrich am 17. Oktober 2020, 19:49:57

Danke Thomas und Andreas für Eure Antworten...wo stehe ich heute ?

Ich konnten den Sketch jetzt hochladen alles ist ohne Fehlermeldungen durchgelaufen.

Andreas hatte mir geraten Arduino IDE neu zu installieren, weil eventuell dort etwas nicht stimmt.

Gesagt getan, die ESP32 Beispieldatei ließ sich danach einwandfrei hochladen, nur mein simple radio nicht.

Mein Fehler bestand darin, die LIB Dateien aus dem Programmordner nicht in den Arduino LIB Ordner kopiert zu haben.

Nun denn, wieder etwas dazu gelernt.

Jetzt noch die Hardware verbinden und staunen--in welche Richtung= ÜBERRASCHUNG

Gruß
Dietrich

Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: DL8EBD am 17. Oktober 2020, 20:27:22

Dietrich, es ist durchaus möglich Libraries im Sketch Ordner abzulegen und zu nutzen.

Aufruf:
#include "xyz.h"

Libraries in den Standard-Ordnern rufst Du mit #include <xyz.h> auf

Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Dietrich am 21. Oktober 2020, 19:14:43

Es hat etwas gedauert aber das Radio spielt jetzt, aber nur einen der voreingestellten Sender. Ich habe im Programm eine aus dokumentierte Zeile nicht gesehen, in dieser wurde darauf hingewiesen das einige Boards diese Einstellung benötigen und schon war eine Funktion gegeben.

Aber nun eine neue Frage zur Syntax der Radio-Stationseinstellungen, wo ist die Logik zu den Einträgen in den Zeile

2-19
50-54

Die optionale Einstellung war in Zeile 91

Zurzeit kann ich nur den Sender Zeile 8 / 17 empfangen



Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Andreas am 22. Oktober 2020, 05:41:17

Hallo Dietrich,

da gibt es ZWEI Möglichkeiten:

1) Die Senderinformationen sind einfach veraltet - die Streams existieren nicht mehr unter diesen Parametern.
2) Die Namensauflösung scheitert (Pi-Hole? Nameserver "schlapp"?)

Aktuelle Senderlisten bekommst Du hier (https://www.xatworld.com/radio-search/) (Link stammt von der Projektseite des ESP-Radios).

LG
Andreas

Titel: Re:ESP32 Simple Internet Radio mit OLED Display, Projekt abgeschlossen
Beitrag von: Dietrich am 04. November 2020, 17:48:01

Moin,

ich kann mittlerweile Erfolg vermelden.

1. Das Radio schaltet jetzt die Sender-Plätze durch und beginnt wieder am Anfang.
2. Ich habe mir Stream's mit 64kbs herausgesucht, diese laufen super.

Auf Grund mangelnder Erfahrung, dieses war mein erster richtiger Versuch mit Arduino ID und den dazu gehörenden Einstellungen, hat etwas länger gedauert, aber es hat auch Erkenntnisse gebracht, danke Thomas für den Hinweis zu den Libraries.

Ich hänge mal meinen funktionierenden Sketch an.


Titel: Re:ESP32 Simple Internet Radio mit OLED Display, Projekt abgeschlossen
Beitrag von: Dietrich am 04. November 2020, 17:50:34

Zitat von: Dietrich am 04. November 2020, 17:48:01
Moin,

ich kann mittlerweile Erfolg vermelden.

1. Das Radio schaltet jetzt die Sender-Plätze durch und beginnt wieder am Anfang.
2. Ich habe mir Stream's mit 64kbs herausgesucht, diese laufen super.

Auf Grund mangelnder Erfahrung, dieses war mein erster richtiger Versuch mit Arduino ID und den dazu gehörenden Einstellungen, hat es etwas länger gedauert, aber es hat auch Erkenntnisse gebracht, danke Thomas für den Hinweis zu den Libraries.

Ich hänge mal meinen funktionierenden Sketch an.



Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Dietrich am 04. November 2020, 17:51:35

noch zwei Bilder dazu

Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Dietrich am 04. November 2020, 17:54:46

noch zwei Bilder dazu

Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Andreas am 05. November 2020, 06:21:43

Klasse Dietrich. Zu Dir passt auch meine Antwort auf den Thread von Thomas mit "Quisk". Sein Grundverständnis über Zusammenhänge im Logiksektor (zu dem ja Computer zweifelsohne gehören) auszubauen ist ein sehr erfolgsversprechender und aufbauender Weg.

LG
Andreas

Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: DL8EBD am 05. November 2020, 06:41:17

super Dietrich!
Definitiv werde ich auch mal ein ESP32 WebRadio bauen. Mir schwebt da so etwas in Kombination mit einer Wetterstation vor und am liebsten in einem stylischen Röhrenradio-Gehäuse.


Ein Arbeitskollege und ich haben letztens eine WordUhr (nach)gebaut - Basis ist ein ESP8266 - so gesehen der Vorläufer vom ESP32. Auch ein lohnendes Projekt mit offen liegenden Arduino Quellen!

[youtube FvAM1t0tISE]

Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Dietrich am 06. November 2020, 21:30:05

Um auch mp3 Stream mit 128 kbs (bis jetzt ging nur 64 kbs) hören zu können muß der Sketch erweitert werden. Damit lassen sich fast alle gängigen Radiostationen hören, ein *mp3-128 File gibt's fast immer. Mit 64 kbs Sendern habe ich meine 6 Senderplätze füllen können, mehr habe ich auch nicht gefunden.

Vor host/path ist am Anfang der Zeile const einzufügen

const char *host
const char *path

Jetzt fängt die Suche nach einem Gehäuse an, das sollte aber jetzt das kleinste Hindernis sein ;D

Titel: OLED, Schriftgrößen ?-ESP32 Simple Internet Radio mit OLED Dis
Beitrag von: Dietrich am 21. November 2020, 09:47:49

Kleine Nachfrage zu meinem Projekt,

Ich möchte die Anzeige im OLED Diplay verändern....lesen im WEB hat mir nicht geholfen...

Ich möchte die erste Zeile der Anzeige verkleinern und die letzte mit der INFO zum gehörten Station vergrößern.


Code:
rb-edge-3079-dus-ts-dn.cast.addradio.de/rb/bremenzwei/live/mp3/128/stream.mp3 Bremen 2 aktiv
http://stream.antenne1.de/stream2/livestream.mp3", Antenne 1 Bayern aktiv
http://dradio-edge-3092-dus-ts-cdn.cast.addradio.de/dradio/kultur/live/mp3/64/stream.mp3 DLF-Kultur
http://dradio-edge-3096-fra-ts-cdn.cast.addradio.de/dradio/dlf/live/mp3/64/stream.mp3 DL
http://dradio-edge-3091-dus-ts-cdn.cast.addradio.de/dradio/nova/live/mp3/64/stream.mp3
https://wdr-edge-201f-fra-lg-cdn.cast.addradio.de/wdr/kiraka/live/mp3/128/stream.mp3
http://rb-edge-1079-dus-dtag-cdn.cast.addradio.de/rb/bremenvier/live/mp3/128/stream.mp3 Bremen 4 128 aktiv
http://ndr-edge-203f-fra-lg-cdn.cast.addradio.de/ndr/ndrkultur/live/mp3/128/stream.mp3 NDR Kultur aktiv
http://radio-player.bmr-radio.de/ballermann-radio.mp3
http://138.201.248.93:80/salsa
http://138.201.248.93:80/partyhits gewöhnungsbedürftig ab 2 Promille
Http://streams.rpr1.de/rpr-tanzbar-128-mp3 aktiv
http://streams.rpr1.de/rpr-country-128-mp3 aktiv


VS1053 - connections detail
XRST = EN (D3)
MISO = D19
MOSI = D23
SCLK = D18
VCC = 5V / 3.3 V
Gnd = Gnd

*/

// This ESP_VS1053_Library
#include <VS1053.h>

#include <Preferences.h> //For reading and writing into the ROM memory
Preferences preferences;
unsigned int counter,old_counter,new_counter;

#include "helloMp3.h"
#include <WiFi.h>
#include <HTTPClient.h>
#include <esp_wifi.h>


//OLED 64*32 display headers
#include "SSD1306.h"
SSD1306 display(0x3c, 21,22);

char ssid[] = "FRITZ!Box 7590 FV"; // your network SSID (name)
char pass[] = "60993917188317084966"; // your network password

const char *host[7] = {"rb-edge-1079-dus-dtag-cdn.cast.addradio.de","rb-edge-3079-dus-ts-cdn.cast.addradio.de","stream.antenne1.de","ndr-edge-203f-fra-lg-cdn.cast.addradio.de","rb-edge-307b-dus-ts-cdn.cast.addradio.de","streams.rpr1.de","streams.rpr1.de"};
const char *path[7] = {"/rb/bremenvier/live/mp3/128/stream.mp3","/rb/bremenzwei/live/mp3/128/stream.mp3","/stream2/livestream.mp3","/ndr/ndrkultur/live/mp3/128/stream.mp3","/rb/bremeneins/live/mp3/128/stream.mp3","/rpr-tanzbar-128-mp3","/rpr-country-128-mp3"};
//const char *path = "/doomed-128-mp3",
int port[7] = {80,80,80,80,80,80,80};

char *sname[7] = {"Radio Bremen 4","Bremen 2","Antenne 1","NDR-Kultur","Bremen 1","Tanzbar","Country"};


int change=13;
bool x=true;
int status = WL_IDLE_STATUS;
WiFiClient client;
uint8_t mp3buff[32]; // vs1053 likes 32 bytes at a time

// Wiring of VS1053 board (SPI connected in a standard way)
#define VS1053_CS 32 //32
#define VS1053_DCS 33 //33
#define VS1053_DREQ 35 //15
#define VOLUME 85 // volume level 0-100
VS1053 player (VS1053_CS, VS1053_DCS, VS1053_DREQ);

void setup () {
//Begin display
display.init();
display.invertDisplay();
display.setFont(ArialMT_Plain_16);
display.normalDisplay();
display.setColor(WHITE);
display.drawString(0,0," ESP32 Radio");
display.setFont(ArialMT_Plain_10);

pinMode(change,INPUT_PULLUP);
// initialize SPI
Serial.begin(115200);
delay(500);
// initialize SPI bus;
SPI.begin();

// initialize VS1053 player
player.begin();
player.switchToMp3Mode(); // optional, some boards require this
player.setVolume(VOLUME);

WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
// display.drawString(0,15," Connecting..");
delay(500);
Serial.print(".");
}
Serial.println("WiFi connected");
Serial.print("IP address:");
Serial.println(WiFi.localIP());
display.setColor(WHITE);
String x1="Connected to:"+String(ssid[0])+String(ssid[1])+String(ssid[2])+String(ssid[3]);
display.drawString(0,15,x1);
x1="IP:"+WiFi.localIP().toString();
display.drawString(0,27,x1);

preferences.begin("my-app", false);
counter = preferences.getUInt("counter", 0);
old_counter=counter;

String x3="Stn:"+String(counter);
String x4="Playing:"+String(sname[counter]); //+String(path[counter])":"+ String(port[counter]); //.toString();
display.drawString(80,27,x3);
display.drawString(0,37,x4.substring(0,60));
display.display();
x4="";
Serial.printf("Current counter value: %u\n", counter);
delay(100);
//player.playChunk(hello2, sizeof(hello2)); //VS1053 is wake up & running
station_connect(counter);
}

void loop() {

if (client.available() > 0) {
uint8_t bytesread = client.read(mp3buff, 32);
player.playChunk(mp3buff, bytesread);
}

if(digitalRead(change)==0 and x==true){
x=false;
counter = counter+1;
if(counter>6) counter=0;
preferences.putUInt("counter",counter);
new_counter=counter;
Serial.printf("Set counter to new_value: %u\n", counter);
delay(500);

if(old_counter != new_counter) {

player.softReset();
x=true;
station_connect(new_counter);
player.switchToMp3Mode();
preferences.putUInt("counter",new_counter);

//was missing:

old_counter = new_counter;



String x3="Stn:"+String(counter);
String x4="Playing:"+String(sname[counter]); //+ String(path[counter])+":"+String(port[counter]); //.toString();
display.clear();
display.setFont(ArialMT_Plain_16);
display.drawString(0,0," ESP32 Radio");
display.setFont(ArialMT_Plain_10);
String x1="Connected to:"+String(ssid[0])+String(ssid[1])+String(ssid[2])+String(ssid[3]);
display.drawString(0,15,x1);
x1="IP:"+WiFi.localIP().toString();
display.drawString(0,27,x1);
display.drawString(80,27,x3);
display.drawString(0,37,x4.substring(0,60));

display.display();
}
}
}

void station_connect (int station_no ) {
if (client.connect(host[station_no],port[station_no]) ) {
Serial.println("Connected now");
}
Serial.print(host[station_no]);
Serial.println(path[station_no]);
client.print(String("GET ") + path[station_no] + " HTTP/1.1\r\n" + "Host: " + host[station_no] + "\r\n" + "Connection: close\r\n\r\n");
}

Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Andreas am 21. November 2020, 10:56:13

Es kann aber sein dass die drei Zeilen in größeren Buchstaben nicht mehr auf das Display passen.

Dann stellt sich die Frage ob man die Zeile mit dem ESP32Dario überhaupt braucht und nicht einfach komplett weglässt ::)


LG
Andreas

Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Dietrich am 21. November 2020, 15:41:24

Hallo Andreas,
danke für den Denkanstoß....hat mir weitergeholfen.

Meine Änderungen habe ich aber an anderer Stelle vorgenommen, mit dem Ergebnis

start = alter Bildschirm mit allem Infos zur Verbindung

nach dem ersten Senderwechsel wird die Anzeige veränder und reduziert auf den Speicherplatz und Sendername (beides groß)

Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Dietrich am 21. November 2020, 16:15:08

Und hier das Ergebnis

Titel: beendet_Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Dietrich am 21. November 2020, 16:16:54

Somit betrachte ich diese Aktion als beendet und bedanke mich bei Andreas und Thomas für die Unterstützung

Titel: Re:ESP32 Simple Internet Radio mit OLED Display
Beitrag von: Andreas am 21. November 2020, 17:45:35

Schön dass Dich mein Ansatz weitergebracht hat. Der richtige Ansatz ist in 90% der Fälle das Tor, um die "richtigen Stellen" dann identifizieren zu können. Und auf die Weise erlernt man "ganz nebenbei" auch neue Programmiersprachen - wenn man dann will...


LG
Andreas


Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe | Powered by YaBB SE
© 2001-2003, YaBB SE Dev Team. All Rights Reserved.