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.

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:
- Arduino Uno
- Módulo Radio FM TEA5767
- Display LCD 16×2
- Módulo I2C para display LCD
- Potenciômetro 10 K para ajuste da frequência/sintonia
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!