ESP32 Radio
- Wolle
- Autor
- Offline
- New Member
Weniger
Mehr
- Beiträge: 7
- Dank erhalten: 2
18 Jul 2017 22:00 #217
von Wolle
Wolle erstellte das Thema ESP32 Radio
Hallo,
hat jemand das Webadio https://github.com/Edzelf/ESP32-Radio getestet? Ich habe den Code in Sloeber compiliert, der Compiler hatte ganz schön was zu meckern. Wahrscheinlich ist die Ardiuino IDE fehlertoleranter. Aber letzendlich geht es. Der Entwickler der ESP32 Radios kümmert sich sehr um sein Projekt, häufig gibt es Updates und und Verbesserungen. Um das Radio zum ersten mal zu starten, müssen in den Flash die Initialisierungwerte geschrieben werden. Die dafür vorgesehene Radio_init habe ich nicht zum Laufen gebracht. Stattdessen habe ich mir was eigenes programmiert. Mit fast 4000 Zeilen Code ist das Programm sehr unübersichtlich, trotz der vielen Kommentare. Ich möchte den Code mehr modularisieren und dabei die Funktionen in gesonderten Klassen unterbringen. Mal sehen wie ich damit vorankomme. Vielleicht gibt es schon Ansätze, Ideen oder Lösungen dazu?
viel Grüße
Wolle
hat jemand das Webadio https://github.com/Edzelf/ESP32-Radio getestet? Ich habe den Code in Sloeber compiliert, der Compiler hatte ganz schön was zu meckern. Wahrscheinlich ist die Ardiuino IDE fehlertoleranter. Aber letzendlich geht es. Der Entwickler der ESP32 Radios kümmert sich sehr um sein Projekt, häufig gibt es Updates und und Verbesserungen. Um das Radio zum ersten mal zu starten, müssen in den Flash die Initialisierungwerte geschrieben werden. Die dafür vorgesehene Radio_init habe ich nicht zum Laufen gebracht. Stattdessen habe ich mir was eigenes programmiert. Mit fast 4000 Zeilen Code ist das Programm sehr unübersichtlich, trotz der vielen Kommentare. Ich möchte den Code mehr modularisieren und dabei die Funktionen in gesonderten Klassen unterbringen. Mal sehen wie ich damit vorankomme. Vielleicht gibt es schon Ansätze, Ideen oder Lösungen dazu?
viel Grüße
Wolle
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- gruenezone
- Offline
- Junior Member
Weniger
Mehr
- Beiträge: 30
- Karma: 1
- Dank erhalten: 2
20 Jul 2017 08:05 #221
von gruenezone
-> Fehler ist Fehler, da sind wohl eher die Programmiersprachen ein wenig unterschiedlich und das Programm ursprünglich mit IDE vom Arduino erstellt?
ESP32 Radio
Wolle schrieb: der Compiler hatte ganz schön was zu meckern. Wahrscheinlich ist die Ardiuino IDE fehlertoleranter.
-> Fehler ist Fehler, da sind wohl eher die Programmiersprachen ein wenig unterschiedlich und das Programm ursprünglich mit IDE vom Arduino erstellt?
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Wolle
- Autor
- Offline
- New Member
Weniger
Mehr
- Beiträge: 7
- Dank erhalten: 2
22 Jul 2017 22:58 #223
von Wolle
ESP32 Radio
Hallo gruenezone,
ja,das stimmt Fehler sind Fehler. Es gibt im Quelltext von Edzelf keine gravierenden Mängel, eher Kleinigkeiten, wie Membervariablen, die nicht initialisiert sind, Rückgabewerte die fehlen etc. Viele Variablen sind eingeführt und werden nicht benutzt, Guards müssen in den Headerfiles gesetzt werden. Das Programm habe ich zum Laufen gebracht incl. Weboberfläche. In diesem Thread möchte ich beschreiben, wo ich Verbesserungspotential sehe und mein Projekt zu einem fertigen Webradio beschreiben.
bis dann...
Wolle
ja,das stimmt Fehler sind Fehler. Es gibt im Quelltext von Edzelf keine gravierenden Mängel, eher Kleinigkeiten, wie Membervariablen, die nicht initialisiert sind, Rückgabewerte die fehlen etc. Viele Variablen sind eingeführt und werden nicht benutzt, Guards müssen in den Headerfiles gesetzt werden. Das Programm habe ich zum Laufen gebracht incl. Weboberfläche. In diesem Thread möchte ich beschreiben, wo ich Verbesserungspotential sehe und mein Projekt zu einem fertigen Webradio beschreiben.
bis dann...
Wolle
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Wolle
- Autor
- Offline
- New Member
Weniger
Mehr
- Beiträge: 7
- Dank erhalten: 2
24 Jul 2017 10:00 #224
von Wolle
ESP32 Radio
So, nun zur Praxis, Thema: NVS, "non volatile storage". Dabei geht es darum, Variablen, die sich zur Laufzeit ändern dauerhaft zu speichern, um sie nach dem Neustart des Gerätes wieder zur Verfügung zu haben. Beim ESP-Radio sind das Senderlisten, SSIDs, PW, Lautstärke, Tonhöhe ...
Um NVS bequem zu nutzen habe ich die wichtigen Funktionen in eine Klasse gekapselt und in eine Bibliothek verpackt. Diese erweitert die "nvs.h" und kann an deren Stelle eingesetzt werden. Die Benutzung ist einfach:
#include <nvs_ext.h>
#define NAME "ESP32Radio" //Namensraum vergeben
NVS nvs(NAME); //nvs.Objekt erstellen
nvs.open(); //und öffnen
nvs.setstr("Variablenname", "Wert");
...
nvs.~NVS(); //Objekt nach Benutzung zerstören
Implementierte Datentypen sind String, int, long long (int) und float.
Im Hauptprogramm kann eine Routine "nvs_info" fakultativ eingebaut werden, die immer dann aufgerufen wird (sofern vorhanden) wenn Variablen gesetzt oder aufgerufen werden. Das ist fürs Debugging sinnvoll um zu erkennen ob Variablen bereits vorhanden sind, welchen Wert sie haben oder ob der Wert verändert wurde. Ich lege im Anhang meine Radio_init mit der nvs_ext Klasse bei, die das Original ersetzt. Im Quelltext der ESP32 Radios habe ich meine Klasse bereits verwendet und die originalen nvs-Routinen gelöscht (ist schon mal etwas weniger Quelltext im Hauptprogramm ).
vG
Wolle
P.S. Dateien "*.ino" sind im Forum nicht zugelassen, ich habe den Dateinamen in "*.ino.txt" geändert.
Um NVS bequem zu nutzen habe ich die wichtigen Funktionen in eine Klasse gekapselt und in eine Bibliothek verpackt. Diese erweitert die "nvs.h" und kann an deren Stelle eingesetzt werden. Die Benutzung ist einfach:
#include <nvs_ext.h>
#define NAME "ESP32Radio" //Namensraum vergeben
NVS nvs(NAME); //nvs.Objekt erstellen
nvs.open(); //und öffnen
nvs.setstr("Variablenname", "Wert");
...
nvs.~NVS(); //Objekt nach Benutzung zerstören
Implementierte Datentypen sind String, int, long long (int) und float.
Im Hauptprogramm kann eine Routine "nvs_info" fakultativ eingebaut werden, die immer dann aufgerufen wird (sofern vorhanden) wenn Variablen gesetzt oder aufgerufen werden. Das ist fürs Debugging sinnvoll um zu erkennen ob Variablen bereits vorhanden sind, welchen Wert sie haben oder ob der Wert verändert wurde. Ich lege im Anhang meine Radio_init mit der nvs_ext Klasse bei, die das Original ersetzt. Im Quelltext der ESP32 Radios habe ich meine Klasse bereits verwendet und die originalen nvs-Routinen gelöscht (ist schon mal etwas weniger Quelltext im Hauptprogramm ).
vG
Wolle
P.S. Dateien "*.ino" sind im Forum nicht zugelassen, ich habe den Dateinamen in "*.ino.txt" geändert.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Wolle
- Autor
- Offline
- New Member
Weniger
Mehr
- Beiträge: 7
- Dank erhalten: 2
30 Jul 2017 08:18 #230
von Wolle
ESP32 Radio
So, nun habe ich den VS1053-relevanten Code in eine Library verpackt. Die Bibliothek einbinden, das MP3-Modul anschließen, so kommt man mit minimalen Aufwand zu einem Webradio:
vG Wolle
#include "Arduino.h"
#include <SPI.h>
#include <WiFi.h>
#include "vs1053_ext.h"
// Digital I/O used
#define VS1053_CS 2
#define VS1053_DCS 4
#define VS1053_DREQ 39
String ssid = "mySSID";
String password = "myPW";
VS1053 mp3(VS1053_CS, VS1053_DCS, VS1053_DREQ);
void setup() {
delay(1000);
Serial.begin(115200);
SPI.begin(); // MOSI_pin 23, MISO_pin 19, SCK-pin 18
mp3.begin(); // Initialize VS1053 player
mp3.setVolume(15);
WiFi.disconnect();
WiFi.mode(WIFI_STA);
delay(100);
WiFi.begin(ssid.c_str(), password.c_str());
delay(100);
while (WiFi.status() != WL_CONNECTED) delay(1500);
mp3.connecttohost("icecast.omroep.nl:80/radio1-bb-mp3");
}
void loop() {
mp3.loop();
}
vG Wolle
Folgende Benutzer bedankten sich: supporter
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Wolle
- Autor
- Offline
- New Member
Weniger
Mehr
- Beiträge: 7
- Dank erhalten: 2
15 Okt 2017 07:25 #316
von Wolle
ESP32 Radio
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Aktuelle Seite:
- Startseite
- Impressum / Datenschutz / ...
- ESP8266 spezifisch
- Codebesprechung
- ESP32 Radio