Rádio FM no Arduino com o módulo TEA5767

Se você curte rádio FM, vai gostar desse módulo para escutar rádio FM no Arduino: o módulo Rádio FM Stereo TEA5767, que eu usei para montar o circuito do post de hoje.

Módulo Rádio FM TEA5767

Esse módulo se caracteriza pelo baixo consumo de energia, e sintoniza a frequência FM de 76 à 108 MHz. Possui dois conectores P2 (3.5mm), um para ligação da antena, e outro para conexão de alto-falantes.

O módulo rádio FM stereo TEA5767 aceita alimentação de 5V, e é controlado pelo CI TEA5767 (datasheet). A comunicação com o Arduino é feita pela interface I2C, utilizando apenas dois pinos.

No Arduino Uno, os pinos da interface I2C são os pinos analógicos 4 (SDA), e 5 (SCL). No Arduino Mega, são os pinos 20 (SDA) e 21 (SCL).

Circuito Rádio FM Arduino com o TEA5767

Para testar esse módulo, vamos montar um rádio FM com o seguinte material:

Infelizmente esse módulo não tem controle de volume, mas você pode ligar a saída de áudio à um amplificador ou criar um controle de volume simples usando potenciômetro. Apenas para testes, utilize um fone de ouvido comum ou algum sistema de alto-falantes com conector P2.

Ligue os componentes conforme o esquema abaixo. Para quem não está familiarizado com o uso do módulo I2C com Arduino, recomendo a leitura do tutorial Como utilizar o módulo I2C com display LCD:

Para o programa vamos utilizar as bibliotecas LiquidCrystal I2C e TEA5767, que vamos instalar usando a IDE do Arduino.

Começamos pela TEA5767. Entre na IDE do Arduino, e depois no menu Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas.

Na janela do Gerenciador de Bibliotecas, procure por tea5767 e instale a biblioteca ArduinoTEA5767 by Simon Monk, conforme a imagem abaixo:

Faça a mesma coisa para a biblioteca do display LCD I2C, a LiquidCrystal I2c. No Gerenciador de Bibliotecas, procure por liquidcristal_I2c e instale a biblioteca LiquidCrystal I2C by Frank de Brabander:

Dúvidas na instalação da biblioteca? Confira o post Como instalar uma biblioteca na IDE Arduino.

No programa, vamos ler o valor do potenciômetro ligado à porta analógica A0 e converter o valor lido para uma frequência entre 87,5 e 108. Essa frequência é usada para sintonizar o rádio, por meio do comando radio.setFrequency() na linha 47 do programa.

//Programa: Radio FM com modulo TEA5767
//Autor: Arduino e Cia

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

TEA5767Radio radio = TEA5767Radio();

double frequencia = 87.5;
double frequencia_ant = 87.5;

LiquidCrystal_I2C lcd(0x27, 16,2);

void setup()
{
  Serial.begin(9600);
  Wire.begin();
  //Informacoes iniciais
  lcd.init();
  lcd.setCursor(0, 0);
  lcd.print("Arduino FM Radio");
  Serial.println("Arduino FM Radio ");
}

void loop()
{
  //Le as informacoes do potenciometro
  int valor_pot = analogRead(A0);

  //Calcula a nova frequencia
  frequencia = ((double)valor_pot * (108.0 - 87.5)) / 1024.0 + 87.5;
  frequencia = ((int)(frequencia * 10)) / 10.0;

  //Caso a frequencia seja alterada, efetua a mudanca e
  //mostra as novas informacoes no display
  if (frequencia_ant != frequencia)
  {
    lcd.setCursor(0, 1);
    lcd.print("Freq: ");
    lcd.setCursor(6, 1);
    lcd.print("     MHz");
    lcd.setCursor(6, 1);
    lcd.print(frequencia, 1);
    Serial.print("Frequencia: ");
    Serial.println(frequencia);
    radio.setFrequency(frequencia);
    frequencia_ant = frequencia;
  }
}

Cada vez que o potenciômetro é acionado, o rádio é sintonizado na nova frequência e os valores são atualizados tanto no display LCD como no serial monitor.

Para o controle da sintonia, você também pode utilizar botões (push-button, por exemplo), ou até mesmo um encoder.

Gostou? Confira outros posts com Arduino aqui mesmo no Arduino e Cia!

5/5 - (2 votos)

Related posts

Semáforo com Arduino e Led Endereçável WS2812B RGB

by Arduino e Cia
9 anos ago

NewTone – Alternativa à biblioteca tone do Arduino

by Arduino e Cia
11 anos ago

Como usar módulo cartão micro SD Arduino

by Arduino e Cia
5 anos ago
Sair da versão mobile