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.
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!
Olá,Como eu poderia fazer para receber a intensidade do sinal no display. Eu vi algo como signal.level.
Boa noite,
Pois é. Eu também vi essa função, mas não consegui fazer funcionar no meu módulo. Não sei se é problema da placa ou alguma limitação da biblioteca.
De qualquer forma, isso também me interessa e caso eu consiga eu posto aqui o resultado. 🙂
Abraço!
Amigão… Onde eu posso comprar esse modulo?
Oi Gustavo,
Tente procurar por tea5767 no Mercado Livre. Apesar que lá eu só vi os CIs para vender, você vai precisar de uma placa para solda-lo.
Abraço!
está dando erro POSITIVE
Boa noite,
Pode me passar a mensagem de erro completa ?
Abraço!
Bom dia amigo, eu gostaria de inverter o projeto e trasnmitir a curta distancia e como uma FM caseira. Você teria algum exemplo de trasmissor FM usando o arduino e seus modulos?
Boa tarde,
Essa vou ficar te devendo… 🙂
Abraço!
Olá! Por acaso você sabe se isso é possível com esse módulo?
Falou,
Abraços!!!
amigo estou tendo problemas com a compilação vc pode me ajudar
Boa tarde Hugo,
Vamos lá. O que acontece ?
Sou iniciante… Gostaria de usar o lcd com keypad ao invés do potenciometro…. Tem algum código pra isso?
Oi Cleyton,
Não tem, mas é uma boa sugestão de post. Vou pesquisar sobre isso.
Abraço e obrigado!
Esse módulo só funciona com o arduino? Será que não tem como fazer um circuito só com esse módulo até mesmo para testes como o módulo mp3 WTV020-SD que não necessita do arduino para funcionar?
Oi Robson,
Não tentei, mas creio que vc tenha que ter um microcontrolador para enviar os comandos para o módulo.
Abraço!
Olá , pessoal do Arduino e Cia, tentei fazer o projeto sugerido pelo Arduino e Cia mas não consegui. Tive problema de compilação. Quando tentava compla aparecia a mensagem: "Erro compilando para a placa Arduino/Genuino Uno.." Copiei o Programa do blog, mas não compilava. Digitei tudo manualmente mas também não compilava. Aparecia estas mesma mensagem de erro. Vocês tem alguma sugestão para resolver isto?
Montei o rádio como descrito, mas o mesmo só capta uma estação, na minha cidade tem quatro estações,mesmo assim com muito chiado, parece que o potenciometro não está funcionando,o LCD só piscando, parece que está procurando estações e não para.
Obrigado.
Fiz o rádio conforme o tutorial,mas as estacoes ficam se sobrepondo umas sobre as outros,ou seja,elas estão "misturando", a freqüência não fica fixa,o potenciômetro funciona muito mal mesmo se euvaproximar a mão perto dele,peço ajuda.
Como ficaria o programa sem o LCD?
Utilizando apenas o Arduíno, o módulo e o potenciômetro.
Oi Gustavo,
Você pode simplesmente fazer tudo como está no post, e não colocar o display. Vai funcionar do mesmo jeito.
Abraço!
Adilson
B.tarde,Adilson
posso utilizar arduino Pro Mini nesse projeto?
Oi José,
Pode sim. Perfeitamente. 🙂
Abraço!
Adilson
montei o radio conforme orientação, mas estações ficam misturando, como se o radio captasse 5 radios ao mesmo tempo.
Fiz o rádio conforme o tutorial,mas as estacoes ficam se sobrepondo umas sobre as outros,ou seja,elas estão "misturando", a freqüência não fica fixa,o potenciômetro funciona muito mal mesmo se euvaproximar a mão perto dele,peço ajuda.
Hola me podrias decir si es de 4 ohm o 8 ohm el parlante y de cuantos watts
Boa noite Steven,
Usei um falante de 8ohms e 2W.
Adilson
Porque não respondem minha dúvida???
Oi Ricardo,
Tudo bem? Desculpe a demora. Problemas na moderação dos comentários, mas vamos lá.
Você ainda está com o problema das estações se sobrepondo?
Abraço!
Adilson
funcionou perfeitamente com o potenciometro agora vou testar com push buttons .
Obrigado pelas dicas.
Carlos Bruni
IFBA Campus Salvador – BA
Tem como ligar esse modulo de Radio FM sem o arduino?
Oi Everton,
Desconheço. A princípio o jeito mais prático de fazer esse módulo funcionar é usando um microcontrolador (não necessariamente um Arduino).
Abraço!
Adilson
Na biblioteca do TEA5767 que você usou tem função de volume, mas não consigo usa-la, você tem certeza que este módulo não tem controle de volume ?
Oi Vinicius!
Sim, lembro que na época que fiz o post essa função não estava ativa. O controle de volume teve que ser feito externamente.
Abraço!
Adilson
Amigo, muito legal seu codigo, funciona perfeito. Vc sabe como faço para suprimir o potenciometro, deixando somente a varredura automatica em looping?
Oi Adriano,
Não implementei isso ainda, mas é uma ideia interessante. Não sei se a biblioteca tem algum recurso pra isso. Vou dar uma olhada.
Abraço!
Adilson
hi ! thanks for share
working perfect bat backlight lcd no camming on
i done light with this line place to void set up to last line
lcd.setBacklight(HIGH); and light display camming on
Oi Vinícius,
o código funcionou bem, mas por que não consigo ouvir as rádios na minha caixinha de som no modo aux?