27.06.2017, 12:24
Hallo zusammen,
bei der Entwicklung eines Internetradios kommt man irgendwann mal an den Punkt, die digitalisierten Daten in analoge Werte (in diesem Fall - Audio-NF) umzusetzen. Glücklich kann man sich schätzen, wenn der eingesetzte Microcontroller wie zum Beispiel der ESP32 von Expressif-Systems ein DAC an Bord hat. Sollte ein DAC fehlen, bietet es sich an einen externen DSP zu nutzen.
[attachment=39792]
Dieser DSP von VSLI erzeugt ein analoges Stereosignal und kann nebenbei einen digitalen Datenstrom im Ogg Vorbis/MP3/AAC/WMA/... - Format dekodieren. Dadurch wird dem Microcontroller auch die Softwaredekodierung der eben genannten Datenformate abgenommen. Für einen Arduino (mit AVR) unverzichtbar, mit seinen 16 MHz CPU-Takt ist er nicht in der Lage diese Aufgabe rein in Software zu lösen. Auch die schnellen ESP8266 und der ESP32 profitieren von so einem DSP, haben Sie doch im Einsatz als Internetradio noch genügend andere Aufgaben zu erledigen (Webclient, Webserver, Datentransport zum DSP, Nutzereingaben,Displayansteuerung und so weiter).
Möchte man mit einem Microcontroller "nur" einmal Audio erzeugen, ganz ohne DAC oder DSP, geht es auch einfacher. Fast alle Controller haben PWM-Ausgänge an Bord. Diese PWM-Ausgänge lassen sich als DAC-missbrauchen, das Thema ist sicher nicht neu. Für ein halbwegs brauchbares Audio-Signal muß man aber auf eine hohe PWM-Trägerfrequenz zurückgreifen, auch das zusammenschalten von PWM-Ausgängen verbessert das Audiosignal signifikant.
Die ganze Theorie lässt sich unter http://wiki.openmusiclabs.com/wiki/PWMDAC nachlesen.
Hier mal meine Umsetzung die zeigt wie ein einfacher Arduino Nano klingen kann.
Sicher kein HiFi, aber an den Klang eines AM-Radios kommt man schon gut ran. Möglicherweise kann so ein Arduino mit PWM-"DAC" mal als Modulationsquelle für einen Sender herhalten. Für mein Internetradio bevorzuge ich aber oben gezeigtes DSP in Verbindung mit den schnellen Microcontrollern von Expressif.
Viele Bastlergrüße
Bernhard
bei der Entwicklung eines Internetradios kommt man irgendwann mal an den Punkt, die digitalisierten Daten in analoge Werte (in diesem Fall - Audio-NF) umzusetzen. Glücklich kann man sich schätzen, wenn der eingesetzte Microcontroller wie zum Beispiel der ESP32 von Expressif-Systems ein DAC an Bord hat. Sollte ein DAC fehlen, bietet es sich an einen externen DSP zu nutzen.
[attachment=39792]
Dieser DSP von VSLI erzeugt ein analoges Stereosignal und kann nebenbei einen digitalen Datenstrom im Ogg Vorbis/MP3/AAC/WMA/... - Format dekodieren. Dadurch wird dem Microcontroller auch die Softwaredekodierung der eben genannten Datenformate abgenommen. Für einen Arduino (mit AVR) unverzichtbar, mit seinen 16 MHz CPU-Takt ist er nicht in der Lage diese Aufgabe rein in Software zu lösen. Auch die schnellen ESP8266 und der ESP32 profitieren von so einem DSP, haben Sie doch im Einsatz als Internetradio noch genügend andere Aufgaben zu erledigen (Webclient, Webserver, Datentransport zum DSP, Nutzereingaben,Displayansteuerung und so weiter).
Möchte man mit einem Microcontroller "nur" einmal Audio erzeugen, ganz ohne DAC oder DSP, geht es auch einfacher. Fast alle Controller haben PWM-Ausgänge an Bord. Diese PWM-Ausgänge lassen sich als DAC-missbrauchen, das Thema ist sicher nicht neu. Für ein halbwegs brauchbares Audio-Signal muß man aber auf eine hohe PWM-Trägerfrequenz zurückgreifen, auch das zusammenschalten von PWM-Ausgängen verbessert das Audiosignal signifikant.
Die ganze Theorie lässt sich unter http://wiki.openmusiclabs.com/wiki/PWMDAC nachlesen.
Hier mal meine Umsetzung die zeigt wie ein einfacher Arduino Nano klingen kann.
Sicher kein HiFi, aber an den Klang eines AM-Radios kommt man schon gut ran. Möglicherweise kann so ein Arduino mit PWM-"DAC" mal als Modulationsquelle für einen Sender herhalten. Für mein Internetradio bevorzuge ich aber oben gezeigtes DSP in Verbindung mit den schnellen Microcontrollern von Expressif.
Viele Bastlergrüße
Bernhard