Souhaitant me tester a la domotique , j'ai acheté un petit micro I2S pour faire de mon raspberry pi un assistant vocal ..
Lien vers l'article sur Amazon
J'ai bien trouvé des pages indiquant comment le faire fonctionner, mais toutes celles ci étaient un peu ancienne, tout était présent dans raspbian pour que mon micro fonctionne sauf l'arbre des périphériques.
Cablage :
SCK du micro sur GPIO18 du pi L/R sur la masse (determine le canal gauche /droite dans le fichier son) WS sur GPIO 19 GND sur GND VDD sur 3.3V SO sur GPIO20
Donc le micro en question après différentes recherche, est compatible avec un ICS43432
pi@raspberrypi:/boot $ sudo find /lib/ -name *43432*.ko /lib/modules/4.19.97-v7+/kernel/sound/soc/codecs/snd-soc-ics43432.ko
Voici le fichier dts que j'ai utilisé :
/dts-v1/; /plugin/; / { compatible = "brcm,bcm2708"; fragment@0 { target = <&i2s>; __overlay__ { status = "okay"; }; }; fragment@1 { target-path = "/"; __overlay__ { ics43432_codec: ics43432-codec { #sound-dai-cells = <0>; compatible = "invensense,ics43432"; /* IOVDD-supply = <&supply>;*/ status = "okay"; }; }; }; fragment@2 { target = <&sound>; sound_overlay: __overlay__ { compatible = "simple-audio-card"; simple-audio-card,format = "i2s"; simple-audio-card,name = "ics43432"; simple-audio-card,bitclock-slave = <&dailink0_slave>; simple-audio-card,frame-slave = <&dailink0_slave>; simple-audio-card,widgets = "Microphone", "Microphone Jack"; simple-audio-card,routing = "PDM_DAT", "Microphone Jack"; status = "okay"; simple-audio-card,cpu { sound-dai = <&i2s>; }; dailink0_slave: simple-audio-card,codec { sound-dai = <&ics43432_codec>; }; }; }; __overrides__ { card-name = <&sound_overlay>,"simple-audio-card,name"; }; };
Ce fichier est adapté d'un overlay de adau7002 qui soit dit en passant fait aussi tres bien fonctionner mon micro.. Plus qu'a compiler le dts en binaire et copier le binaire au bon endroit ...
> dtc -@ -I dts -O dtb -o ics.dtbo ics.dts > sudo cp ics.dtbo /boot/overlays/
Ensuite bien sur, il faut activer tout ca, dans config.txt, ajouter :
dtoverlay=ics,alsamicro
Penser a activer le module I2S en décommentant dans ce même fichier :
dtparam=i2s=on
un petit reboot du pi, et ....
pi@raspberrypi:/boot $ arecord -l **** Liste des Périphériques Matériels CAPTURE **** carte 1: ics43432 [ics43432], périphérique 0: bcm2835-i2s-ics43432-hifi ics43432-hifi-0 [bcm2835-i2s-ics43432-hifi ics43432-hifi-0] Sous-périphériques: 1/1 Sous-périphérique #0: subdevice #0