Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
  • Seite:
  • 1
  • 2

THEMA: ESP32 Radio

ESP32 Radio 18 Jul 2017 22:00 #217

  • Wolle
  • Wolles Avatar
  • Offline
  • New Member
  • Beiträge: 6
  • Dank erhalten: 2
  • Karma: 0
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
Der Administrator hat öffentliche Schreibrechte deaktiviert.

ESP32 Radio 20 Jul 2017 08:05 #221

  • gruenezone
  • gruenezones Avatar
  • Offline
  • Junior Member
  • Beiträge: 21
  • Karma: 0
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?
Der Administrator hat öffentliche Schreibrechte deaktiviert.

ESP32 Radio 22 Jul 2017 22:58 #223

  • Wolle
  • Wolles Avatar
  • Offline
  • New Member
  • Beiträge: 6
  • Dank erhalten: 2
  • Karma: 0
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
Der Administrator hat öffentliche Schreibrechte deaktiviert.

ESP32 Radio 24 Jul 2017 10:00 #224

  • Wolle
  • Wolles Avatar
  • Offline
  • New Member
  • Beiträge: 6
  • Dank erhalten: 2
  • Karma: 0
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:
Anhang:
Der Administrator hat öffentliche Schreibrechte deaktiviert.

ESP32 Radio 30 Jul 2017 08:18 #230

  • Wolle
  • Wolles Avatar
  • Offline
  • New Member
  • Beiträge: 6
  • Dank erhalten: 2
  • Karma: 0
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
Anhang:
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Folgende Benutzer bedankten sich: supporter

ESP32 Radio 15 Okt 2017 07:25 #316

  • Wolle
  • Wolles Avatar
  • Offline
  • New Member
  • Beiträge: 6
  • Dank erhalten: 2
  • Karma: 0
Hier ein Video zum Einsatz der Bibliothek in einer verbesserten Version vs1053_ext

vG
Wolle
Der Administrator hat öffentliche Schreibrechte deaktiviert.
  • Seite:
  • 1
  • 2