ESP32 Radio

Mehr
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

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
20 Jul 2017 08:05 #221 von gruenezone
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.

Mehr
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

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
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. :unsure:
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
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:
#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
Anhänge:
Folgende Benutzer bedankten sich: supporter

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
15 Okt 2017 07:25 #316 von Wolle
ESP32 Radio
Hier ein Video zum Einsatz der Bibliothek in einer verbesserten Version vs1053_ext

vG
Wolle

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Powered by Kunena Forum