mardi 14 juin 2016

Récepteur radio FM RDA5807 et Arduino

Aujourd'hui, nous allons "fabriquer" un récepteur radio FM.  Pourquoi j'écris "fabriquer" avec des guillemets?  Parce que, plutôt que construire notre circuit à partir de composants individuels (transistors, condensateurs, etc), nous allons utiliser un module RDA5807 spécialement conçu à cette fin:  le défi consiste donc à envoyer des instructions à ce module au moyen d'un microcontrôleur.



Breakout RDA5807

Le circuit intégré RDA5807 constitue à lui seul un récepteur radio presque complet:  il s'agit de l'alimenter, de lui envoyer des instructions par le protocole i2C (pour sélectionner la fréquence de réception, changer le volume, booster les basses,etc) et d'y brancher un casque d'écoute et une antenne, et voilà:  votre récepteur FM est fonctionnel.

Il s'agit d'un circuit intégré prenant la forme d'un petit carré dont les côtés mesurent environ 3 mm: pas question de souder ça moi-même!  En échange d'une poignée de petite monnaie, je me suis procuré sur eBay un breakout comportant déjà le circuit intégré ainsi qu'un quartz de 33 MHz. Attention:  ce breakout (portant la mention "RRD-102 ver 2.01"), également de forme carrée, ne mesure que 1 cm de côté. Ses 10 connecteurs sont trop rapprochés pour pouvoir être directement utilisés sur une breadboard, et vous devrez donc faire preuve d'une certaine dextérité pour effectuer les soudures nécessaires (en ce qui me concerne, ce fut l'étape la plus compliquée de tout le projet).

Connexions

Le breakout est tellement petit qu'il ne comporte même pas l'espace nécessaire à l'identification de ses connecteurs.  Un peu de recherche nous permet d'obtenir les informations suivantes:

  • SDA (Serial Data) s'occupe de l'échange de données avec le microcontrôleur, par le protocole i2c:  nous la branchons à la pin A4 de l'Arduino Uno (si vous utilisez un autre modèle d'Arduino, comme le Mega ou le Leonardo, vérifiez quel est le numéro de la pin pour la communication i2c).
  • SCK (Serial Clock) assure la bonne synchronisation pendant la communication i2c:  nous la branchons à la pin A5 de l'Arduino Uno (encore une fois, ça peut être une autre pin si votre Arduino n'est pas un Uno).
  • NC (Not connected):  Apparemment, les connecteurs 3, 4 et 9 ne servent à rien!
  • Vcc:  Pour alimenter notre module, ce connecteur doit être branché à la sortie 3,3 V de l'Arduino.
  • GND est branché au GND de l'Arduino.
  • LOUT est la sortie audio du côté gauche.  Vous pouvez y brancher un casque d'écoute de 32 Ω sans autre amplification.
  • ROUT est la sortie audio du côté droit.
  • ANT sert à brancher une antenne.  Je n'y a rien branché, et la réception était excellente, malgré tout.
Comme vous pouvez le constater sur le schéma, j'ai ajouté, entre les sorties audio et le casque d'écoute, un condensateur de découplage et une résistance.  Le condensateur permet de bloquer toute composante continue superposée au signal audio, alors que la résistance évite qu'un courant trop fort ne circule.  J'ai utilisé des résistances de 100 Ω et des condensateurs de 4,7 µF.  Ceci dit, mon circuit fonctionnait tout aussi bien sans la présence des résistances et des condensateurs.


Bibliothèque Radio

Matthias Hertel a conçu une bibliothèque qui facilite l'utilisation des principaux modules de réception FM:  en plus du RDA5807, la bibliothèque supporte également le TEA5767, le SI4703 et le SI4705. Télécharger la bibliothèque.

Une fois la bibliothèque installée, on peu faire un test rapide de notre module radio (et de nos délicates soudures!) en utilisant l'exemple "Test RDA5807M" fourni avec la bibliothèque.


Avant de télécharger le sketch dans votre carte Arduino, prenez soin de remplacer la fréquence de 8930 (89,30 MHz) par une fréquence correspondant à une station de radio facile à capter là où vous êtes.


Le sketch est très simple, mais il permet de constater comment sélectionner la fréquence de réception (setBandFrequency), régler le volume (setVolume), mettre en sourdine (setMute), etc.

Dans mon cas, ce fut la réception parfaite, dès le premier essai.

D'autres exemples fournis avec la bibliothèque permettent de fabriquer des récepteurs plus sophistiqués, avec affichage LCD, etc.


Yves Pelletier   (TwitterFacebook)


4 commentaires:

  1. peut on utilisée la même méthode pour la Grove 107020006

    RépondreSupprimer
  2. Bonjour je suis entrain de faire ce projet. J'aimerais piloter la fréquence avec un potentiométre c'est possible ?
    Merci d'avance 😁

    RépondreSupprimer
    Réponses
    1. Oui, il s'agit de remplacer la constante FIX_STATION par une variable dont la valeur dépend du potentiomètre.

      Supprimer
  3. Bonjour, quel appareil acheter pour se procurer un tel récepteur ? Savez-vous s'il est possible d'en acheter un directement ?

    RépondreSupprimer