Audio pwm raspberry pi zero 2W

bonjour, j’essaie de sortir un son du raspberry pi zero 2w
j’ai suivi les tutos :

j’ai ajouté :

dtoverlay=pwm-2chan,pin=18,func=2,pin2=13,func2=4

dans le fichier /boot/firmware/config.text

la commande :

raspi-gpio get

renvoie :

GPIO 13: level=0 alt=0 func=PWM1

GPIO 18: level=0 alt=5 func=PWM0

cependant il ne sort aucun son.
sudo alsamixer ne trouve qu’un seul device : vc4-hdmi et affiche :

this sound device does not have any controls

la commande

aplay -l 

renvoie :

**** List of PLAYBACK Hardware Devices ****
card 0: vc4hdmi [vc4-hdmi], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0

j’ai ajouté :

dtoverlay=audremap

aplay -l

renvoie :

**** List of PLAYBACK Hardware Devices ****
card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 1: vc4hdmi [vc4-hdmi], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0

mais toujours aucun son avec :

sudo aplay -Dhw:0 test.wav

La sortie ANALOG sur le GPIO n’est pas possible selon ma précédente recherche. Les GPIO concerné sont « out » du 40pins présent.

Il est possible de le faire via une sortie « numérique »’ il faut alors passer le signal dans un module qui fera la conversion vers le ANALOG.

Ceci dit, c’est selon ma recherche voila 4-5 ans avec un RPi 0 v1.

regarde les tutos sur le raspberry pi zero 2W
c’est pas de l’analogique mais du PWM sur les gpio 13 et 18

https://wiki.recalbox.com/fr/tutorials/audio/analog-audio-output-on-pi-zero

Mais, si vous lisez attentivement, il utilise le PWM sur les GPIO 40 et 45 qui ne sont pas mis en évidence sur le Pi Zero.

La solution consiste à se positionner sur PWM0 sur GPIO 18 (ALT5) et PWM1 sur GPIO 13 (ALT0) ou GPIO 19 (ALT5) et à créer son propre circuit de filtrage.

C’est ce que je disais, ce n’est pas du analog, il faut le convertir via un montage.

Vous pouvez tester si cela fonctionne sans créer le circuit de filtrage. Vous pouvez connecter un haut-parleur de casque directement entre la broche PWM et une masse comme indiqué dans la figure suivante.

Il devrait fonctionner, mais le son peut avoir des défauts.

Il faut que le volume soit a 100% et produire un son très « présent » et continue. tu va avoir des petit crépitement dans le meilleur des cas.

Il faut une amplification par la suite, ce qui indique que la source ne sera pas très forte.

Après dépend des écouteurs et du matériel, avec ds écouteur de basse qualité, la plage de réponse est faible, alors selon le son, malgré tes tests, tu peux ne pas entendre.

j’ai deja un ampli et j’ai mis un filtre passe bas RC.
rien ne sort

achète une carte son usb 7€ et pas de prise de tete sinon tu trouve des dac a 10€
perso j ai acheté les 2 qui marche nickel mais dont je ne sert pas puisque je passe par une carte edp qui prend le son sur hdmi et le ressort sur un jack 3.5 mm.

3.40€

https://www.reichelt.com/fr/fr/shop/produit/raspberry_pi_shield_-_hifiberry_dac_zero-191039?country=fr&CCTYPE=private&LANGUAGE=fr

vache sa a flambé le tarif

j’ai réussi à le faire fonctionner mais c’est pas clair :

j’ai reformaté la carte SD

j’ai ajouté :

dtoverlay=pwm-2chan,pin=18,func=2,pin2=13,func2=4
dtoverlay=audremap

dans /boot/firmware/config.txt

aplay -l

renvoie :

**** List of PLAYBACK Hardware Devices ****
card 0: vc4hdmi [vc4-hdmi], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7

sudo raspi-gpio get renvoie :

GPIO 12: level=0 alt=0 func=PWM0
GPIO 13: level=1 alt=0 func=PWM1

Ca c’est bizarre, car normalement je devrais avoir GPIO18 et pas GPIO12

j’ai ajouté :

defaults.pcm.card 1 
defaults.ctl.card 1

dans /etc/asound.conf
pour sélectionner par défaut la card1 dans pulseaudio.
Au final je peux ecouter des fichiers mp3

Apparemment la combinaison 12,18 est incompatible avec audremap. C’est soit 12,13 soit 18,19.
ce qui explique le résultat :

GPIO 12: level=0 alt=0 func=PWM0
GPIO 13: level=1 alt=0 func=PWM1

au final ça fonctionne qd même, mais je pense qu’il faut plutôt écrire :

dtoverlay=pwm-2chan,pin=12,func=4,pin2=13,func2=4

dans le fichier /boot/firmware/config.text

@jeje
j’ai déjà un shield audioshare wm8960.
Ca fonctionne bien, mais c’est pas évident à régler.
Par exemple, j’ai mis bcp de temps à trouver comment faire du mono. toutes les méthodes classiques sont inopérantes. Il faut passer par alsamixer.
En plus c’est pas donné.
Alors qu’avec le built-in PWM c’est gratuit, simple et ça fonctionne bien.
PS : un ampli audio classe D ça coûte 3.5 €

Bizarre, mois c’est le contraire, j’ai eu plus de facilité avec ce chapeau Waveshare et un autre que j’ai pas le nom sous la main, mais basé sur la même puce), à l’époque, ont m’indiquait que ce n’était pas possible de le faire via le GPIO. Mais il est vrai qu’avec ce module;

  • Les nouveaux OS (bookworm par exemple) prenne mal le pilote
  • Si tu ajoutes autre chose, comme un écran GPIO, il peut entrer en conflit, surtout les chapeaux avec écran et boutons.

Mais désactiver le HDMI et n’avoir que le hat audio, permet d’utiliser l’audio facilement sans ajout ou modif, comme par exemple « alsamixer ».

sauf pour le downmix mono