Audio in an Raspberry Zero wie?

Gast #5955737
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
Gast #5955766
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.
#5955782
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.
Gast #5955804
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?
Angehängte Dateien:
Gast #5955812
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.
#5955900
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.
Gast #5955920
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?
Gast #5955986
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.
Gast #5956038
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.
#5956175
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.
Gast #5956197
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren