vendredi 26 mars 2021

ESP32 et VS1003 / VS1053 : écouter la radio sur internet

Grâce à l'internet, il est possible de capter, avec une excellente qualité sonore, des émissions radiophoniques qui proviennent de n'importe quel endroit dans le monde. Dans cet article, j'explore la réception de webradio avec un module ESP32 et un module VS1003 ou VS1053.


Matériel

Fidèle à mon habitude, j'ai programmé le module ESP32 au moyen de l'IDE Arduino. Au besoin, vous pouvez consulter cet article pour plus d'informations sur la façon de procéder.

Le VS1053 de VLSI est un circuit intégré qui a été conçu spécialement pour décoder les principaux formats de fichiers musicaux: Ogg Vorbis, mp3, AAC, WMA, FLAC, MIDI...

Le module VS1053 que j'ai utilisé porte la mention "LCSOFT STUDIO VS1003/1053 MP3  CODEC", mais il existe d'autres modèles, comme par exemple ceux qui sont commercialisés par Sparkfun et par Adafruit.

Une prise jack sur le module VS1053 permet de brancher un casque d'écoute ou des enceintes amplifiée.

Connexions

Le module VS1053 est branché à l'ESP32 de cette façon:

  • Broche 5V du VS1053 : Broche VIN (5V) de l'ESP32
  • Broche DGND du VS1053 : Broche GND de l'ESP32
  • Broche MISO du VS1053 : Broche D19 de l'ESP32
  • Broche MOSI du VS1053 : Broche D23 de l'ESP32
  • Broche SCK du VS1053 : Broche D18 de l'ESP32
  • Broche DREQ du VS1053 : Broche D4 de l'ESP32
  • Broche XRST du VS1053 : Broche EN de l'ESP32
  • Broche XCS du VS1053 : Broche D5 de l'ESP32
  • Broche XDCS du VS1053 : Broche RX2 - D16 de l'ESP32


Installation de la bibliothèque ESP VS1053

J'ai installé la bibliothèque ESP VS1053 mise au point par Baldram.

Sketch

Mon point de départ a été l'exemple WebRadioDemo par Vince Gellar, qui accompagne la bibliothèque de Baldram. J'ai ajouté la possibilité de changer de chaîne et de modifier le volume sonore par l'entremise du moniteur série (pour un produit autonome, il sera facile de remplacer le moniteur série par des boutons, par des encodeurs rotatifs ou par une télécommande infrarouge).

-

-

Dans cet exemple, on peu écouter les émissions en provenance de 7 serveurs différents. On peut passer à la prochaine chaîne en tapant la lettre "n" dans le moniteur série. On augmente le volume sonore en envoyant "+", et on le diminue en envoyant "-".


Vous pouvez évidemment remplacer les stations de webradio utilisées dans ce sketch par d'autres qui correspondent plus à vos intérêts: il est facile de trouver sur internet des répertoires qui permettent de trouver l'adresse des serveurs (comme par exemple celui-ci). Je dois toutefois avouer avoir obtenu des résultats très variables selon la station que je tentais de capter: si le son est à peu près impeccable pour un grand nombre d'émissions, d'autres subissent de fréquentes coupures qui rendent leur écoute assez désagréable, voire carrément impossible.


À lire également


Yves Pelletier (TwitterFacebook)

10 commentaires:

  1. Bonjour ,hormis les 3 broches renseignés dans le programme arduino , comment vous definissez les GPIO pour les autres broches , dans quel fichier ? dans quelle library ?merci d avance Jean.

    RépondreSupprimer
    Réponses
    1. Bonjour.

      18, 19 et 23 sont les broches associées au bus SPI3 de l'ESP32.

      Supprimer
  2. Bonjour, ça marche dès la première compilation !
    BRAVO et merci.
    Serait-il possible de publier une version avec 3 boutons:
    - chaîne suivante
    - volume +
    - volume -

    encore bravo

    RépondreSupprimer
  3. Bonjour,
    je vous remercie pour ce job , mais comme vous j'ai pu observer les fréquences de coupure sur les stations nationales mais je n'en connais pas la cause sauf ceux qui ont le recours au serveur "Icecast" (?)

    RépondreSupprimer
  4. Projet bien sympatique et d'une simplicité extrème, je suis cependant confronté à un problème, comment ajouter un bouton physique qui permet de changer de chaîne..?

    RépondreSupprimer
  5. Bonjour,
    Je viens de réaliser un test rapide avec un ESP32 et ça a fonctionné après quelques tâtonnements au niveau du numéro de port à saisir pour France musique "easy" (c'est le 80).
    Par contre j'ai des horribles craquements audio (environ 4 x par seconde). La modif de la taille du buffer de 64 à 32 ou à 128 n'apporte pas d'amélioration.
    Avez-vous une idée de l'origine du souci ?

    RépondreSupprimer
  6. Bien conçu et super selection de Radio en prime!!! Je congratule sur tout les plans.

    RépondreSupprimer
  7. Estou louco para começar a reproduzir este projeto Parabéns por compartilhar e obrigado."Brasil"

    RépondreSupprimer
  8. Bonjour,
    Très belle réalisation et merci pour le partage.
    Comment et où peut-on trouver la valeur du httpPort ?

    RépondreSupprimer