Forum: Projekte & Code ESP32 Web-/SD-Card Player


von Michael U. (amiga)


Angehängte Dateien:

Lesenswert?

Hallo,

mein Player hat zumindest den Zustand angenommen, daß ihn hier mal 
vorstellen will.
Was kann er bisher schon:
abspielen von MP3-Internet-Streams und MP3-Files von SD-karte.

Hardware:
- ESP32 Board
https://www.ebay.de/itm/272912745307
es geht auch jedes andere ESP32-Board, dann muß man eben von Hand 
verbinden.

- 4" LCD mit Touch und SPI-Ansteuerung
mein Display scheint gerade mal wieder nirgends lieferbar zu sein.
Prinzipiell gehen alle Display in 480x320 die sich mit der TFT_eSPI-Lib 
ansteuern lassen. Displays mit anderer Auflösung gehen auch, man muß 
dann die Button- und Textkoordianten anpassen, die habe ich fest in den 
Funktionen eingetragen...

- I2S-DAC
https://eckstein-shop.de/Adafruit-I2S-Stereo-Decoder-NXP-UDA1334A-Breakout
hier gehen auch alle anderen I2S-DAC soweit sie mit WCLK, bCLK und DATA 
auskommen, einen Masterclock kann der ESP32 nicht ausgeben.
Es geht auch 1 oder 2 I2S-Verstäkermodule:
https://eckstein-shop.de/Adafruit-I2S-3W-Class-D-Amplifier-Breakout-MAX98357A?curr=EUR&gclid=EAIaIQobChMI3KD-197g3QIVEuJ3Ch06wglIEAQYAiABEgJJOfD_BwE
einer dann eben Mono oder 2 für L/R, das läßt sich mit einem Widerstand 
an diesen Modulen festlegen.

Funktionen: Auswahl Stream-Play oder SD-Karte.
Nächster/voriger Tirel (SD-Karte) oder Streameintrag(Internet).
Mute, Save der aktuellen Lautstärke und des akttuellen SD-Titels.

WLAN-Daten sind hard im Source, wenn das Netz nicht erreichbar ist, wird 
nach 10s auf der SD-karte (wenn vorhanden) eine Dtei wlan.txt gesucht.
Diese muß in Zeile 1 die SSID und in Zeile 2 das Passwort enthalten.

4 Stream-URL sind fest im Code als default hinterlegt, gibt es eine Dtei 
stremliste.txt wird diese eingelesen und im SPIFFS hinterlegt. Jede 
Zeile muß eine URL enthalten, die URL müssen die Stream-URL sein mit 
denen sich der Stream z.B. im Webbrowser auf dem PC direkt starten läßt.

Titel-TAGs vom Webstream werden angezeigt, Formatierung noch ...naja...
Bei SD-Karte wird der Filename als Titel - Interpret interpretiert.

Benutzt wird die ESP8266Audio-Lib, deren TAG-Funktion ist noch nicht 
100%.

Wechsel der Streams und des SD-Card-Titel dauert weniger als 1s.
WLAN Reconnect und Resync ist zumindest schon brauchbar.
Normalerweise spielt der Player stundenlang ohne jeden Aussetzer.
Wenn man allerdings, wie ich hier, mehr als 10 WLAN-Netze im nahen 
Umfeld hat, dann kann man manchmal nur noch auf die SD-karte wechseln...

OTA ist drauf für Updates.
Kompiliert mit ArduinoIDE1.8.7, ESP32 Boardmanagerversion 1.0.0, 
aktueller TFT_eSPI-Lib und altueller ESP8266Audio-Lib.
Mit der aktuellen ESP8266Audio-Lib gibt es ein paar Probleme mit 
aktuellen Änderungen beim Webstream-Play. Falls da jemand reintappt 
bitte fragen. Problem kann sein: starke Aussetzer, eine Art leiern mit 
Sprüngen im Titel.

So, ich höre jetzt erstmal auf. Wenn es Interesse gibt und /oder Fragen 
werde ich das ergänzen.

Sorry, die Bilder sind "Schnellschüsse", speziell die Displaydarstellung 
wollte nicht.

Gruß aus Berlin
Michael

von Marc (Gast)


Lesenswert?

Sieht gut aus. Das Display finde ich auch gut, weil man nichts verkabeln 
muss.
Jetzt musst Du nur noch ein Gehäuse dafür finden. Vielleicht ein altes 
Radio, wie mein Aufbau hier:
Beitrag "Re: Webradio basteln"

