Forum: Mikrocontroller und Digitale Elektronik Audio in an Raspberry Zero wie?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Marlene (Gast)


Lesenswert?

Hallo,

wie kann ich bei einem Raspberry Zero einen Audio-IN erstellen?

Ich bin derzeit so weit das ich an den GPIOs einen Audio-OUT habe. Das 
Signal kommt dort per PWM raus... von dort gehe ich in einen PCM5102A 
und habe ein Analoges Audiosignal.. ok.. das passt alles soweit..

Aber wie realisiere ich einen Audio-IN ?

Ich denke ich werde das Analoge in ein Digitales Signal umwandeln.. ok.. 
und dann?

Weiss da jemand weiter? Zumal.. der Sound muss ja im Raspbian auch iwie 
ankommen und eingestellt werden..

Ich finde immer was von einem MCP3008 aber ich weiss da dann nicht mehr 
weiter.

Vielen Dank

von Tom (Gast)


Lesenswert?

Marlene schrieb:
> Hallo,
>
> wie kann ich bei einem Raspberry Zero einen Audio-IN erstellen?
>

ADC?

> Ich bin derzeit so weit das ich an den GPIOs einen Audio-OUT habe. Das
> Signal kommt dort per PWM raus... von dort gehe ich in einen PCM5102A
> und habe ein Analoges Audiosignal.. ok.. das passt alles soweit..
>

Wenn Du schon ein PWM hat, brauchst Du nicht noch auf einen DAC zu 
gehen!
PWM + Tiefpass reichen für normale Audioqualität aus, so wie das alle 
"großen" Raspberrys machen.


> Aber wie realisiere ich einen Audio-IN ?
>

Nochmal ADC.

> Ich denke ich werde das Analoge in ein Digitales Signal umwandeln.. ok..
> und dann?
>

Dann hast Du nach dem ADC in der Regel 8..10..12 Bit PCM Werte.

von Axel S. (a-za-z0-9)


Lesenswert?

Marlene schrieb:
> wie kann ich bei einem Raspberry Zero einen Audio-IN erstellen?

"erstellen"?

> Ich bin derzeit so weit das ich an den GPIOs einen Audio-OUT habe. Das
> Signal kommt dort per PWM raus... von dort gehe ich in einen PCM5102A
> und habe ein Analoges Audiosignal.. ok.. das passt alles soweit..

Sicher nicht. Wenn ein PCM5102 beteiligt ist, dann hängt der an der I²S 
Schnittstelle. Mit PWM hat das nichts zu tun.

> Aber wie realisiere ich einen Audio-IN ?

I²S funktioniert in beiden Richtungen. Du brauchst halt keinen DAC wie 
den PCM5102, sondern einen ADC. Gebräuchlicher sind IC, die beides 
enthalten (DAC und ADC) - die heißen dann Audio-Codec. Ein typischer 
Vertreter wäre der PCM1803. Google hilft. Suchwörter wären "Raspberry", 
"I2S" und "Codec" bzw. "ADC"

Einfacher wäre eine USB "Soundkarte". Sieht aus wie ein USB-Stick, hat 
aber zwei 3.5mm Klinkenbuchsen für Audio-In und -Out.

> Ich denke ich werde das Analoge in ein Digitales Signal umwandeln.. ok..
> und dann?

Und dann was? Du glaubst doch, das zu brauchen.
Und jetzt weißt du nicht wofür?

> Weiss da jemand weiter? Zumal.. der Sound muss ja im Raspbian auch iwie
> ankommen und eingestellt werden..

Sobald der Treiber geladen ist, gibt es dafür ein Device Audio-in 
irgendwo unterhalb /dev. Da kannst du die Samples vom ADC rauslesen. 
Genauso wie du in das Audio-out Device Daten sampleweise reischreibst. 
Wie die Devices genau heißen, hängt vom Treiber ab.

von 50c (Gast)


Lesenswert?

...normalerweise ist I2S das Zauberwort dafür. Hardwarebeispiele:

https://www.waveshare.com/uda1380-board.htm
https://www.waveshare.com/wm8960-audio-hat.htm

von Erax (Gast)


Lesenswert?


von Marlene (Gast)


Angehängte Dateien:

Lesenswert?

Wie meint ihr I2C. Also I2C ist mir schon klar und ein Begriff vom 
ATMegas usw....

Ja also alles was ich finde ist das der Raspberry das Signal auf 2 Pins 
raus gibt (ja habe jetzt gelesen ist I2C).. ok...

Also wenn ich das richtig verstanden habe dann gibt der PI das Signal 
über I2C an den DAC und der macht daraus dann Analog... ok..

Und jetzt hänge ich an die I2C noch einen ADC und habe beides 
"zeitgleich" ?

Also Audio ADC => I2C => Raspbian => Mixer => I2C => DAC => Endstufen...

Richtig so?

von PittyJ (Gast)


Lesenswert?

