samedi 6 août 2022

Lire des fichiers mp3 avec Raspberry Pi Pico et VS1053 (micropython)

Dans un récent article sur l'utilisation d'un module I2S, je déplorais que le décodage du format mp3 ne soit pas supporté par le langage micropython pour l'instant. Une solution consiste à déléguer le décodage à un circuit intégré spécialement conçu pour cette tâche, comme le VS1053, qui peut décoder les principaux formats de fichiers musicaux: Ogg Vorbis, MP3, AAC, FLAC, WMA, MIDI...

Dans cet article, j'utilise un Raspberry Pi Pico (programmé en micropython) et un module VS1053 pour faire jouer les fichiers mp3 enregistrés sur une carte SD.


Module VS1053

Mon module VS1053 a été fabriqué par LCSOFT STUDIO et porte la mention "VS1003/1053 MP3 CODEC". Il existe d'autres modules VS1053 différents de celui-ci, mais j'imagine qu'ils sont équivalents. Je crois qu'il existe des modules VS1053 qui comportent un lecteur de carte SD intégré. Dans mon cas, j'ai dû utiliser un lecteur de carte SD en plus du module VS1053.


Connexions

Le module VS1053 et le module de carte SD partagent le même bus SPI.

Connexions du module VS1053:

  • Broche 5 V du module VS1053 : Broche VBUS du Raspberry Pi Pico 
  • Broche DGND du module VS1053: Broche GND du Raspberry Pi Pico
  • Broche MISO du module VS1053: Broche GP4 du Raspberry Pi Pico
  • Broche MOSI du module VS1053: Broche GP7 du Raspberry Pi Pico
  • Broche SCK du module VS1053: Broche GP6 du Raspberry Pi Pico
  • Broche DREQ du module VS1053: Broche GP10 du Raspberry Pi Pico
  • Broche XRST du module VS1053: Broche GP13 du Raspberry Pi Pico
  • Broche XCS du module VS1053: Broche GP12 du Raspberry Pi Pico
  • Broche XDCS du moudle VS1053: Broche GP11 du Raspberry Pi Pico

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 GP6 du Raspberry Pi Pico
  • Broche MOSI du lecteur SD: broche GP7 du Raspberry Pi Pico
  • Broche MISO du lecteur SD: broche GP4 du Raspberry Pi Pico
  • Broche CS du lecteur SD: broche GP15 du Raspberry Pi Pico

Bibliothèques

Deux pilotes micropython sont nécessaires pour ce projet: micropython-vs1053 par Peter Hinch, et le pilote officiel pour la carte SD.

Les fichiers sdcard.py et  vs1053_syn.py devront être copiés dans la mémoire flash du Raspberry Pi Pico pour que le script ci-dessous fonctionne correctement.

Script

Voici un script qui exécute tous les fichiers mp3 qui se trouvent sur la carte SD. Comme vous pouvez le constater, il s'agit d'un script très court: les deux bibliothèques font tout le travail pour nous!

-

-

À lire également:

Yves Pelletier (Facebook)


6 commentaires:

  1. Bonjour :-)
    Merci pour enfin ouvrir une solution à la lecture de MP3 à partir du Pico en Microphyton ! Cependant, je ne comprends pas trop l'initialisation du SPI :
    ---------------------------------------------------------------------------
    # initialisation de SPI
    spi = SPI(0, sck=Pin(6), mosi=Pin(7), miso=Pin(4))
    ---------------------------------------------------------------------------
    Alors que (sauf erreur de ma part) dans le schéma, il me semble que "sck" est connecté à la PIN 9 (vert), "mosi" à la PIN 10 (rose) et "miso" à la PIN 6 (bleu).

    RépondreSupprimer
    Réponses
    1. Bonjour!

      Les broches du pico ne sont pas numérotées de cette façon. La première broche, en haut à gauche, est GP0. De plus, la 3e et la 8e sont des GND.

      Donc la 6e broche est GP4, la 9e est GP6 et la 10e est GP7.

      Supprimer
    2. Ah ouiiii !!! Dans le programme, il s'agit des n° des GPIO, pas des n° des PIN ! Information très utile !!! Je viens du monde Arduino : je commence mon premier projet sur un Pico :-)

      Supprimer
  2. Bonsoir, suite à une fabrication du "commlock"de cosmos 1999, je suis tombé sur votre blog car je souhaite au clic sur une touche faire jouer un son défini. Dans votre exemple vous indiquez que les sons "sont joués l'un après l'autre". Savez-vous quelle serait la modification à faire pour ne les jouer qu'au "clic" ? En vous remerciant.

    RépondreSupprimer