Was hat den der ganze Aufbau so ungefähr gekostet?

von Michael U. (amiga)


Angehängte Dateien:

Lesenswert?

Hallo,

Marc schrieb:
> Jetzt musst Du nur noch ein Gehäuse dafür finden. Vielleicht ein altes
> Radio, wie mein Aufbau hier:
> Beitrag "Re: Webradio basteln"

meine alten Radios behalten ihren Inhalt... ;-)
http://www.roehres-home.de/radio/index.php

Marc schrieb:
> Was hat den der ganze Aufbau so ungefähr gekostet?

Ich hatte ja oben ein paar Links reingepackt.
Ich habe jetzt meine Kaufpreise nicht rausgesucht, das ESP32-Board war 
da noch teuerer, Das Display aber mit rund 30€ recht teuer.
Die Displays mit dem "Arduino-UNO" Format gibt es kaum.
Für den RasPi sind im Moment noch ein paar 3,5" zu finden:
https://www.ebay.de/itm/3-5-320x480-RGB-LCD-Touch-Screen-Display-For-Raspberry-Pi-A-A-B-B-2B-3B-ZeSK/323038551348?hash=item4b36991d34:g:3KgAAOSwt4RbAChC
Da muß man die Leitungen natürlich selber verbinden...

I2S-DAC findet man auch ein paar:
https://www.ebay.de/itm/PCM5102-DAC-Decoder-PCM5102-I2S-interface-Player-Module-For-Raspberry-Pi/272628180582?hash=item3f79e7e666:g:D7wAAOSwmgJY7e4p

Dann kann man komplett unter 20€ bleiben, zu verbinden sina ja nur recht 
wenige Verbindungen zum ESP32-Board.

Zum Zeitpunkt des Kaufs meiner Teile dürfte ich so ca. 50€ ausgegeben 
haben, vor allem auch weil ich nicht auf China-Lieferungen warten wollte 
und Amazon Prime ist dann eben merklich teuerer wenn man den Kram 
unbedingt in 2 Tagen hier haben will...

ok. genug zu Preisen, das muß jeder selber wissen.

Als Display dürften auch die 8Bit-Parallel-versionen gehen, Pins am 
ESP32 sind ausreichend verfügbar. Ich habe es aber nicht getestet, weil 
ich kein solches Display zur Hand habe.

Ich habe gestern noch schnell die time.h eingebunden und habe jetzt 
zumindest Wochentag, Datum und Uhrzeit in der Anzeige.
Sekunden habe ich erstmal weggelassen, das flackert mir in der 
Uhrzeitanzeige noch zu sehr.

Mit der aktuellen ESP8266-Lib und den selbst eingepflegten Bugfixes von 
github ist es merklich stabiler, auch bei dem üblichen Wochenend-Chaos 
hier bei mir mit WLAN keinen Aussetzer den ganzen Abend über.
Ich hoffe ja, er aktualisiert die github Lib demnächst mal.

PS: ich habe mal versucht, ein etwas besser erkennbares Bild des 
Displays hinzubekommen, ich sollte mal Staub auf dem Display wischen...

Gruß aus Berlin
Michael




Mit der

von Michael U. (amiga)


Angehängte Dateien:

Lesenswert?

Hallo,

das Interesse an ESP32 speziell innerhalb der Arduino-IDE scheint ja 
generell recht gering zu sein.

Ich habe inzwischen mal meine Playersoftware etwas weitergemacht und 
auch auf den Odroid Go
https://www.pollin.de/p/odroid-go-mobile-spielekonsole-kit-810887
gepackt.

PS-Ram eingebunden, mit z.Z. 1MB Stream-Buffer und gut 3MB freiem Heap 
kann man sich besser austoben und es gibt auch in meiner gut 
ausgelasteten WLAN-Umgebung keine Aussetzer mehr.

Gruß aus Berlin
Michael

von Jan L. (ranzcopter)


Lesenswert?

Michael U. schrieb:
> das Interesse an ESP32 speziell innerhalb der Arduino-IDE scheint ja
> generell recht gering zu sein.

glaube ich nicht - aber vielleicht liegt's an der konkreten Anwendung; 
gefühlt kommen MP3s doch schon aus dem Wasserhahn... ;-)

von Michael U. (amiga)


Lesenswert?

Hallo,

Jan L. schrieb:
> Michael U. schrieb:
>> das Interesse an ESP32 speziell innerhalb der Arduino-IDE scheint ja
>> generell recht gering zu sein.
>
> glaube ich nicht - aber vielleicht liegt's an der konkreten Anwendung;
> gefühlt kommen MP3s doch schon aus dem Wasserhahn... ;-)

prinzipiell stimme ich Dir da zu. Es ist ja auch mehr "proof of concept" 
um zu schauen, was geht.
Es bot sich eben an Display-Lib, Touch, SD-Card, WLAN, I2S, jetzt den 
PSRAM mal durchzuspielen. "Blinkende LED" reicht kaum um das 
Zusammenspiel auf dem ESP32 für Hobby-Zwecke zumindest halbwegs zu 
verstehen.
Die Reaktionen in diesem therad sind auch...sparsam...
Beitrag "ESP32-CAM Entwicklungskit"
Ich warte auf mein Modul, mit PSRAM sind zumindest erstmal prinzipiell 
die 1600x1200 machbar. Und wenn das Ding dann als Wettercam mit Akku auf 
dem Balkon landet und eben alle 5 Minuten ein Standbild schickt.

Ich hätte vor 2 Jahren noch nicht gedacht, daß man für sehr wenige Euro 
ein Modul bekommt, das eben mal so nebenbai MP3 in Software dekodiert.
Ein Pentium 75 hat sich damit damals mehr als schwer getan. :)

Gruß aus Berlin
Michael

von Andreas B. (bitverdreher)


Lesenswert?

Sieht interessant aus. Ich baue es mal nach wenn ich Zeit habe (und der 
I2C Decoder aus China eingetroffen ist) und berichte dann.
Das Display wird dann wohl etwas kleineres sein (ich habe da noch welche 
rumfliegen).

