jeudi 4 août 2022

Jouer de la musique (fichiers WAV) avec un Raspberry Pi Pico et un décodeur I2S (micropython)

Dans cet article, nous utilisons un Rasbperry Pi Pico programmé en micropython et un décodeur I2S UDA1334A pour jouer la musique stockée sous forme de fichiers .wav sur une carte SD.


Module I2S

I2S est le nom d'un protocole de communication série permettant de connecter entre eux des appareils audio numériques. Un décodeur I2S est un convertisseur numérique-analogique: il produit un signal analogique audio à partir des informations numériques que lui envoie le Raspberry Pi Pico

J'ai utilisé le décodeur I2S stéréo UDA1334A qui était fabriqué par Adafruit, mais qui ne l'est plus. Adafruit l'a remplacé par un nouveau modèle basé sur le MAX98357A, et il existe d'autres modules du même genre (basés sur le PCM5102). En principe, vous devriez obtenir des bons résultats avec tous ces modules, mais moi je n'ai testé que l'UDA1334A d'Adafruit.


Bibliothèques wavplayer.py et sdcard.py

Mike Teachman a placé sur github de nombreux exemples d'utilisation du I2S en micropython.  Dans le répertoire "examples", vous trouverez un script qui génère un simple signal sinusoïdal (particulièrement utile pour vérifier les connexions du module I2S et s'assurer qu'il fonctionne correctement), d'autres qui jouent un fichier .wav enregistré en mémoire flash ou sur une carte SD, etc.

Pour exécuter un fichier audio en format .wav, nous devons copier le fichier wavplayer.py de Mike Teachman dans la mémoire flash du Raspberry Pi Pico. Puisque les fichiers .wav sont souvent volumineux, nous aurons également besoin du pilote sdcard.py.


Connexions

J'ai utilisé les connexions proposées par Mike Teachman.

Connexions du module décodeur I2S:

  • Broche VIN du module I2S : Sortie 3,3 V du Raspberry Pi Pico
  • Broche GND du module I2S: Broche GND du Raspberry Pi Pico
  • Broche BCLK du module I2S: Broche GP16 du Raspberry Pi Pico
  • Broche WSEL du module I2S: Broche GP17 du Raspberry Pi Pico
  • Broche DIN du module I2S: Broche GP18 du Raspberry Pi Pico

(les autres broches du décodeur I2S peuvent être laissées déconnectées)

Connexions du module lecteur de carte SD:

  • GND du lecteur SD: Broche GND du Raspberry Pi Pico
  • +3.3 du lecteur SD: Sortie 3,3 V du Raspberry Pi Pico
  • Broche SCK du lecteur SD: broche GP14 du Raspberry Pi Pico
  • Broche MOSI du lecteur SD: broche GP15 du Raspberry Pi Pico
  • Broche MISO du lecteur SD: broche GP12 du Raspberry Pi Pico
  • Broche CS du lecteur SD: broche GP13 du Raspberry Pi Pico


Script

Voici un script qui joue l'un après l'autre tous les fichiers .wav enregistrés à la racine de la carte SD (avant de l'utiliser, il faut évidemment avoir préalablement enregistré quelques fichiers en format .wav sur la carte). Vous pouvez écouter le résultat en branchant un casque d'écoute à la sortie jack du module I2S.

-

-

Mais pas de mp3?

Tout ceci fonctionne très bien, mais je préférerais pouvoir jouer de la musique en format mp3: un fichier wav, ça prend beaucoup de place! Malheureusement, ça ne semble pas possible pour l'instant en Micropython.  CircuitPython, en revanche, supporte le décodage du format mp3; c'est assez tentant d'aller faire quelques essais de ce côté...


À lire également:

Yves Pelletier (TwitterFacebook)

 

Aucun commentaire:

Enregistrer un commentaire