Ich bastele an einer Audio-Ansage (ca. 1 Min), die von einem ESP8266 auf
Knopfdruck per PWM abgespielt werden soll. Ich kenne die Beispiele mit
externen MP3-Chips oder wenigstens einer SD-Karte, aber ...
Auf dem Wege zu einer möglichst minimalistischen Lösung, versuche ich
gerade mal ein binäres Array mit den 8-Bit-PCM-Werten in PROGMEM
unterzubringen. Meine Daten sind ca. 850k groß und ich habe mir ein Tool
programmiert, was mir die in diese Form bringt:
Ist das ein Syntax-Problem oder hängt das mit dem zu großen Datenblock
im PROGMEM zusammen? Die IDE ziegt nach dem Compilieren, dass (nur) 70%
belegt wären ... Danke für Tips.
Hallo,
wenn es ein ESP8266-12 mit 4MB Flash ist, pack den Kram doch als
passendes Wave in das SPIFFS.
Ansonsten schau Dir die ESP8266Audio-Lib an, die enthält eigentlich
alles schon.
Gruß aus Berlin
Michael
Michael U. schrieb:> Hallo,>> wenn es ein ESP8266-12 mit 4MB Flash ist, pack den Kram doch als> passendes Wave in das SPIFFS.> Ansonsten schau Dir die ESP8266Audio-Lib an, die enthält eigentlich> alles schon.>> Gruß aus Berlin> Michael
Ok, danke für den Hinweis ... "SPIFFS" war mir bisher nicht so richtig
ein Begriff, werde mich damit beschäftigen. Kann man von dort aus
byteweise lesen?
Es ist ein "Wemos D1 Mini", ist das der genannte ESP8266-12 ... ?
Hallo,
Frank E. schrieb:> Ok, danke für den Hinweis ... "SPIFFS" war mir bisher nicht so richtig> ein Begriff, werde mich damit beschäftigen. Kann man von dort aus> byteweise lesen?
File öffnen und dann eben readBytes() usw.
Mein Vorschlag zur ESP8266Audio kam nur deshalb, weil Du da in den
Beispielen vermutlich schon passendes für alles findest.
Ausgabe vom Flash, vom SPIFFS, von SD-Card, von Webstream. Format wave,
flac, mp3 usw. in Software (MP3 besser mit einem ESP32), Ausgabe per
I2S, Software-DAC usw.
https://github.com/earlephilhower/ESP8266Audio
Ist nur ein Vorschlag, kann man natürlich auch "zu Fuß" selber machen.
Vor Jahren habe ich ähnliches mal für einen Bekannten auf einem Mega88
mit externem SPI-Flash und DAC gemacht, 22kHz/16Bit WAV-Files. Hatte ich
auch mit 8Bit Samples und PWM-Ausgabe auf einem Tiny85 bei 64MHz
PLL-Takt laufen, der hat 4 kurze Sounds aus dem Flash gespielt.
Oha, ich sehe gerade: das ist ja schon 10 Jahre her...
Gruß aus Berlin
Michael
Danke, in der Audio.Lib gibt es ein Beispiel "PlayWavefromProgmem", was
meiner Absicht recht nahe kommt.
Allerdings konnte ich eine Info nirgendwo im Web finden: Wie groß dürfen
Daten im Progmem des ESP8266 (Wemos D1 Mini) eigentlich sein? Trial &
Error ist mir zu mühselig, weil ja auch das Compilieren richtig lange
dauert ...
Danke für Info.
Hallo,
mehr als 1MB hast Du als Programmflash und damit auch als Progmem nicht
zur Verfügung. Davon belegen die Standardroutinen ohnehin schon rund
250kB.
Leg Deine Daten als Datei ins SPIFFS, da hast Du knapp 3MB als Filegröße
verfügbar. Beispiel müßte in der Lib auch dabei sein, zumindest ist es
kein größeres Problem, die Komponenten der Lib passend
zusammenzustellen.
Compilieren: Was ist bei Dir "richtig lange"? Ich habe gerade mal meinen
Webserver compiliert, mit OTA, SPIFFS usw., Durchlauf 1m 5s, geflasht
habe ich jetzt nicht, mache ich generell mit 921600 bei den ESP8266.
Gruß aus Berlin
Michael
Mit plattform io ist das Kompilieren in ein paar Sekunden durch. Arduino
IDE ist arg lahm. Gerade mal Tasmota kompilieren lassen, das dauert
keine 30 Sekunden.
Wenn du dann noch das example vom ESP8266webserver einbindest kannst du
deine Wav-Files bequem via webinterface ins SPIFFS hochladen
Hallo,
30s oder hut 1min ist doch "jammern auf hohem Niveau" ;-).
Ich frage mal meinen Bekannten, wie lange so ein Linux-Kernel
compiliert...
Timmo H. schrieb:> Wenn du dann noch das example vom ESP8266webserver einbindest kannst du> deine Wav-Files bequem via webinterface ins SPIFFS hochladen
Genau das wäre mein Ansatz. Zumal die ESP8266Audio die üblichen Formate
direkt lesen und ausgeben kann.
Gruß aus Berlin
Michael
Der Threat ist schon älter, ich weiss, aber ich habe noch eine (neue)
Frage dazu:
Ich habe das oben genannte Projekt mit der Audio-Lib (MP3 in SPIFFS)
umgesetzt und es funktioniert auch ganz grundsätzlich. Zur Soundausgabe
benutze ich den RX-Pin ("fake DAC").
Was auf die Dauer doch ein wenig nervt, sind die enormen Störgeräusche
(auch wenn gerade kein File gespielt wird). Die Audio-Ausgabe klingt,
wie neben einem Lagerfeuer am Bach. Also ständiges Kinstern, Zischeln
etc., obwohl ich ein RC-Glied (10k in Reihe, 100nF nach Masse) zumm
Verstärker dran habe und sämtliche WLAN-Funktionen (soweit das mit der
Arduino-Lib möglich ist), deaktivert sind.
Aus Gründen der Dateigröße habe ich meine MP3-Files nur mono mit 22kHz
codiert. Aber das ist es nicht. Höre ich mir die auf dem PC an, klingen
sie zwar nicht besonders brilliant - logisch - aber sind frei von
Störgeräuschen.
Was könnte man noch tun (abgesehen von externem DAC oder
MP3-Player-Chip)?
Hallo,
Frank E. schrieb:> Ich habe das oben genannte Projekt mit der Audio-Lib (MP3 in SPIFFS)> umgesetzt und es funktioniert auch ganz grundsätzlich. Zur Soundausgabe> benutze ich den RX-Pin ("fake DAC").
ich habe die Ausgabe damals nur kurz getestet und auch keine anhörbaren
Ergebnisse erziehlt. Allerdings nur kurz weil ohnehin ein I2S-DAC bei
mir dranhängt. Wenn es in Dein Projkt passt, nimm sowas und gebe über
I2S aus:
https://www.amazon.de/s?k=B01GFNYKK6
Die MAX98357A Module sind leider nicht ganz so super billig.
Gruß aus Berlin
Michael
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang