Forum: Mikrocontroller und Digitale Elektronik I2S am Raspberry Pi 4 ?


von Kilian (Gast)


Lesenswert?

Hallo zusammen,

ich würde für ein Projekt gerne einfach zunächst einmal mit meinem RPi 
4B ein I2s-Signal erzeugen und an einen PCM5102A anschließen. (eBay: 
https://www.ebay.com/itm/201980418950 )

Quasi einfach mal etwas hören. Würde für den Anfang völlig reichen.

Allerdings, jetzt wo ich die Software für das I2S-Signal schon mal 
schreiben wollte (in Python), ist mir aufgefallen, dass das anscheinend 
gar nicht so leicht ist, damit ein I2S-Signal auf dem RPi zu erzeugen. 
Es gibt wohl so etwas wie CircuitPython, audiobusio, Blinka, wobei 
insbesondere das audiobusio von CircuitPython das zu tun scheint, was 
ich machen möchte. Allerdings funktioniert trotz Blinka-Installation der 
Import von audiobusio nicht, und es scheint irgendwie vor allem für die 
ganz kleinen RPis vorgesehen zu sein (z. B. der Pico, siehe 
https://circuitpython.readthedocs.io/en/latest/shared-bindings/support_matrix.html) 
... aber das kann doch nicht sein, das muss doch auch der RPi 4 können?

Ich möchte nicht den Systemsound vom Raspberry generell über I2S 
ausgeben, dafür gibt es auch Tutorials, aber das ist nicht das, was ich 
machen will. Ich möchte gerne in Python "live" den I2S-"Stream" 
erzeugen, völlig  unabhängig vom Systemsound etc. Das kann doch nicht so 
schwer sein!

Kann mir jemand sagen, wie ich das zum laufen bekomme, oder wieso das 
nur für RPi Pico/Zero/... vorgesehen ist?

Danke!! :)

von Franz (Gast)


Lesenswert?

I2S ist für Audiocodecs Standard.
Eventuell gibrmt es einen alsa Treiber, den man nur anpassen muss?
Du musst das Device nicht als Default konfigurieren.

von Gerald M. (gerald_m17)


Lesenswert?

Ich kenne den Raspberry 4 nicht im Detail.
Aber auf die Idee mit einem Betriebssystem in Python etwas zu schreiben, 
was mit mehreren kHz und in Echtzeit ausgegeben wird, kommen bei uns in 
der Firma nur "PC-Programmierer".

Falls irgendwo ein Buffer ist den du oft genug befüllen kannst nehme ich 
das natürlich zurück. Wie gesagt, kenne mich nicht im Detail mit dem 
RPI4 aus.

von Heinz (Gast)


Lesenswert?

Kilian schrieb:
> Ich möchte gerne in Python "live" den I2S-"Stream"
> erzeugen, völlig  unabhängig vom Systemsound

Warum willst du denn direkt auf I2S zugreifen?

von Baendiger (Gast)


Lesenswert?

Kilian schrieb:
> Allerdings funktioniert trotz Blinka-Installation der Import von
> audiobusio nicht

Viel zu ungenau - konkrete Fehlermeldung bitte

Kilian schrieb:
> aber das kann doch nicht sein, das muss doch auch der RPi 4 können?

CircuitPython ist für Mikrocontroller und benutzt einen anderen 
Interpreter als das klassische für'n Desktop vorgesehende Python auf dem 
Raspberry Pi 4. Nach kurzer Recherche 
(https://learn.adafruit.com/circuitpython-on-raspberrypi-linux/circuitpython-raspi) 
scheint es aber tatsächlich möglich, dass zum Laufen zu bekommen

Kilian schrieb:
> Kann mir jemand sagen, wie ich das zum laufen bekomme, oder wieso das
> nur für RPi Pico/Zero/... vorgesehen ist?

Nicht direkt, aber guck dir Mal den Link von oben an. Der Zero sollte 
mehr oder weniger gleich zum Pi 4 sein - nur der Pico ist was ganz 
anderes und zur Nutzung mit CircuitPython vorgesehen. Kennst du das 
Beispiel für'n normalen Pi: 
https://learn.adafruit.com/adafruit-max98357-i2s-class-d-mono-amp/audio-with-pygame

von Jobst M. (jobstens-de)


Lesenswert?

Moin!

Hifi-Berry macht doch genau das. Also einfach installieren und dann 
kannst Du Musik hören.
Pläne dazu bekommt man ja auch, dann weißt Du, wie Du es verbinden 
musst.

Mit dem RasPi-Standard Python wird das auf jeden Fall nix. Die 
Ausführung ist einfach zu lahm. Selbst mit dem 4B.
Selbst wenn man es mit Tricks und Kniffen leidlich zum laufen bekommt, 
frisst die Ausführung einen ganzen Kern.

Gruß
Jobst

von Gerald K. (geku)



Lesenswert?

Man kann die PIGPIO Library verwenden:

http://abyz.me.uk/rpi/pigpio/cif.html

Vorteil man brauch keine Rootrechte zum Ausführen der Programme.

: Bearbeitet durch User
von Uwe B. (boerge) Benutzerseite


Lesenswert?

Gerald K. schrieb:
> Man kann die PIGPIO Library verwenden:

I2C != I2S

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.