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.
Hallo, Marc schrieb: > Bei Adafruit kosten die UKW-Module ca. 20$ > https://www.adafruit.com/product/1958 das ist ein FM-Transmitter, damit sendest Du auf einer UKW-Frequenz mit sehr geringer Sendeleistung um z.B. einen MP3-Player in einem Radio zu empfangen, das keinen LineIn hat. Empfänger wäre sowas: https://www.amazon.de/s/ref=nb_sb_noss?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&url=search-alias%3Delectronics&field-keywords=RDA5807M Spielt verblüffend gut wenn man halbwegs starke UKW-Sender verfügbar hat. Gruß aus Berlin Michael
>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.
Ich sehe gerade, genau hinschauen hilft. Der Link zum ESP-Audio-Treiver oben beinhaltet ein Beispiel: https://github.com/earlephilhower/ESP8266Audio/blob/master/examples/StreamMP3FromHTTP/StreamMP3FromHTTP.ino
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.
Hallo, alles klar, habe ich auch schon mal so gemacht, nur irgendwie Deine Anmerkung nicht richtig interpretiert. Gruß aus Berlin Michael
Beitrag #5420217 wurde von einem Moderator gelöscht.
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
:
Bearbeitet durch User
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
|
21 | #include "enigma.h" |
22 | |
23 | AudioGeneratorMOD *mod; |
24 | AudioFileSourcePROGMEM *file; |
25 | //AudioOutputI2S *out;
|
26 | AudioOutputI2SNoDAC *out; |
27 | |
28 | void setup() |
29 | {
|
30 | WiFi.mode(WIFI_OFF); //WiFi.forceSleepBegin(); |
31 | Serial.begin(115200); |
32 | delay(1000); |
33 | file = new AudioFileSourcePROGMEM( enigma_mod, sizeof(enigma_mod) ); |
34 | // out = new AudioOutputI2S();
|
35 | out = new AudioOutputI2SNoDAC(0); // I2S 0 interface, wird für Sigma Delta bentutzt, Pins: 22,25,26 |
36 | out->SetGain(0.9); |
37 | |
38 | mod = new AudioGeneratorMOD(); |
39 | mod->SetBufferSize(3*1024); |
40 | mod->SetSampleRate(44100); |
41 | mod->SetStereoSeparation(32); |
42 | mod->begin(file, out); |
43 | }
|
44 | |
45 | void loop() |
46 | {
|
47 | if (mod->isRunning()) { |
48 | if (!mod->loop()) mod->stop(); |
49 | } else { |
50 | Serial.printf("MOD done\n"); |
51 | delay(1000); |
52 | }
|
53 | }
|
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
:
Bearbeitet durch User
>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
:
Bearbeitet durch User
>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,
1 | void AudioOutputI2SNoDAC::DeltaSigma(int16_t sample[2], uint32_t dsBuff[8]) |
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.
Für eine bessere Soundqualität habe ich mir jetzt mal diese Stereo-I2S-DAC bestellt: https://cdn-shop.adafruit.com/product-files/3678/UDA1334ATS.pdf
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
> der Lautsprecherstoff auf der Vorderseite ist verschmutzt
Ist doch gut, so sieht es authentischer aus.
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
:
Bearbeitet durch User
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.
Mit einem DVB-T-Stick lassen sich UKW, DAB und noch so ein paar andere "Funkdienste" erschlagen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.