- Rádio FM em geral trabalhando
- Componentes necessários
- Receptor RDA5807
- Amplificador de áudio
- Diagrama de circuito do receptor Arduino FM
- Explicação do código do rádio Arduino FM
- Trabalho do Arduino FM Radio
Hoje quase todo mundo usa seus telefones celulares para ouvir música, notícias, podcasts, etc. Mas não muito tempo atrás estávamos todos dependendo das rádios FM locais para obter as últimas notícias e músicas. Aos poucos, essas rádios estão perdendo popularidade, mas em emergências quando a internet está desativado, os rádios têm um papel importante na transmissão de informações aos usuários. Os sinais de rádio estão sempre presentes no ar (que são transmitidos pelas estações), e tudo o que precisamos é um circuito receptor FM para capturar esses sinais de rádio e transferi-los para sinais de áudio. Em nossos tutoriais anteriores, também construímos alguns outros transmissores e receptores FM listados abaixo.
- Transmissor FM Raspberry Pi
- Rádio receptor Raspberry Pi FM
- Circuito transmissor FM
- Circuito transmissor FM sem indutor
Neste tutorial, vamos construir um receptor Arduino FM e adicioná-lo ao nosso arsenal de projeto. Usaremos o RDA5807 FM Receiver IC com Arduino e o programaremos para tocar qualquer estação de rádio FM que possa ser sintonizada pelo usuário com um potenciômetro. Também usaremos um amplificador de áudio junto com o circuito para controlar o volume de saída do nosso rádio Arduino FM, parece interessante, certo? Então vamos começar.
Rádio FM em geral trabalhando
As estações de rádio convertem sinais elétricos em sinais de rádio, e esses sinais devem ser modulados antes de serem transmitidos pela antena. Existem dois métodos em que um sinal pode ser modulado: AM e FM. Como o nome indica, a modulação de amplitude (AM) modula a amplitude antes de transmitir um sinal, ao passo que, na modulação de frequência (FM), a frequência do sinal é modulada antes da transmissão pela antena. Nas estações de rádio, eles usam modulação de frequência para modular o sinal e, em seguida, transmitir os dados. Agora, tudo o que precisamos construir é um receptor que possa ser sintonizado em certas frequências e receber esses sinais e, posteriormente, converter esses sinais elétricos em sinais de áudio. Vamos usar oMódulo receptor RDA5807 FM neste projeto, que simplifica nosso circuito.
Componentes necessários
- Arduino Nano
- Receptor RDA5807
- Amplificador de áudio
- Fios de conexão
- Pote - 100K
- Perf Board
Receptor RDA5807
O RDA5807 é um módulo sintonizador de rádio estéreo FM de chip único com um sintetizador totalmente integrado. O módulo suporta a banda de frequência mundial de 50 - 115 MHz, controle de volume e mudo, de-ênfase programável (50 / 75us), indicador de intensidade de sinal de recepção e SNR, oscilador de cristal de 32,768 KHz, controle de ganho automático digital, etc. diagrama de blocos do sintonizador RDA5807M.
Possui arquitetura digital de baixa IF e integra um amplificador de baixo ruído (LNA), que suporta a banda de transmissão FM (50 a 115 MHz), um controle de ganho programável (PGA), um conversor analógico-digital de alta resolução e conversores digital-analógico (DACs) de alta fidelidade. O limitador impede a sobrecarga e limita o número de produtos de intermodulação criados por canais adjacentes. O PGA amplifica o sinal de saída do mixer e depois é digitalizado com ADCs. O núcleo DSP gerencia a seleção de canal, demodulação FM, decodificador MPX estéreo e sinal de saída de áudio. O diagrama de pinagem RDA5807 para o IC é fornecido abaixo.
O módulo funciona com alimentação de 1,8 - 3,3V. Ao voltar para o repouso e a interface de controle selecionada, o módulo se reinicializa quando o VIO é energizado e também suporta o soft reset pelo gatilho do bit1 de 0 a 1 do endereço 02H. O módulo usa comunicação I2C para se comunicar com o MCU e a interface começa com a condição inicial, um byte de comando e bytes de dados. O RDA5807 tem 13 registradores de 16 bits, cada um executando uma função específica. Os endereços de registro começam com 00H, que é atribuído ao ID do chip e termina com 0FH. Em todos os 13 registradores, alguns bits são reservados enquanto outros são R / W. Cada registro executa tarefas como variação de volume, mudança de canais, etc., dependendo dos bits atribuídos a eles.
Não podemos usar o módulo diretamente ao conectá-lo a um circuito, pois os pinos são fechados por. Então, eu usei uma placa de desempenho e alguns pinos machos e soldou cada pino do módulo a cada pino macho como mostrado na foto abaixo.
Amplificador de áudio
Um amplificador de áudio é um dispositivo eletrônico que amplifica sinais de áudio eletrônicos de baixa potência a um nível em que é alto o suficiente para acionar alto-falantes ou fones de ouvido. Construímos um amplificador de áudio simples usando LM386, o circuito para o mesmo é mostrado abaixo e você também pode verificar o link para saber mais sobre este circuito, verifique também outros circuitos de amplificador de áudio.
Diagrama de circuito do receptor Arduino FM
Usamos dois potenciômetros para sintonizar a banda FM e controlar o volume do amplificador de áudio. Para alterar o volume que pode variar tanto o pote, que está ligado em entre 1 e 8 th pino de LM386 ou o vaso, o qual está ligado ao pino 3 do LM386. A imagem abaixo mostra o diagrama de circuito completo do Arduino FM Radio.
Fiz pequenas mudanças no amplificador. Em vez de usar dois potenciômetros no amplificador, usei apenas um. Troquei o potenciômetro, que serve para trocar o Ganho, por um resistor. Portanto, agora nosso projeto tem dois potenciômetros, um para ajustar e outro para alterar o volume. O potenciômetro, que é usado para sintonizar o canal, é conectado ao Arduino nano. O pino central do potenciômetro é conectado ao pino A0 do Arduino nano, e qualquer um dos dois pinos restantes é conectado ao 5V e o outro é conectado ao GND. Outro potenciômetro é usado para controlar o volume do rádio e é conectado conforme mostrado na fig.
Os pinos A4 e A5 do Arduino são conectados aos pinos SDA e SCL do RDA5807M. lembre-se de que o módulo receptor funciona apenas em 3,3V. Portanto, conecte o pino 3v3 do Nano ao pino VCC do módulo receptor. Depois que as conexões foram feitas, minha configuração ficou assim
Explicação do código do rádio Arduino FM
O código inicializará o módulo receptor e, em seguida, definirá o canal com a frequência predefinida. Quando o valor lido pelo nano no pino A0 muda (mudando o potenciômetro), a frequência muda, o que por sua vez muda o canal. O código completo é fornecido no final da página.
Começamos nosso programa adicionando a biblioteca de fios necessária para comunicação com o RDA5807. Então, na variável “canal” definimos o valor do canal. Sempre que o rádio for iniciado, ele será sintonizado neste canal automaticamente.
#incluir
A seguir, carregaremos bytes para cada registro em nosso RDA5807 IC para definir nossa configuração inicial. Neste ponto, estamos reiniciando o receptor.
uint8_t boot_config = {/ * register 0x02 * / 0b11000001, 0b00000011, / * register 0x03 * / 0b00000000, 0b00000000, / * register 0x04 * / 0b00001010, 0b00000000, / * register 0x05 * / 0b10001000, 0b00001111, / * register 0x06 * / 0b00000000, 0b00000000, / * registro 0x07 * / 0b01000010, 0b00000010,};
Depois de redefinir o dispositivo, podemos ajustá-lo. Para sintonizar o canal, só precisamos programar os primeiros 4 bytes. Esta parte do código mudará o canal para a frequência desejada. Em I2C, inicialmente, começamos a transmissão, escrevemos ou lemos os dados e depois terminamos a transmissão. Neste receptor IC, não temos que especificar o endereço, pois a folha de dados diz claramente que a interface I2C tem um registro de início fixo, ou seja, 0x02h para uma operação de gravação e 0x0Ah para uma operação de leitura.
uint8_t tune_config = {/ * registro 0x02 * / 0b11000000, 0b00000001, / * registro 0x03 * / (canal >> 2), ((canal & 0b11) << 6) - 0b00010000};
Na configuração, inicializamos a configuração de inicialização (reinicialização) e, em seguida, ajustamos em um canal gravando os bytes de configuração de ajuste no RDA5807M.
void setup () {Serial.begin (9600); pinMode (A0, INPUT); / * Conectado ao Sintonizador FM RDA5807M: * / Wire.begin (); Wire.beginTransmission (RDA5807M_ADDRESS); Wire.write (boot_config, BOOT_CONFIG_LEN); Wire.endTransmission (); Wire.beginTransmission (RDA5807M_ADDRESS); Wire.write (tune_config, TUNE_CONFIG_LEN); Wire.endTransmission (); }
Ao usar o potenciômetro para sintonizar uma frequência, tive um problema. Os valores lidos pelo pino A0 não são constantes. Há um ruído batido com o valor desejado. Usei um capacitor de cerâmica de 0,1uF conectado entre A0 e GND, embora o ruído tenha sido minimizado, não está no nível desejado. Então, eu tive que fazer algumas mudanças no código. No início, anotei as leituras que são afetadas pelo ruído. Descobri que o valor máximo do ruído é 10. Então escrevi o programa de forma que, ele só vai considerar o novo valor se a diferença entre o novo valor e o valor antigo daquele mesmo pino for maior que 10 e então sintoniza no canal desejado.
void loop () {int canal1 = 187, média = 0, novoA; estático int oldA = 0; resultado int = 0; newA = analogRead (A0); if ((novoA - antigoA)> 10 - (antigoA - novoA)> 10) {Serial.println (novoA); if (novoA! = antigoA) {canal = canal1 + (novoA / 10); myChangeChannel (canal); oldA = newA; }}} // fim do loop
Esta função é usada para definir os bytes do array tune_config e então transmitir os dados para o RDA5807M IC usando o protocolo I2C.
void myChangeChannel (int channel) {/ * void se nada for retornado else int * / tune_config = (canal >> 2); tune_config = ((canal & 0b11) << 6) - 0b00010000; Wire.begin (); Wire.beginTransmission (RDA5807M_ADDRESS); Wire.write (tune_config, TUNE_CONFIG_LEN); Wire.endTransmission (); }
Trabalho do Arduino FM Radio
Quando o módulo é ligado, nosso código reinicializa o RDA5807-M IC e o configura para um canal do usuário desejado (Nota: esta frequência é considerada como a frequência base na qual a frequência será incrementada). Ao alterar o potenciômetro (conectado a A0), os valores lidos pelo Arduino Nano mudam. Se a diferença entre o valor novo e o antigo for maior que 10, nosso código considerará esse novo valor. O canal é alterado dependendo da mudança no novo valor do valor antigo. Aumentar ou diminuir o volume depende do potenciômetro, que é conectado entre o pino 3 e o GND.
Ao final da construção e codificação, você terá seu próprio Rádio FM. O funcionamento completo da Rádio FM pode ser encontrado no vídeo no link no final desta página. Espero que você tenha gostado do projeto e aprendido algo útil. Se você tiver alguma dúvida para fazer este projeto funcionar, pode deixá-la na seção de comentários ou usar nossos fóruns para obter outra ajuda técnica.