USB-Soundkarte.
Habe ich erst letztens gemacht. Keine 10 Euro. Qualität ist gut. Das 
Ding funktioniert 'out of the Box', also ohne noch Treiber etc zu 
installieren.

Also 5 Minuten Amazon, 10 Euro zahlen und morgen gibts Musik.

von Marlene (Gast)


Angehängte Dateien:

Lesenswert?

naja... das wird ja ne PCB und bis die kommt dauert ja auch also keine 
Eile...

Wenn ich alles richtig verstanden habe hänge ich das an den I2C Port und 
habe einen Audio IN.

Korrekt?

von Harald (Gast)


Lesenswert?

I2S

von Marlene (Gast)


Lesenswert?

ok... ja I2S ok... Die gibt es als Input und Output... wie schließt man 
das an? Das verstehe ich nicht so ganz :(

von Axel S. (a-za-z0-9)


Lesenswert?

Marlene schrieb:
> Wie meint ihr I2C. Also I2C ist mir schon klar

I²S. Nicht I²C. Schlag es nach, wenn dir das nichts sagt!

> Ja also alles was ich finde ist das der Raspberry das Signal auf 2 Pins
> raus gibt

I²S braucht 3 Leitungen für den DAC: CLK, DOUT und LRCLK. Der ADC 
braucht CLK, DIN und LRCLK. Bzw. der Codec alle 4.

> Also wenn ich das richtig verstanden habe dann gibt der PI das Signal
> über I2C an den DAC und der macht daraus dann Analog... ok..
>
> Und jetzt hänge ich an die I2C noch einen ADC und habe beides
> "zeitgleich" ?

Jein. Da der Raspi nur die eine I²S Schnittstelle hat, müssen Ein- und 
Ausgabe mit dem gleichen Takt laufen. Vergleichbar mit SPI.

Ein Codec braucht außer den Sample-Daten noch Steuersignale. Das läuft 
dann typisch über I²C.

von Dergute W. (derguteweka)


Lesenswert?

Marlene schrieb:
> naja... das wird ja ne PCB und bis die kommt dauert ja auch also keine
> Eile...

Fuer diese Eigenschaften wuerd' ich den PCM2704/5/6/7 vorschlagen.
Das wird dann zwar teurer und aufwendiger als 'ne fertige USB-Soundkarte 
vom Amazon, aber mit mehr Bastelspass...

Gruss
WK

von Marlene (Gast)


Lesenswert?

Also eigentlich ja ganz simpel

Analog - > Analog multipleer - > ADC I2S-> Berry I2S - > DAC I2S - > 
Endstufe


Was ich nur nicht verstehe... Gehe ich mit dem ADC nur an DIN und mit 
dem DAC nur an OUT aber die CLOCK Leitungen etc kommen alle zusammen?

von Marlene (Gast)


Lesenswert?

Axel S. schrieb:
> Ein Codec braucht außer den Sample-Daten noch Steuersignale. Das läuft
> dann typisch über I²C.

Der codec wäre doch der Berry... Audio rein... Am berry bearbeiten... 
Audio raus..

von Harald (Gast)


Lesenswert?


von Marlene (Gast)


Lesenswert?

So,

ich habe mal ein wenig gegoogled und habe den PCM1808 gefunden...

http://i.imgur.com/M8wiJIP.png

So würde nun der Eingang aussehen.

Und die leitungen SCK, BCK und LRCK werden auch mit dem DAC verbunden 
und nur DOUT geht an den DIN vom Berry I2S... Jetzt habe ich es richtig, 
oder?

von NichtWichtig (Gast)


Lesenswert?

Aufpassen wer Master am I2S wid.
Hatte damals den ARM926 µC als Master und der Codec war nicht in der 
Lage zeitgenau und fehlerfrei Audio zu senden.

Haben dann die I2S umkonfiguriert das der Codec den Takt vorgibt und der 
Atmel als Slave agierte - je nach Samplerate des Audiofiles und schon 
waren Sinustöne wieder Sinustöne ohne Knackser.

von Marlene (Gast)


Lesenswert?

Ich wollte jetzt beide auf Slave stellen. Also den DAC und den ADC und 
den Berry als Master.

von NichtWichtig (Gast)


Lesenswert?

Kommt vermutlich auch auf die Chips an, wir hatten ein StereoCodec 
welcher nix buffern konnte und somit der Quatsch vom µC nicht 
entsprechend dem wave-file ausgeben konnte. Grottige Verzerrungen und 
falsche Frequenz.

Einfacher ist es wenn der Codec den µC Daten in seinem Speed 
anbietet/abholt, dann stimmt das Timing und Buffersize.

Schau halt ins Datenblatt was die Chips können oder eben nicht.

von Axel S. (a-za-z0-9)


Lesenswert?

Marlene schrieb:
> Analog - > Analog multipleer - > ADC I2S-> Berry I2S - > DAC I2S - >
> Endstufe

Das könnte man so machen. Aber es ergibt keinen Sinn. Das ist dann 
einfach nur eine verkomplizierte Variante von

Analog -> Endstufe

> Was ich nur nicht verstehe... Gehe ich mit dem ADC nur an DIN und mit
> dem DAC nur an OUT aber die CLOCK Leitungen etc kommen alle zusammen?

I²S läßt dir da Freiheiten. Der Takt (die Taktsignale) kommen vom I²S 
Master, was entweder der Raspi oder der Codec sein kann. DIN und DOUT 
haben immer eine feste Richtung. Im Prinzip vergleichbar mit MISO und 
MOSI bei SPI. Aber ja; wenn du den Raspi die Taktsignale vorgeben läßt, 
kommt der DAC an DOUT + Taktsignale und der ADC an DIN + Taktsignale.

Marlene schrieb:
> Axel S. schrieb:
>> Ein Codec braucht außer den Sample-Daten noch Steuersignale. Das läuft
>> dann typisch über I²C.
>
> Der codec wäre doch der Berry...

Nope. "Codec" bezeichnet das IC, das DAC und ADC enthält. Und meist auch 
noch einen Pegelsteller, Eingangskanalumschalter, Mikrofonvorverstärker, 
Endstufen für Kopfhörer oder gar Lautsprecher etc.

Dieser ganze Krempel muß halt gesteuert werden. Dafür ist dann die extra 
I²C Verbindung. Einfach mal das Datenblatt von bspw. dem WM8960 (weiter 
oben verlinkt) anschauen.


Marlene schrieb:
> ich habe mal ein wenig gegoogled und habe den PCM1808 gefunden

Der sieht auf den ersten Blick wenig geeignet aus. Der Raspi stellt 
keinen master clock für das I²S bereit. Du brauchst entweder einen 
Baustein, der den per PLL selber aus dem Bit-Takt (BCLK, SCLK) erzeugen 
kann (der bereits genannte PCM5102 kann das, der PCM1803 auch) - oder du 
mußt alle Taktsignale extern erzeugen und schaltest den Raspi auf I²S 
Slave.

Außerdem: wenn du mit Raspian o.ä. weitermachen willst, brauchst du auch 
ein Kernelmodul. Das wirst du kaum selber schreiben wollen. Schau dich 
also um, was es schon gibt.

von Marlene (Gast)


Lesenswert?

Axel S. schrieb:
> Marlene schrieb:
>> Analog - > Analog multipleer - > ADC I2S-> Berry I2S - > DAC I2S - >
>> Endstufe
>
> Das könnte man so machen. Aber es ergibt keinen Sinn. Das ist dann
> einfach nur eine verkomplizierte Variante von
>
> Analog -> Endstufe

Nicht ganz, denn dadurch das dass Audiosignal durch den Berry läuft kann 
ich dieses auf dem Berry noch verarbeiten bevor ich es dann wieder an 
die Endstufen weiter gebe....

Also klar könnte man das alles nun selber aufbauen und auf den Berry 
verzichten aber.. nunja.. ich bin so ein wenig Linux verwöhnt und.. der 
Berry hat ja nunmal einiges an Vorteilen...

Also im Prinzip habe ich nichts anderes vor was es schon gibt.. nur 
anders denke ich mal.. hab nicht so intensiv geschaut..

also..

4 Audio Input => Analog Multiplexer => ADC I2S => Berry

Hier kann ich dann alles machen was ich will.. Equilizer usw...

Berry => DAC I2S => (hier weiss ich gerade nicht weiter) => TDA 
Endstufen


Warum der Berry? Naja.. erbringt mir alles noch nebenbei mit. WLAN, 
Bluetooth (A2DP) etc. Gleichzeitig kann ich noch Raspbian nutzen (Linux) 
und ja.. also einige Vorteile (zumindest für mich persönlich).

Zuerst dachte ich daran einfach die Klinke (Audio) auf ein Relai zu 
legen.. Das gleiche mit den Audioinputs und diese dann einfach auf dem 
TDAs zu schalten...

Dann habe ich auf Analog Multiplexer umgebastelt.. Da das Signal jedoch 
dann direkt an die TDAs geht habe ich kein EQ. Lautstärke usw.. Dies 
müsste ich dann mit Potis regeln...

Diese Sachen würden mir dann nur bei z.b. Internetradio oder A2DP zur 
Verfügung stehen...

Also musste ich mich nun erstmalig mit "digitalem" Audio auseinander 
setzen daher die Fragen... Sorry wenn das vielleicht etwas nervt.


Ja, also das mit dem SCK ist mir auch schon aufgefallen. Als ich das 
ganze am berry anschließen wollte.... der hat kein SCK für I2S.. wie du 
aber auch sagtest hat der PCM5102 dies aber.. Somit habe ich nun den 
PCM5102 und dem PCM1808 zusammen gelegt und den PCM5102 als Master 
eingestellt.

Nun muss ich nur noch schauen wo ich beim Raspberry den SCK anlegen 
muss.

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.