Confectionner une radio FM avec Arduino et le module TEA5767.

Confectionner une radio FM avec Arduino et le module TEA5767
Confectionner une radio FM avec Arduino et le module TEA5767

Nous allons fabriquer une radio FM avec le module TEA5767 pour Arduino et on utilisera, en plus, l’écran LCD afin de montrer la fréquence radio que nous écoutons. Pour changer la fréquence, on se servira d’abord du potentiomètre linéaire et après, on utilisera deux boutons: un pour augmenter la fréquence et l’autre pour la diminuer.

Le module TEA5767 est un récepteur de radio FM qu’on peut connecter á la carte Arduino usant le protocole I2C, pour chercher des stations. Ce module n’admet pas le décodage de signaux RDS, la sortie audio ne dispose pas de contrôle de volume et dispose d’une sortie pour écouteurs. Caractéristiques:

  • Alimentation: 5V
  • Intervalle de fréquences: 76 – 108 MHz.
  • Connecteur pour antenne.
  • Connecteur pour écouteurs.
  • Led témoin d’allumage.

Radio FM avec le module TEA 5767 et potentiomètres.

Il est nécessaire:

  • Arduino Uno ou équivalent.
  • Plaque d’essai ou breadboard.
  • Module TEA 5767.
  • Écran LCD de 16×2.
  • 2 potentiomètres linéaires (B10K).
  • Résistance de 10K.
  • Cables.

Schéma:

On connecte le module TEA 5767 á la sortie de 5V de la carte, la communication avec Arduino se réalise à travers de l’interface I2C, utilisant seulement deux pins. Sur la carte Arduino Uno les pins de l’interface sont les pins analogiques 4 (SDA) et 5 (SCL).

Pour le réglage des chaines on utilise le potentiomètre 10K, la broche d’alimentation va à la source d’énergie, la broche GND à la masse et la broche de sortie de données au pin analogique A0.

La connexion de l’ écran LCD peut se réviser dans l’article:Comment relier l’écran LCD à l’Arduino Uno.

Connexion du module Tea 5767 et l'écran LCD à la carte Arduino pour faire une radio FM (potentiomètre).

Code:

On va utiliser les bibliothèques: Wire, LiquidCrystal et TEA5767Radio.

#include <Wire.h>
#include <TEA5767Radio.h>
#include <LiquidCrystal.h>

Nous allons créer les objets radio et lcd.

TEA5767Radio radio = TEA5767Radio();
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

On ajoute deux variables de type double où on gardera la fréquence actuelle et la fréquence antérieur.

double frequence= 87.5;
double frequence_ant = 87.5;

Dans la fonction setup() on initialise le port série et l’écran LCD. On veut montrer le message « Arduino FM Radio » sur la ligne supérieure le l’écran.

void setup(){
  Serial.begin(9600);
  Wire.begin();
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("Arduino FM Radio");
  Serial.println("Arduino FM Radio ");
}

Maintenant il nous reste à lire la valeur du potentiomètre connecté au port A0 et convertir cette valeur à une fréquence entre 87.5 et 108. Cet intervalle est celui qu’on manipulera pour le réglage des chaines usant la consigne: radio.setFrequency(). On configurera tout ceci dans la fonction loop().

void loop(){
  int valeur_pot = analogRead(A0);
  frequence = ((double)valeur_pot * (108.0 - 87.5)) / 1024.0 + 87.5;
  frequence = ((int)(frequence * 10)) / 10.0;
  if (frequence_ant != frequence){
    lcd.setCursor(0, 1);
    lcd.print("Freq: ");
    lcd.setCursor(6, 1);
    lcd.print("     MHz");
    lcd.setCursor(6, 1);
    lcd.print(frequence, 1);
    radio.setFrequency(frequence);
    frequence_ant = frequence;
  }
}

Pour changer de station on vérifie si la valeur de la fréquence antérieur est différente à la valeur actuelle, si c’est vrai, nous changeons de chaîne et la nouvelle valeur s’enregistre dans la variable frequence_ant.

Code complet:

#include <Wire.h>
#include <TEA5767Radio.h>
#include <LiquidCrystal.h>
TEA5767Radio radio;
double frequence = 88.0;
double frequence_ant = 88.0;
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup(){
  Serial.begin(9600);
  Wire.begin();
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("Arduino FM Radio");
  Serial.println("Arduino FM Radio ");
}

void loop(){
  int valeur_pot = analogRead(A0);
  frequence = ((double)valeur_pot * (108.0 - 88.0)) / 1024.0 + 88.0;
  frequence = ((int)(frequence * 10)) / 10.0;
  
  if (frequence_ant != frequence)  {
    lcd.setCursor(0, 1);
    lcd.print("Freq: ");
    lcd.setCursor(6, 1);
    lcd.print("     MHz");
    lcd.setCursor(6, 1);
    lcd.print(frequence, 1);
    Serial.print("frequence: ");
    Serial.println(frequence);
    radio.setFrequency(frequence);
    frequence_ant = frequence;
  }
}

Radio FM avec le module TEA 5767 et boutons-poussoirs.

Pour éviter les valeurs faussées du potentiomètre nous pouvons utiliser deux BP pour régler les chaînes et changer de station.

Radio FM avec le module TEA 5767 et boutons-poussoirs.

Il est nécessaire:

  • Arduino Uno ou équivalent.
  • Plaque d’essai ou breadboard.
  • Module TEA 5767.
  • Deux boutons-poussoirs.
  • Écran LCD 16×2.
  • Potentiomètre linéaire 10K.
  • Trois résistances 10K.
  • Cables.

Schéma:

Le montage est similaire, on change un potentiomètre par les boutons: un connecté au pin digital 2 (pour diminuer la fréquence) et au pin digital 3 (augmenter la fréquence).

Connexion du module Tea 5767 et l'écran LCD à la carte Arduino pour faire une radio FM (boutons).

Code:

#include <TEA5767Radio.h>
#include <LiquidCrystal.h>

TEA5767Radio radio;
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

double frequence = 99.20;
double frequence_ant = 99.20;
double fMin = 87.00;
double fMax = 108.00;

void setup(){
  //Serial.begin(9600);
  Wire.begin();
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print("Arduino FM Radio");
  //Serial.println("Arduino FM Radio ");
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  radio.setFrequency(frequence);
  montrer(frequence);
}

void loop(){
  if (frequence_ant != frequence)  {
    montrer(frequence);
    //Serial.print("frequence_ant: ");
    //Serial.println(frequence_ant); 
    //Serial.print("frequence: ");
    //Serial.println(frequence); 
    radio.setFrequency(frequence);
    frequence_ant = frequence;
  }
  if(digitalRead(2) == LOW){
    soustraire();
    delay(200);
  }  
  if(digitalRead(3) == LOW){
    additionner();
    delay(200);
  }
}
void additionner(){
  if (frequence < fMax){
    frequence = (frequence_ant + 0.1);
  }
}
void soustraire(){
  if (frequence > fMin){
    frequence = (frequence_ant - 0.1);
  }
}
void montrer(double frequence){
  lcd.setCursor(0, 1);
  lcd.print("Freq: ");
  lcd.setCursor(6, 1);
  lcd.print("     MHz");
  lcd.setCursor(6, 1);
  lcd.print(frequence, 1);
}
Articles similaires
Laisser un commentaire