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!