Ich würde gerne ein Webradio basteln und bin im Moment auf der Suche
nach den Komponenten.
Die Requirements sind:
- Stand alone fähig
- Akku, netzunabhängig
- soll Podcasts spielen können
- eventuell ein UKW-Modul haben
- Soll Podcasts können
- Soll ein Display haben
- Mit einem Tastendruck soll es sich einschalten lassen und den letzten
Sender starten
- Ein paar "Hotkeys" für gespeicherte Sender
- Ein Poti für die Laustärke haben
Ein Raspberry-Pi wird wahrscheinlich die richtige Wahl sein. Ein ESP32
würde wahrscheinlich zu aufwendig.
Kennt jemand ein gutes Beispiel Projekt?
Marc schrieb:> - Akku, netzunabhängig
Das ist ein Punkt. Theoretisch hätte ich gesagt nimm einen Raspberry Pi
W. Der braucht aber anscheinend auch mindestens 120mA. Dazu kommt sicher
noch was für die Endstufe (auch im Leerlauf).
Das geht auf einem ESP bestimmt sparsamer.
> - eventuell ein UKW-Modul haben
Würde ich mir überlegen. Wenn dann mindestens DAB+. UKW wird es
wahrscheinlich nicht mehr so lange geben(wobei Totgesagte ja länger
leben).
Nachteil ist auch... Du brauchst eine Antenne und einen weiteren Chip
der auch wieder zusätzlich Strom benötigt.
> - Soll ein Display haben
Bei Batterie Betrieb würde ich evtl E-Ink ins Auge fassen.
> - Mit einem Tastendruck soll es sich einschalten lassen und den letzten Sender
starten
Also entweder der Controller kann von sich aus Deep-Sleep um Strom zu
sparen oder du brauchst einen Power Management IC.
> - Ein Poti für die Laustärke haben
Ein Encoder geht auch und bietet mehr Möglichkeiten.
Autor: Heinz (Gast)
>https://github.com/Edzelf/Esp-radio
Danke für den Link. Eine interessante Idee, die Hauptaufgabe der
dekodierung an einen spezial-Chip auszulagern:
http://www.vlsi.fi/en/products/vs1053.html
Autor: Frank (Gast)
>Datum: 03.05.2018 08:16>Marc schrieb:>> - Akku, netzunabhängig>Das ist ein Punkt. Theoretisch hätte ich gesagt nimm einen Raspberry Pi>W. Der braucht aber anscheinend auch mindestens 120mA. Dazu kommt sicher>noch was für die Endstufe (auch im Leerlauf).>Das geht auf einem ESP bestimmt sparsamer.
Das wäre die Frage. Wenn WIFI eingeschaltet ist, braucht der ESP wohl
auch über 100mA, falls ich richtig informiert bin.
Der Vorteil des ESP könnte die Langzeitstabilität im Vergleich zum RasPi
sein, weil man die SD-Karte nicht zerschießen kann.
Hallo,
https://github.com/earlephilhower/ESP8266Audio
der ESP32 kann es in Software, Ausgabe hier über I2S-DAC.
Von SD-Card hat mein Bekannter mit Flac bis 24Bit/192kHz getestet...
Ich habe bisher nur kurz per WLAN MP3 getestet. Man muß etwas die
Bufferzurodnungen anpassen wenn man wie ich hier ein sehr ausgelastetes
2,4GHz Band hat. Diplay hatte ich nur zum Test dran und habe den
jeweiligen Titel-TAG ausgegeben.
Gruß aus Berlin
Michael
Marc schrieb:> Das wäre die Frage. Wenn WIFI eingeschaltet ist, braucht der ESP wohl> auch über 100mA, falls ich richtig informiert bin.
Im Sleep Modus aber halt nicht. Beim Raspi gibt es das nicht vernünftig.
Da hast du nur die Möglichkeit sauber herunter zu fahren und dann aus zu
schalten. Da brauchst du definitiv externe Hardware.
Marc schrieb:> Der Vorteil des ESP könnte die Langzeitstabilität im Vergleich zum RasPi> sein, weil man die SD-Karte nicht zerschießen kann.
Die Boot Zeit ist mit Sicherheit auch schneller beim ESP.
Autor: Michael U. (amiga)
>https://github.com/earlephilhower/ESP8266Audio
Super Link. Erstaunlich, was für professionelle, aufwendige Bibliotheken
es für den ESP gibt und das ohne Floating Point. Das ist schon eine
andere Klasse als die 8-Bit Aera-AVR.
Autor: Frank (Gast)
>> - eventuell ein UKW-Modul haben>Würde ich mir überlegen. Wenn dann mindestens DAB+. UKW wird es>wahrscheinlich nicht mehr so lange geben(wobei Totgesagte ja länger>leben).>Nachteil ist auch... Du brauchst eine Antenne und einen weiteren Chip>der auch wieder zusätzlich Strom benötigt.
Bei Adafruit kosten die UKW-Module ca. 20$
https://www.adafruit.com/product/1958
Ein DAB+ Modul habe ich keines gefunden.
>das ist ein FM-Transmitter,
Uh, da das habe ich glatt übersehen. Wer kommt schon auf die Idee, dass
man einen FM-Transmitter kaufen kann?
Ich hatte mal so ein ähnliches Modul mit SI7403. Da sitzt auch gleich
ein Verstärker und Klinkenbuchse mit drauf.
Eine prinzipielle Frage zur Softwarearchitektur:
Wenn ich den DLF-mp3 Stream hier nehme:
http://st01.dlf.de/dlf/01/128/mp3/stream.mp3
1. TCP-Verbindung zum Stream herstellen
2. Einen Teil laden
3. in den MP3-Decoder schieben
4. goto 1
Wie groß muss der Stream-Ausschnitt für den MP3-Decoder sein?
Marc schrieb:> Ein DAB+ Modul habe ich keines gefunden
Hab zwar nicht richtig gesucht, aber teilweise wird von T1_L4A_8290C
geschrieben. Kostet um die 15-20$. Kenne das Modul aber nicht.
Hatte mal eines von Silicon Labs an einem Controller dran. Lief wie eine
Eins. Habe aber auf die schnelle nichts gefunden.
Michael U. schrieb:> Spielt verblüffend gut wenn man halbwegs starke UKW-Sender verfügbar> hat.
Ich würd eher sagen, die sind erschreckend taub. Ohne Kabelanschluss hab
ich aus denen noch nichts rauschfreies rausbekommen.
Ich bin auf ESP32 mit VS1053 umgestiegen.
>Hatte mal eines von Silicon Labs an einem Controller dran. Lief wie eine>Eins. Habe aber auf die schnelle nichts gefunden.
Es gab hier ja schon mal einen Beitrag mit DAB-Modul:
Beitrag "DABPi - FM/DAB Empfänger mit Si4688 für Raspberry Pi"
Aber die Module scheinen wohl nicht so geläufig. Ich habe auch keine
Bezugsquelle für ein Modul statt des blanken ICs gefunden.
Hallo,
Horst schrieb:> Ich bin auf ESP32 mit VS1053 umgestiegen.
ESP8266 mit VS1003 existiert hier als Spielerei, ist aber grenzwertig
bei ausgelastetem WLAN. Der Ram-Buffer ist zu knapp.
Wird bei Gelegenheit durch ESP32 und I2C-DAC ersetzt, MP3 in Software
macht er ohne Probleme.
Mit dem radiomodul war ich wohl sicher im Vorteil, Berlin hat ja genug
starke UKW-Sender. Ernsthaft eingesetzt habe ich es aber nur in einem
Puppenhausradio....
Gruß aus Berlin
Michael
Ich hab das hier nachgebaut und läuft recht gut:
http://esp8266-server.de/Internetradio.html
Allerdings funktioniert die Kommunikation mit dem VS1053 nicht richtig,
da muss ich nochmal genauer ran. Im Moment als Badradio aber ohne PIR,
Licht an, Radio an. Am Anfang stottert es ein wenig, dann aber stabil.
Holger
Hallo,
meine existierende Lösung ist nur ein Streamplayer für einen eigenen
IceCast-Stream, hat also sonst keinerlei Bedienmöglichkeit. Aussetzer
habe ich wenn hier die Latenz im WLAN stark ansteigt, weil alle im
unmittelbaren Umkreis beschließen im Internet rumzukramen. Wochenende
abends...
Deshalb wechsle ich da auf den ESP32, beim Test hat der das Dank
ausreichned Ram stabil überlebt.
Gruß aus Berlin
Michael
>Deshalb wechsle ich da auf den ESP32, beim Test hat der das Dank>ausreichned Ram stabil überlebt.
Hast Du eventuell ein einfaches Code-Beispiel dafür? So ohne alles.
Einfach fixe URL, keine Bedienoberfläche und Stream direkt auf
Audio-Out?
Das wäre ein ziemlich guter Startpunkt für alle, die eigene
Modifikationen machen möchten.
Der erste Link auf das ESP8266 Radio ist ziemlich überladen und eignet
sich nicht ohne größeren Aufwand.
Marc schrieb:> Ich würde gerne ein Webradio basteln und bin im Moment auf der Suche> nach den Komponenten.>> Die Requirements sind:>> - Stand alone fähig> - Akku, netzunabhängig> - soll Podcasts spielen können> - eventuell ein UKW-Modul haben> - Soll Podcasts können> - Soll ein Display haben> - Mit einem Tastendruck soll es sich einschalten lassen und den letzten> Sender starten> - Ein paar "Hotkeys" für gespeicherte Sender> - Ein Poti für die Laustärke haben>> Ein Raspberry-Pi wird wahrscheinlich die richtige Wahl sein. Ein ESP32> würde wahrscheinlich zu aufwendig.>> Kennt jemand ein gutes Beispiel Projekt?
Hallo
Ein älteres Smartphone oder Tablet hätte auch schon alles was du
brauchts. Wenn's also nicht unbedingt um's basteln geht, wäre das auch
noch eine Alternavie.
Gruß Ulf
> Ein älteres Smartphone oder Tablet hätte auch schon alles> was du brauchts
Exakt, und es kann dazu noch Youtube und Backrezepte anzeigen. Wir
nutzen so ein Gerät seit ein paar Jahren in der Küche, mit schön
kompakten Logitech Lautsprechern. Die klingen besser als (fast) jedes
Radio, das man sich kaufen kann.
>Ein älteres Smartphone
Genau. Allerdings habe ich keines, will keines oder kurz: Der Dreck
kommt mir nicht ins Haus.
Ich weiß, das ist für die meisten Leute unvorstellbar, selbst wenn sie
sich mit der Technik und deren Folgen beschäftigen ... würden.
Mit dem Smartphone lassen sich auch zwei meiner "Requirements" aus dem
ersten Post nicht erfüllen:
- Mit einem Tastendruck soll es sich einschalten lassen und den letzten
Sender starten
- Ein Poti für die Laustärke haben
> Mit einem Tastendruck soll es sich einschalten lassen> und den letzten Sender starten
Aber mit zwei Tastendrücken. Ist jetzt kein großer Unterschied, würde
ich mal sagen.
Wenn du auf dem Android Device die Entwicklereinstellungen aktivierst,
kannst du dort festlegen, dass das Gerät nie in Bereitschaft wechselt
und dass das Display immer (schwach) beleuchtet wird. Ich finde das für
stationären Betrieb sehr praktisch. Und dann hast du wirklich nur einen
Tastendruck!
> Ein Poti für die Laustärke haben
In meinem Fall ist das Bestandteil der Logitech Boxen, schön mit Kabel
dran, damit ich es an eine bequeme Stelle ans Küchenregal kleben kann.
>Aber mit zwei Tastendrücken.
Wischen zum entsperren? Dann die Radio App suchen, vorher noch Whatsapp
und Facebook checken und schnell noch eine Mail beantworten um dann das
Radio zu starten und während der Radiodoku noch schnell was in Amazon
bestellen.
Ich will einen haptischen Knopf, da drücke ich drauf und höre dann
konzentriert das Programm. Sozusagen das "Ein-Klick-dann-hören-Patent".
Aber zurück zum praktischen:
Ich überlege gerade, welchen Verstärker ich nehmen sollte. Vielleicht
den I2s von Adafruit:
https://www.exp-tech.de/module/audio/7277/adafruit-i2s-3w-class-d-amplifier-breakout-max98357a
In der Audiolib gibt es auch eine Option "PDM" bei der ich vermute, dass
es sich um PWM-handelt.
https://github.com/reaper7/ESP8266Audio/commit/6a221f95c79e31a70fb97af17a8ce91b177bcef6
Vielleicht wäre das auch eine erste Optionn.
Hallo,
ich hatte bisher nur einen I2S-DAC mit dem UDA1334A dran, kann dazu also
nicht viel sagen. In meinem ESP8266-Player mit dem VS1003 hängt ein
PAM8403 dran, hat etwas Nerven gekostet bis nichts mehr irgendwie
irgendwo reingesaut hat. Macht jetzt aber auch was er soll.
PS: mein Player hat ein Laustärkepoti aus alten Zeiten. Mit
Loudnessbeschaltung. Der ehemalige Sony-Center klingt damit verblüffend
gut und ausgewogen.
Stereo gehört bei mir irgendwie dazu, selbst wenn die Bsisbreite nur
15cm ist..
Gruß aus Berlin
Michael
>Stereo gehört bei mir irgendwie dazu, selbst wenn die Bsisbreite nur>15cm ist..
Ich habe dieses kleine Sonyradio, welches ich immer mitnehme. Das Sony
ist nur Mono, hat aber einen guten Sound und ich bin ziemlich zufrieden
mit dem was es kann. Aber im Ausland kriegt man die deutschen Sender
nicht, also schwebt mir das Webradio vor.
Für den Teensy gibt es dieses schöne stereo I2S DAC Board:
https://www.oshpark.com/shared_projects/TyqlhCdw
Hallo,
die PT8211 ICs habe ich mir mal für ein paar Cent aus China schicken
lassen, liegen hier irgendwo...
Muß man vermutlich etwas mit den I2S-parametern der ESP8266Audio lib
rumspielen, weil der Chip nur "Japanese or called LSBJ (Least
Significant Bit Justified)" Format versteht. Ist aber kein unlösbares
Problem.
Als Modul spart das Arbeit, es scheint aber nicht real kaufbar zu sein,
Paypal geht dort nicht und bei den Distributoren auf die er verweist,
gibt es das nicht wirklich...
Gruß aus Berlin
Michael
Michael U. schrieb:> In meinem ESP8266-Player mit dem VS1003 hängt ein> PAM8403 dran, hat etwas Nerven gekostet bis nichts mehr irgendwie> irgendwo reingesaut hat.
Hallo Michael,
was hast Du unternommen, damit der PAM8403 nicht mehr so rumsaut?
Eingangsfilter/Ausgangsfilter? Evtl. Schaltplan?
Hallo,
das war etwas seltsam mit dem PAM8403-Modul. So hat er in keiner Weise
erkennbare Störungen verursacht. Ich hatte ESP8266-12 und VS1003
Breakout und das PAM-Modul auf einem Steckbrett zum Aufbau und
programmieren. ESO über AMS117, VS-Modul mit eigenem Regler und den PAM
alles zusammen am USB. Mit dem PAM8403 am USB als Versorgung hatte ich
schonmal im Vorfeld experimetiert, es war ein Poti mit losen, aber recht
kurzen Drähten am Eingang und auf sehr leise gestellt. An den Ausgängen
über ca. 20cm Kabel jeweils ein 8 Ohm Lautsprecher.
Die USB-Versorung brach beim lauter stellen ohnehin zusammen, war mir
bekannt und hatte hier auch keine Folgen für USB.
Das spielte dann irgendwann relativ leise eben, aber ohne jede Störung
meinen Stream. Also den PAM + getrennt und aus einem 5V 2A
Steckernetzteil versorgt. Jetzt machte es auch schön Krach und war
immernoch völlig störungsfrei.
Ich bin da nicht unerfahren, auch auf einem Steckbrett auf Masseführung,
Leitungslängen usw. zu achten.
Also endgültiger Einbau. ESP + AMS1117-Regler + VS1003 mit Klebepads
innen an die Rückwand des Centers geklebt. Mittig das Lautstärkepoti
rein, rechts das PAM8403 Modul. Störabstand völlig im Eimer, fiepen,
zirpen...
Masseführung experimentell optimiert, besser, aber nicht gut und
brauchbar.
Nach dem langen Text jetzt der Witz: die betriebsspannung des
PAM8403-Moduls über eine stromkompensierte Drossel auf der Kramkiste
geführt, eigentlich viel zu lange Leitungen an beiden Seiten (ca. 10cm
weil ich sonst beim Testen nicht zum Löten rangekommen wäre). Absolute
Ruhe, keinerlei Störungen mehr... Keine wirkliche Ahnung, warum, FN-GND
des PAM ist weiterhin mit GND-Poti und dem VS1003 verbunden, diese
Drosselseite also eigentlich überbrückt, diese Verbindung mußte auch
bleiben!
Ich habe auch den Eindruck, daß eher der PAM-Chip von außen gestört wird
und Interferenzen dann in seinen Wandlern intern erzeugt. UKW-Empfang
mit einem Billg-Scan-Empfänger und relativ schwachen UKW-Sender blieb
auch mit PAM in direkter Antennen- oder Empfängernähe völlig ungestört.
Gruß aus Berlin
Michael
>Nach dem langen Text jetzt der Witz: die betriebsspannung des>PAM8403-Moduls über eine stromkompensierte Drossel auf der Kramkiste>geführt, eigentlich viel zu lange Leitungen an beiden Seiten (ca. 10cm>weil ich sonst beim Testen nicht zum Löten rangekommen wäre). Absolute>Ruhe, keinerlei Störungen mehr...
Ich stelle mal ein wenig Vermutungen an: Das PAM-Modul ist ein Class-D
Verstärker. Bei 2.5W und 5V fließen 0.5 A. Die Schaltfrequenz liegt zwar
im MHz Bereich, aber es könnte trotzdem zu Einbrüchen der
Spannungsversorgung kommen. Eventuell würde auch ein zusätzlicher 220nF
+ 100uF zur Glättung reichen.
Hallo,
Marc schrieb:> Eventuell würde auch ein zusätzlicher 220nF> + 100uF zur Glättung reichen.
das waren natürlich die ersten Versuche, zumindest konnte damit ich den
Klang der Störungen verändern...
Ich bin ehrlich, ich suche da nicht weiter weil es jetzt ok ist und ein
Einzel-Bastelprojekt bleibt.
Ich habe gestern mal die PT8211 DACs rausgkramt und einen auf einen
Adapter gelötet und an den ESP32 gehangen, spielt erstmal.
Beim Kramen habe ich auch noch einen ausgelöteten MS6313AS gefunden, der
spielt auch.
Gruß aus Berlin
Michael
Jetzt komme ich in die Phase des "praktischen Experiments".
Die erste Schwierigkeit: von den ESP32 Modulen gibt es verschiedene mit
unterschiedlichem PinOut. Nach einiger Suche bin ich endlich auf das zu
meinem passende gestoßen.
Problem Nr.1: Das Blink-Beispiel geht nicht, weil im ESP32 Framework
LED_BUILTIN nicht definiert ist ( ich weiß auch nicht, an welchem Pin
bei meinem ESP32 die LED hängt ).
Problem Nr.2 : Das AnalogReadSerial Beispiel geht nicht. Auf dem
Terminal erscheinen Zeichen, die aussehen, als wenn die Baudrate nicht
stimmt.
Nach einigem Probieren und Messen mit dem Oszi: Der ESP32 hat wohl ein
Problem, die richtige Taktfrequenz zu finden. Statt 9600 Baud sehe ich
manchmal 6200 Baud. Die PLL schein wohl nicht immer einzurasten.
Es ist auch schon vorgekommen, dass nach einiger Zeit die Baudrate
stimmt und die Zeichen korrekt erscheinen. Wenn ich den "EN" Knopf auf
dem Board drücke, kommen die Zeichen gleich korrekt.
Erhöhe mal die Distanz zwischen dem Modul und der Platine um ca. 1cm.
Das hat bei mir mal den Empfang drastisch verbessert und Instabilitäten
behoben.
Und dann habe ich das gefunden:
6 pins SD0 - SD3, CMD and CLK (GPIO8 - GPIO11) are used as datalink
between on-board flash and ESP32
Diese Pins solltest du nicht belegen, auch nicht in ein Steckbrett
stecken, da dessen Kontakte hohe Kapazitäten haben. Ich habe mit diesem
ESP32 keine Erfahrung, aber bei ESP8266 konnte ich Instabilitäten auf
Steckbrett unter anderem durch Abschneiden der Pins beheben, die zum
Flash Speicher führen.
Ist diese Stromversorgung Ok? Steckbretter und Dupont Kabel haben oft zu
hohe Innenwiderstände. Außerdem hilft es (zumindest beim ESP8266), einen
100µF Kondensator an VCC (3,3V) und GND direkt auf das Modul zu löten,
falls nicht bereits vorhanden.
Hallo,
Marc schrieb:> Die erste Schwierigkeit: von den ESP32 Modulen gibt es verschiedene mit> unterschiedlichem PinOut. Nach einiger Suche bin ich endlich auf das zu> meinem passende gestoßen.
ja, ich habe da inzwischen ein lustiges Sammelsurium an Varianten...
Den Effekt, daß der ESP32 nicht immer sauber startet wenn ich ihn
geflasht habe, kenne ich auch, denke ich nicht drüber nach, drücke ich
eben Reset (EN). Ich habe auch ein Modul, wo die Steuerung über RTS/DTS
ganicht geht, obwohl alles richtig bestückt aussieht. Letztlich habe ich
es ignoriert und drücke da eben PROG von Hand. Keine Lust gehabt, es
beim Chinesen zu reklamieren.
Den ADC habe ich noch nicht genutzt, zumindest bei den ESP32 Modulen.
Es gibt wohl im IDK auch immernoch ein paar Ungereimtheiten mit der
Genauigkeit.
Stefanus F. schrieb:> Erhöhe mal die Distanz zwischen dem Modul und der Platine um ca. 1cm.> Das hat bei mir mal den Empfang drastisch verbessert und Instabilitäten> behoben.
Deinen Hinweis verstehe ich bei seinem Modul jetzt nicht so richtig.
Gruß aus Berlin
Michael
> Deinen Hinweis verstehe ich bei seinem Modul jetzt nicht so richtig.
Ich hatte das mit so einem Modul:
https://www.mikrocontroller.net/attachment/345684/WIFI-Kit-8.jpg
Vermutlich geht es dabei um Reflexionen von der WLAN Antenne zu den
anderen Bauteilen. Mein Modul hatte fast gar keinen WLAN Empfang und das
Display zeigte oft Müll an, wenn ich es ohne Abstandshalter auf das
Steckbrett setze.
Von mechanischen Aufbau her sind die beiden Module ja ähnlich.
This topic has absolutely nothing to do with jamming. Your commercial is
totally displaced. In addition I am sure that the use of your products
is illegal in germany.
Hallo,
Bild ist nur ein Schnellschuß, so sehen bei mir Steckbrett-Test meist
aus...
Das ESP32-Wroom-Modul ist auf der Unterseite, Antenne schön dicht über
den Steckbrett und den gelben Leitungen zum I2S-DAC.
Ich habe es dem Modul aber nicht gesagt und da es nur 3m und eine dünne
Wand zum AP sind, gibt auch keine Probleme.
Spielt hier jetzt seit 45 Minuten einen Antenne Bayern Oldies Stream,
bisher ohne Aussetzer. Heap sind noch 45...55kB frei, ich habe relativ
großzügig Buffer zugewiesen.
Display zeigt nur die Titel-TAGs aus dem Stream an, aber noch völlig
unformatiert. Soll ohnehin ein 2,8" mit Touch ran.
Qualität der Radio-Stremas mit 128kBit ist unterirdisch. Nicht wegen der
128kBit, die nutze ich intern für meinen IceCast-Stream auch nur, aber
völlig totkomprimiert, nur auf maximale Lautstärke, Dynamic gleich Null.
Ich werde ihn lieber wieder meinen Stream spielen lassen...
Gruß aus Berlin
Michael
Hier mal ein kleiner Test ganz ohne I2S-Dac mit dem Amiga MOD Player aus
den Beispielen. Es hat mich jetzt einige Zeit gekostet, herauszufinden
wie man den Sigma-Delta-Wandler softwareseitig benutzt und welcher Pin
gebraucht wird, aber jetzt kommt zumindest mal ein Signal.
Verwendet habe ich eine RC-Kombination aus den gerade rum liegenden
Bauteilen:
R=330
C=100nF
Das Signal klingt leider ziemlich übersteuert. Ich bin mir ziemlich
sicher, dass da ein Fehler in der Sigma-Delta-Wandler Implementierung
ist, weil das normalerweise deutlich besser geht.
1
// Amiga Mod Demo
2
// ESP32 using sigma delta DAC
3
// Output: GPIO22
4
//
5
// driver:
6
// https://github.com/earlephilhower/ESP8266Audio
7
//
8
9
#include<Arduino.h>
10
#include"AudioFileSourcePROGMEM.h"
11
#include"AudioGeneratorMOD.h"
12
//#include "AudioOutputI2S.h"
13
#include"AudioOutputI2SNoDAC.h"
14
#ifdef ESP32
15
#include<WiFi.h>
16
#else
17
#include<ESP8266WiFi.h>
18
#endif
19
20
// enigma.mod sample from the mod archive: https://modarchive.org/index.php?request=view_by_moduleid&query=42146
Hallo,
Marc schrieb:> Das Signal klingt leider ziemlich übersteuert. Ich bin mir ziemlich> sicher, dass da ein Fehler in der Sigma-Delta-Wandler Implementierung> ist, weil das normalerweise deutlich besser geht.
Das MOD klang bei mir auch mit I2S-DAC übersteuert, habe ich aber nicht
weiterverfolgt. Hast Du mal Gain runtergesetzt? Bei meinen MP3 passt am
DAC muß ich auf 40% bzw. 0.4 damit mir die Kopfhörer nicht von den Ohren
fliegen. ;)
Ich habe gestern noch das 2,8" Display mit der TFT_eSPI rangehangen.
Touch nur angetestet, da muß ich seine (fehlende) Beschreibung zur
Kalibrierung noch ansehen. Ich werde vielleicht nachher noch den SD-Slot
anschließen und testen.
Ich habe mal den Webplayer von mir angehängt, stammt aus einem
Webradio-Demo, allerdings habe ich fast alles wieder rausgeworfen, was
nicht mit dem Player direkt zu tun hatte (Webserver, EEPROM-für das
Speichern der letzten Einstellungen usw.). Mir ging es erstmal nur um
seine Bufferverwaltung.
Das Demo aus der Lib StreamMP3FromHTTP ist bei mir auch lokal nur als
Stottermaschine zu gebrauchen...
Wird langsam Zeit, darüber nachzudenken, was ich eigentlich daraus
machen will...
PS: die Änderung des I2S-pins in der Lib habe ich nur gemacht, weil ich
die beieinander haben wollte, die DMA-Buffer-Änderungen betreffen auch
nur die I2S-Routine. Ist beides für Dich also unnötig.
Gruß aus Berlin
Michael
>Ich habe mal den Webplayer von mir angehängt
Danke dafür. Ich habe mal auf den Sigma-Delta-DAC umgestellt.
Mit dem Webstream ist es tatsächlich nicht mehr übersteuert. Das Problem
liegt also beim MOD-Player.
Im Wesentlichen läuft es meistens ohne Aussetzer.
Hallo,
Marc schrieb:> Im Wesentlichen läuft es meistens ohne Aussetzer.
ich vermute einfach mal, daß er mit dem Decoder oder/und der
Sigma-Delta-Ausgabe aus dem Tritt kommen kann, wenn irgendwelche
WiFi/Internetsachen intern zu lange für andere Beschäftigung sorgen. Die
direkte Einbindung der Thread/Core-Verwaltung des RTOS in die ArduinoIDE
fehlt ja noch, sonst könnte man da vermutlich besser eingreifen.
Der I2S-DAC, der direkt per DMA aus seinem Buffer bedient werden kann,
stört das dann wenig bis garnicht. Zumindest, seit ich die Anzahl von 8
auf 32 und die Größe von 64 auf 256 Byte? Word? erhöht habe. Das hat den
meisten Einfluß auf das Verhalten gehabt.
Ich habe inzwischen die Touch-Kalibrierung noch in Gang gebracht und die
SD-Karte angeschlossen. SD-Karte zickt aber noch, wird beim Testen nicht
immer erkannt, eine will er garnicht. Vielleicht stört auch langsam mein
Steckbrett etwas, sind ja nun schon 3 SPI-Slaves dran...
ok, scheint eher der SD-Slot auf dem Display bzw. dessen
Spannungsversorgung zu sein. Mit einem externen SD-Card Modul mit
eigenem Spannungsregler wird die Karte sicher erkannt.
Gruß aus Berlin
Michael
>ich vermute einfach mal, daß er mit dem Decoder oder/und der>Sigma-Delta-Ausgabe aus dem Tritt kommen kann, wenn irgendwelche>WiFi/Internetsachen intern zu lange für andere Beschäftigung sorgen.
Der Rechenbedarf durch den Sigma-Delta ist nicht so groß. Die I2S
Schnittstelle wird quasi "unterlagert" dafür benutzt. Deshalb sind auch
alle I2S Pins bei der Verwendung des Wandlers aktiv. Auf der Clock und
der Select Leitung kann man das mit dem Oszi sehen.
32 Sigma-Delta-Bits werden in einer Loop berechnet und dann auf die
I2S-Schnittstelle geschrieben, die ihrerseits DMA gebuffert sein dürfte.
https://github.com/earlephilhower/ESP8266Audio/blob/master/src/AudioOutputI2SNoDAC.cpp
Da Berechnen der 32Bit mit 44kHz Aufrufrate dürfte bei einem 160MHz
Prozessor überschaubar sein.
Meiner Ansicht nach sind aber leichte Fehler im Code.
Der Buffer zur Berechnung der Sigma-Delta Bits müsste meiner Meinung
nach als Pointer übergeben werden und nicht so,
da ja der Buffer als Rückgabewert und Input für den I2S-Funktion dient.
Außerdem ist der Buffersize im Headerfile "4" und im Funktionskopf mit
"8" angegeben, was auch nicht zueinander passt.
Außerdem sollte der Oversamplingparameter raus geworfen werden, weil es
bei einer Änderung leicht zum Bufferoverflow kommen kann, weil die
Buffergröße überhaupt nicht damit korreliert ist.
Vielleicht mag jemand mit guten C-Kenntnissen mal kurz auf die Funktion
sehen, um meine Ansicht zu bestätigen.
Hallo,
Marc schrieb:> Vielleicht mag jemand mit guten C-Kenntnissen mal kurz auf die Funktion> sehen, um meine Ansicht zu bestätigen.
puuh... Das wäre was für meinen Bekannten, für mich ist das immer ein
(durchaus willkommener) Anlaß, meine C/C++ Kenntnisse auszubessern...
Dann müßte ja aber die Änderung der DMA-Buffer in der AudioOutputI2S.cpp
auch wirken. Das stammte von meinem Beaknnten, weil er ja unbedingt FLAC
von SD-Card in 24Bit/192k abspielen wollte.
SD-Karte und FS belegen nach dem Einbinden der SD-Karte mal rund 30kB
Ram, ich habe bei mir preallocateBufferSize erstmal auf 32k reduziert.
11-15k frei zur Laufzeit war mir zuwenig.
Ich werde jetzt erstmal ein paar Button usw. auf das Display malen, um
einen Wechsel Stream - SD-karte einzubauen.
Ist immernoch "Proof-of-Concept", keine Ahnung, was ich eigentlich draus
machen will. ;)
Bild: "wie füllt man ein Steckbrett..."
Gruß aus Berlin
Michael
>Ist immernoch "Proof-of-Concept", keine Ahnung, was ich eigentlich draus>machen will. ;)
Du könntest vielleicht .. ein Radio damit machen ;-)
Ich würde gerne automatisch solche Potcasts runterladen, speichern und
abspielen können:
https://www.swr.de/swr2/programm/sendungen/wissen/rueckschau-sendungen-nachhoeren-und-nachlesen/-/id=660374/did=13778306/nid=660374/1rwsxor/index.html
Da weiß ich aber noch nicht, wie das Web-Technisch geht.
Es hat was, wenn man sich nicht immer durch Menues klicken muss, sondern
einfach nur mit zwei Tasten auswählt und dann starten kann.
Das abspeichern hätte den Vorteil, dass man das Radio unterwegs mit im
Auto abspielen kann.
>Bild: "wie füllt man ein Steckbrett..."
Sieht super aus :-) .. ein Bild sagt mehr als tausend Worte.
Ich habe gerade eine Stunde Radio nur mit dem ESP32, RC-Tiefpass und
kleinem aktiv Lautsprechern gehört. Es funktioniert eigentlich ganz
super. Durch den simulierten Sigma-Delta Wandler hört man ein ganz
leichtes Rauschen, ganz wie in echten alten Radios, und etwas Knacken
wie auf alten Plattenspielern.
Hier der Webradio-Quick-Hack.
Ich habe einfach den Eingang des Potis eines billigen Radios von denen
ich mal mehrere für je 5 Euro gekauft habe, angezapft und den
330Ohm-100nF-Tiepass angelötet.
Das Radio lag leider ein paar Jahre im Keller und der Lautsprecherstoff
auf der Vorderseite ist verschmutzt. Aber egal, für einen ersten
Prototypen tut's das.
Auf der Powerbank steht 2200mAh. Sie hat einen Ein-Aus-Schalter und
hoffentlich einen Tiefenentladeschutz. Durch die Powerbank spare ich die
ganze Ladeelektronik.
Hallo,
nette Idee. :-)
Nur der "Henkel" zum Wegwerfen oben stört etwas...
Ich habe erstmal einen voläufigen Aufbau gemacht, da das Steckbrett
irgendwann zu instabil wird und mich die Software wohl noch etwas
beschäftigen wird.
Die Touch-Abfragen sind noch etwas fragwürdig, Lautstärke und Save schon
aktiv. Die Umschaltung auf die SD-Karte ist nur vorbereitet, Mute werde
ich nachher noch einbauen und weiter über die Textausgaben des Titels
nachdenken...
Die Listen für SD-Dateien bzw. Streamliste durchdenken und mal schauen.
Die Streamplay-Routine hat auch noch irgendein Problem hier wenn das
WÖLAN hakt.
PS. den Brüllwürfel habe ich beim Kramen wieder gefunden, so kann ich
wenigstens erstmal was hören ohne Kopfhörer am Programmierplatz zu
nehmen.
Gruß aus Berlin
Michael
Michael U. schrieb:> PS. den Brüllwürfel habe ich beim Kramen wieder gefunden, so kann ich> wenigstens erstmal was hören ohne Kopfhörer am Programmierplatz zu> nehmen.
du Glücklicher, bei mir sind beide Akkus tot und die Kisten rühren sich
nicht mehr, trotz Versorgung über USB, die Restpower reicht wohl nicht
um die Kisten zu starten.
Öffnen ist auch nicht so einfach, dabei zerstört man das ganze geklebte
Gehäuse, alles in Allem, ein doppelter Fehlkauf ob wohl sie im ersten
Jahr echt nett sind diese kleinen BT Brüllwürfel.
Hallo,
Joachim B. schrieb:> du Glücklicher, bei mir sind beide Akkus tot und die Kisten rühren sich> nicht mehr, trotz Versorgung über USB, die Restpower reicht wohl nicht> um die Kisten zu starten.
sehr ärgerlich.
BT hat der alte noch nicht, der hat aber schon ein paar Jahre auf dem
Buckel, wurde aber kaum genutzt. Akku lädt und hat dann auch noch ca. 3h
bei mäßger Lautstärke gespielt. Ich hatte vor Pfingsten noch einen
bestellt, auch ohne BT, wollte einen möglichst identischen haben. Na
gut, der neue hat jetzt auch eine USB-Buchse für einen Stick, der alte
hatte die noch nicht, nur SD-Card.
Klingen aber zum Glück gleich genug, will die als Stereo-Boxen für die
Spielerei nehmen.
Mal schauen, wieviel Glück ich habe...
Gruß aus Berlin
Michael
Was mich bei den modernen Lautsprechern ( a.k. MP3-Brüllwürfel ) wundert
ist, dass die Klangqualität im Vergleich zu den kleinen Lautsprechern,
die es früher in Radios gab, viel besser ist. Insbesondere für die
Basswidergabe braucht man ja eigentlich eine große Öffnung.
Meine These: Ursache ist die modernere Technik. Die Lautsprecher haben
vielleicht bessere Magnete und einen größeren Hub. Eventuell könnten
digitale Filter den Frequenzgang noch ausgleichen.
Weiß jemand Genaueres?
Gerade entdeckt ... hier hat einer mit den internen 8Bit DACs ein
Stereo-Internetradio gebaut:
https://youtu.be/Bk9KnJSv3vg
Meiner Meinung nach ist die Soundqualität aber deutlich schlechter als
der Mono-Sigma-Delta-Dac.
Leider gibt es keinen Link zum Code. Es hätte mich interessiert, wie der
DAC eingebunden ist.
BTW .. am WE habe ich ein KRC-86B Bluetoothmodul in die Hände bekommen.
Es hat erstaunlich schnell funktioniert: Einfach nur die LED,
Stützkondensator und Batterie anlöten, Verstärker mit Lautsprecher
anschließen und schon konnte man sich mit einem Android Tablet verbinden
und Musik abspielen. Bei meinem Ubuntu-Laptop ging es leider nicht,
warum auch immer ...
>Vermutlich unterstützt dein Laptop nicht Bluetooth 4 (BLE).
Das könnte sein. Wobei ich gedacht hätte, das BLE ( Bluetooth Low
Energie ) technisch gar nicht in der Lage ist, das Audioprofil zu
unterstützen.
Hallo,
zu DAB habe ich meine eigene Meinung...
Ich habe kurz nach 2000 beim DAB-Feldversuch mitgemacht als der schon
fast vorbei war. Einfach aus technischen Interesse. 999,-DM für entweder
den Heim-Empfänger mit PC-Anbindung oder für die KFZ-Version mit
Farbdisplay.
Ich hatte den Heim-Empfänger, Blaupunkt Autoradio mit Netzteil in einem
Blechgehäuse, dazu die Bosch Empfangsplatine. Optisches Kabel zu einer
ISA-Karte im PC. Mein BEkantter die KFZ-version, 3,5"? RGB-Display mit
ein paar Tasten auf einem Schwanenhals, selbiges Blaupunktradio und 2
Kisten im Kofferraum. 1x die Empfangsplatine in einer Blechkiste und
dazu ein Industrie-Mini-PC mit interner USV. 486DX100 :-)
Empfang hier in Berlin brauchbar, im Auto aber noch etliche Löcher.
Infodienst gut aufbereitet, Berliner Kinoprogramm und solche Sachen gut
aktuell gehalten.
Bei ihm ist das Blaupunkt im Auto gebleiben, der Rest wurde irgendwann
ein paar Jahre später ausgebaut, Die Pflege der Dienst war mit Ende des
Feldversuches gegen 0 gelaufen. Bei mir landete das Autoradio dann auch
im Auto, der Rest im Keller.
Als DAB+ kam habe ich mir den USB-Stick geholt. Lief hier soweit
problemlos, allerdings war gegenüber DAB mit 192kBit MP2 für mich die
Qualität bei MP4 AAC mit 96, teilweise 64kBit, einfach schlecht.
Ich habe von wohl 3 Jahren eine Mini-Anlage von "DUAL" für wohl 25€ neu,
defekt, gekauft. Fehler war bei den Geräten bekannt, ein 3,3V Regler für
20ct und alles war ok. Gund war, daß der dort verbaute DAB-Tuner
halbwegs bekannt und mit einer passenden Firmware auch durchaus seriell
steuerbar war. Steht hinten als "Werkstattradio", ich habe den Tuner nie
ausgebaut und umgeflasht, die Zutaten liegen sicher noch hier auf dem
Rechner.
Solange UKW läuft, wird das bei mir für meine Nutzung bleiben, ich sehe
keinerlei Vorteile für mich durch DAB.
PS. gerade erst genauer in den Thread geschaut: es geht um das Venice
Verona 2 KINO4, das könnte sogar genau die Version sein, die ich hier
hätte, vielleicht zerrupfe ich die "Anlage" doch mal...
Gruß aus Berlin
Michael
Hallo,
da ich das "Webradio" mal wieder ausgegraben habe:
Beitrag "ESP32 Web-/SD-Card Player"
falls es noch jemanden interessiert.
Gruß aus berlin
Michael
Marc schrieb:> Da Berechnen der 32Bit mit 44kHz Aufrufrate dürfte bei einem 160MHz> Prozessor überschaubar sein.
So wenig wird das gar nicht sein - die Schleife allein frisst eine
Menge. Üblicherweise arbeitet man mit 64-fachem Oversampling, also ~3mio
Bits/s. Der Delta-Sigma-Wandler auf github ist nur erster Ordnung und
damit qualitativ sehr schlecht (SNR um 50db, je nach Oversampling).
Anhören möchte man sich das nicht. Selbst bei zweiter Ordnung sind da
noch hörbare Arktefakte drin.
>So wenig wird das gar nicht sein - die Schleife allein frisst eine>Menge. Üblicherweise arbeitet man mit 64-fachem Oversampling, also ~3mio>Bits/s.
Ja, ganz ohne Rechenaufwand geht's da nicht. Nehmen wir die 3msps mal 4
Befehle wären es 12Mio Befehle/sec also bei 160MHz MCLK also ca. 8% der
Rechenleistung.
>Der Delta-Sigma-Wandler auf github ist nur erster Ordnung und>damit qualitativ sehr schlecht (SNR um 50db, je nach Oversampling).>Anhören möchte man sich das nicht. Selbst bei zweiter Ordnung sind da>noch hörbare Arktefakte drin.
Meine These ist, dass eine Sigma-Delta Vollaussteuerung bis zu den
Spannungsgrenzen schafft. Ein Wandler höherer Ordnung muss mehr Energie
in die unhörbaren Frequenzen schieben. D.h. müsst die Amplitude sinken
und ein nachfolgender Verstärker muss das Signal mehr verstärken.
Bei meinem Radioaufbau mit dem ESP32 scheint mir die
Versorgungspannungsschwankung stark auf den den Digitalpin zu wirken,
dadurch entstehen leichte Knackgeräusche.
Auf Hackaday hat einer ein TTGO ESP32 Modul mit Display verwendet:
https://hackaday.com/2021/10/30/esp32-internet-radio-is-no-game/
Das Arduino-Programm dazu ist ziemlich kurz. Was ich mich gerade Frage:
der ESP32 hat eigentlich Bluetooth. Wenn man einen Treiber hätte, könnte
man damit Bluetooth Lautsprecher betreiben.