Se você curte rádio FM, vai gostar desse módulo para 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).
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 16x2
- 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 (download) e TEA5767Radio (download). Descompacte o arquivo ZIP e renomeie a pasta LiquidCrystal para LiquidCrystalI2C, copiando-a para a pasta LIBRARIES da IDE do seu Arduino. Renomear a pasta evita que você tenha conflitos com a biblioteca LiquidCrystal que já vem embutida na IDE.
A pasta da biblioteca TEA5767Radio, após ser descompactada, pode ser copiada diretamente para a pasta LIBRARIES da IDE.
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;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | //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, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); void setup() { Serial.begin(9600); Wire.begin(); //Informacoes iniciais lcd.begin (16, 2); 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.
Olá,Como eu poderia fazer para receber a intensidade do sinal no display. Eu vi algo como signal.level.
ResponderExcluirBoa noite,
ExcluirPois é. 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?
ResponderExcluirOi Gustavo,
ExcluirTente 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
ResponderExcluirBoa noite,
ExcluirPode 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?
ResponderExcluirBoa tarde,
ExcluirEssa vou ficar te devendo... :)
Abraço!
Olá! Por acaso você sabe se isso é possível com esse módulo?
ExcluirFalou,
Abraços!!!
amigo estou tendo problemas com a compilação vc pode me ajudar
ResponderExcluirBoa tarde Hugo,
ExcluirVamos lá. O que acontece ?
Sou iniciante... Gostaria de usar o lcd com keypad ao invés do potenciometro.... Tem algum código pra isso?
ResponderExcluirOi Cleyton,
ExcluirNã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?
ResponderExcluirOi Robson,
ExcluirNã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?
ResponderExcluirMontei 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.
ResponderExcluirObrigado.
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.
ResponderExcluirComo ficaria o programa sem o LCD?
ResponderExcluirUtilizando apenas o Arduíno, o módulo e o potenciômetro.
Oi Gustavo,
ExcluirVocê 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
ResponderExcluirposso utilizar arduino Pro Mini nesse projeto?
Oi José,
ExcluirPode sim. Perfeitamente. :)
Abraço!
Adilson