von Odroid Go Beginner (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

>das Interesse an ESP32 speziell innerhalb der Arduino-IDE scheint ja
>generell recht gering zu sein.

>Ich habe inzwischen mal meine Playersoftware etwas weitergemacht und
>auch auf den Odroid Go gepackt.

Habe interesse an dem tollen Projekt. Wäre klasse, wenn du mal das 
Arduino Sketch hochladen könntest.

Ich versuche seit vielen Stunden mein Odroid Go(Hello World.ino) unter 
der Arduino-IDE (portable) ans Laufen zu bringen - ohne Erfolg ;-(

Als Anlage die Arduino-Ordnerstruktur und Compiler Fehlermeldung. 
Vielleicht fällt dir auf, was ich falsch mache. Komme trotz ODROID-Wiki 
& Co leider nicht weiter...
Ist meine erste Arduino-IDE und ESP32 Erfahrung.

Programmierst du mit dem ESP32 Flasher Tool oder mit einem 
Arduino-Flasher?

Über ein paar Tipps, bin ich sehr dankbar.

von Michael U. (amiga)


Lesenswert?

Hallo,

eigentlich ist mir nichts direkt aufgefallen.
Der Ordner java im IDE-Ordner ist von Dir?

Arduino-master und arduino-esp32-master habe ich nicht in libraries, 
wohl nie gebraucht.
Die hast Du dazu installiert?

Im Ausgabefenster müßte weiter oben noch was bedeutsames srehen.
Mach mal die erweiterten Compilermeldungen aus und zieh das Fenster 
unten größer, das hat an der Trennline nach oben einen Verschiebepfeil.

Der Sektch ist das unveränderte Hello World Beispiel?

Das Flasher Tool brauchst für 2 Sachen:
- um die Original-Software wieder auf den Odroid zu bekommen
- um ein komplettes Erase zu machen, wenn Du den ESP32 mit eigenen 
Experimenten an den Rand des Wahnsinns gebracht hast...

Ansonsten normal aus der ArduinoIDE flashen, eben Port auswählen und 
los.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Odroid Go Beginner (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Michael,

danke für deine Hilfe!

>Der Ordner java im IDE-Ordner ist von Dir?
Nein, wurde bei der IDE-Installation angelegt, da ich auf meinem Rechner 
Java verbannt habe.

>Arduino-master und arduino-esp32-master habe ich nicht in libraries,
>wohl nie gebraucht.
>Die hast Du dazu installiert?
Ja, habe sie jetzt aber aus Portable->Sketchboo->libraries entfernt.
Kompilierung zeigt gleichen Fehler an.

>Der Sektch ist das unveränderte Hello World Beispiel?
Ja

>Mach mal die erweiterten Compilermeldungen aus und zieh das Fenster...
Bingo!!! Habe die Compiler Warnungen von "Alle" auf "Standard" gestellt, 
jetzt läuft die Kompilierung durch!
DAS SOLL EINER VERSTEHEN ???
Egal, hauptsache es funktioniert jetzt! Nochmal Danke.
Wollte besonders Schlau sein und Fehler über Fehlermeldungen finden ;-)
Aber das Fehlermeldungen zu Fehlern führen...
Vielleicht hat ja einer eine Erlärung dafür?

Stellst du dein Odroid Go Sketch ins Netz?

Grüße dem Südwesten

von Michael U. (amiga)


Lesenswert?

Odroid Go Beginner schrieb:
>>Mach mal die erweiterten Compilermeldungen aus und zieh das Fenster...
> Bingo!!! Habe die Compiler Warnungen von "Alle" auf "Standard" gestellt,
> jetzt läuft die Kompilierung durch!
> DAS SOLL EINER VERSTEHEN ???

Das hat mir mein BEkannter mal erklärt. Bei "alle" wird ein Compilerflag 
gesetzt, das speziell bei C++ bei bestimmten Fehlern zum Abbruch führt.
Es geht da wohl um solche Warnungen, die bei C++ Version?? nicht mehr 
zulässig sind.
Im allgemeinen laufen die Programme, da es bis jetzt nur Warnungen sind, 
mit Blick in die Zukunft sollte man die behben, in Deinem Fall aber die 
Programmierer der Libs.

Ich habe Warnungen auch auf Standard, ich schalte dann höher, wenn ich 
schon beim Aufräumen meines "Kunstwerkes" an Sourcecode bin.
Dann kann man auch mal "alle" einschalten, die Chance, daß es dann wegen 
Fehlern in einer existierenden Lib abbricht, ist aber recht hoch.

Mein Bekannter macht dann manchmal Bugreports an den Prorammierer, meist 
gleich mit den Reparatur-Anweisungen. Wird dann auch im nächsten update 
eingebaut. Manchmal sind dann aber auch gleich neue Warnungen eingebaut 
worden....

Zum Sketch: ich versuche noch, wahlweise die Soundausgabe auf den 
internen "Lautsprecher" zu bekommen, egal wie "gut" es klingt.
Im Moment spielt er nur mit externem I2S-DAC.

Gruß aus Berlin
Michael

von Odroid Go Beginner (Gast)


Lesenswert?

Michael U. schrieb:
> Das hat mir mein BEkannter mal erklärt...

Danke für die Info, muss man wissen, sonst sucht man, wie ich, eine 
Ewigkeit
nach einen nicht vorhandenen Fehler.

Bin mal gespannt auf dein Sketch

von Michael U. (amiga)


Lesenswert?

Hallo,

@Odroid Go Beginner: da Du ja nur als Gast gepostet hast:
wie gut kennst Du Dich mit Arduino, irgendwelchen libraries usw. schon 
aus?

Ich benutze als Grafik-Lib die TFT_eSPI
https://github.com/Bodmer/TFT_eSPI

und für den Audiokram die ESP8266Audio
https://github.com/earlephilhower/ESP8266Audio

Bei der ESP8266Audio gibt es Problem, daß er seine Lib noch nicht auf 
dem aktuellen Stand in github hat.
Ich habe alle Bugfixes und Änderungen nachgepflegt.
Es betrifft 6 Dateien aus seinem Paket, AudioOutputI2S, 
AudioFileSourceBuffer und AudioFileSourceICYStream.

Die kann ich auch mit dazu packen, das Problem ist für mich nur:
wenn jemand damit nicht zurechtkommt hagelt es Problemmails...

Inzwischen spielt zumindest die I2SnoDAC-Ausgabe auch auf dem 
"Lautsprecher" des Odroid. Die Qualität ist aber  sehr durchwachsen, 
auch weil die Ankopplung des Audioverstärkers im Odroid nicht wirklich 
mit der Art seiner Ausgabe beim Sigma-Delta-SoftwareDAC zusammen passt.

Die Ausgabe über den internen DAC des ESP32 habe ich auf dem Odroid noch 
nicht in Gang bekommen, da gibt es noch irgendeine Kollision.

Letztlich ist es für mich immernoch ein Projekt, um den ESP32 besser 
kennenzulernen, seine Grenzen und Möglichkeiten.

Vermutlich wird es dann auf einem anderen ESP32-Board mit 
4"-Touch-Display und I2S-Verstärker als Weckradio sein Dasein fristen 
dürfen.

PS: ja, ich kann auch das vorhanden Pearl-Web-Weckradui einfach ins 
Schlafzimmer stellen, da fehlen mir dann aber meine gewünschten 
Komfort-Funktionen und außerdem: wo bleibt da der Spaß am 
Programmieren???

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Odroid Go Beginner (Gast)


Lesenswert?

Michael U. schrieb:
> wie gut kennst Du Dich mit Arduino, irgendwelchen libraries usw. schon
> aus?

Wie bereits schon beschrieben, ist mein erstes Arduino Projekt.
Habe früher beruflich viel im Embedded Treiber Bereich (ASM, C) 
gearbeitet.
Freie Compiler, Treiber, IDE und Libs gab es damals so gut wie keine und 
die wenigen (UDP/IP-Stack, FAT, GUI, etc.) kosteten mehrere 1000€.
Wie gut, dass es jetzt so was wie Arduino gibt!

Michael U. schrieb:
> Letztlich ist es für mich immernoch ein Projekt, um den ESP32 besser
> kennenzulernen, seine Grenzen und Möglichkeiten

Geht mir genauso. Meine frühere Hardwareplattformen haben ca. 500€++ 
gekostet und konnten viel viel weniger - ist halt so in der 
µC-Elektronik.

Michael U. schrieb:
> das Interesse an ESP32 speziell innerhalb der Arduino-IDE scheint ja
> generell recht gering zu sein.

Die Odroid-Go Hardware finde ich vom Preis/Leistung und 
Einsatzmöglichkeit echt super. Daher soll dein Sketch als Beispiel 
Anwendung dienen. Brauche keinen MP3-Player, ist aber ein schönes 
Anschauungsprojekt.
Must aber dein Projekt nicht offen legen, wenn die saubere vorzeigbare 
Implementierung zu viel Arbeit macht - kann ich gut verstehen.

von Michael U. (amiga)


Lesenswert?

Hallo,

Odroid Go Beginner schrieb:
> Must aber dein Projekt nicht offen legen, wenn die saubere vorzeigbare
> Implementierung zu viel Arbeit macht - kann ich gut verstehen.

Mit dem Vorzeigen habe ich kein Problem, mit Kritik usw. auch nicht.

Ich weiß jetzt nichtmal, ob es möglich ist, als Gast mir eine PM zu 
schicken (auf meinen Anmeldenamen im Post klicken).
oder melde Dich einfach im Forum an, außer einer gültigen Mail-Adresse 
von Dir ist ja nichts dazu nötig.
Ich wüede das Projekt gern jemanden per Mail schicken, einfach um zu 
sehen, ob meine Hinweise reichen, es in Gang zu bekommen bzw. wo es für 
andere Stolperstellen gibt.
Gerade im Arduino-Umfeld ist der Anteil Nutzer, die nur "Projekt 
runterladen, compilieren, flashen, fertig" beherrschen, recht hoch. Das 
Arduino-Konzept war ja am Anfang auch genau darauf ausgelegt.

Das ist im Moment eigentlich kein Prblem von mir und meinem Code, 
hauptsächlich ist es die Frage, wann der Programmierer der Audio-Lib 
eine aktuelle Version bei github einstellt. Die dort z.Z. aktuelle läuft 
so in mehreren Beziehungen nicht vernünftig auf dem ESP32.
Das ist auch nicht seine Schuld, es gab von Espressif im IDF seit Anfang 
September zuviele Änderungen. Mit dem alten Arduino-ESP32 Paket von 
Anfang September lief es noch mit der Lib. Im jetzigen Boardmanagerpaket 
für die ArduinoIDE wird aber bereits eine neuere IDF-Version benutzt...

Gruß aus Berlin
Michael

von Stefan A. (ripper121)


Lesenswert?

Michael U. schrieb:
> Ich habe inzwischen mal meine Playersoftware etwas weitergemacht und
> auch auf den Odroid Go
> gepackt.


Wo findet man denn die Playersoftware von dir?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.