Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Rádio FM

Componentes e suprimentos

SparkFun FM Tuner Basic Breakout - Si4703
× 1
Alto-falante SparkFun - 0,5 Watt (8 Ohm)
Um excelente orador para um pequeno projeto de rádio
× 1
Adafruit Monochrome 0.96 "Display gráfico OLED de 128 x 64
Uma pequena tela legal com contraste muito bom
× 1
Texas Instruments LM386 - Amplificador de áudio - DIP-8
Famoso amplificador operacional para pequenos projetos de áudio movidos a bateria
× 1
Arduino Nano R3
× 1
Teclado de membrana Adafruit 1x4
× 2
Conversor de nível lógico bidirecional I2C de 4 canais Adafruit
Não usei esse, mas deve funcionar
× 1
Antena telescópica FM para conector F
× 1
Parafuso tipo F de montagem em painel kenable
× 1

Sobre este projeto


Quando criança, costumava construir rádios AM, mas nunca consegui construir rádios FM. Eles eram muito complicados. Hoje em dia, você pode obter um sintonizador de rádio FM completo em um chip, mas esses chips são componentes de montagem em superfície e difíceis para um amador trabalhar. Felizmente, o Sparkfun abre caminho para o chip sintonizador de rádio FM Silicon Laboratories Si4703 (ficha técnica), que quebra todos os pinos. Vou mostrar como você pode construir um rádio FM completo em torno dessa fuga e usar um Arduino para controlar as funções do sintonizador na interface de controle de dois fios integrada. O Sparkfun fornece uma biblioteca completa, tornando isso fácil de programar.

Ao mesmo tempo, adicionei um pequeno display OLED ao projeto com contraste muito alto e consumo de energia muito baixo. Por último, mas não menos importante, vou mostrar como você pode construir um amplificador de áudio mono de excelente som a partir de um mínimo de peças. O rádio finalizado funciona com três baterias AA por muitas e muitas horas.








Breakout básico do sintonizador FM Sparkfun e barramento serial I2C


O breakout básico é fácil de trabalhar. Primeira solda no coletor macho para poder usar o breakout com uma placa de ensaio. Veja o layout do pino abaixo. Solda em um metro de fio fino funciona como antena para a ANT por enquanto.
  • LOUT e ROUT são os canais de saída esquerdo e direito que conectaremos ao nosso amplificador.

(Se você não quiser construir seu próprio amplificador, pode comprar a placa de avaliação, que pode ser usada diretamente com seus fones de ouvido).
  • A tensão de alimentação Vcc é +3,3 Volt.
  • GND é terra ou 0 Volt.

O Si4703 possui uma interface de dois fios, que é um barramento serial que permite controlar o sintonizador de um Arduino através da comunicação serial. Mais precisamente, o barramento é chamado de I2C (circuito inter-integrado; pronuncia-se I-quadrado-C ou I-dois-C) e usa apenas duas linhas bidirecionais:
  • Serial Data Line (SDA) e
  • Linha de relógio serial (SCL).
  • Além disso, vem a linha Reset (RST).

No Si4703, o SDA é denominado SDIO e o SCL é denominado SCLK. Todos os Arduinos possuem I2C integrado. Se você quiser saber mais sobre o ônibus I2C, Tom Igoe e Jeff Feddersen fizeram um ótimo vídeo. Em nosso barramento I2C, o Arduino atua como mestre, enquanto o Si4703 e o display OLED atuam como escravos.





Tensões de barramento I2C e escolha de Arduino


As tensões usadas do Si4703 e do display OLED no barramento I2C são de 3,3 Volt. Por esse motivo, Sparkfun aconselha em seu guia de conexão para usar um Arduino de 3,3 volts. Isso significa usar um Arduino Pro Mini, que é um pouco mais difícil de programar, pois não tem um conector USB e tem que ser programado com um breakout FTDI. Mas há outro problema:o Arduino Pro Mini roda a 8 MHz, metade da velocidade de um Arduino Uno ou Nano. Meu teste mostrou que isso é muito lento para controlar o display OLED. Como eu realmente queria manter a tela, decidi usar um Arduino Nano (16 MHz) que tem nível de sinal de 5 Volt no barramento I2C e usar conversores de nível lógico I2C bidirecionais (I2C-shifters) para conectar aos sinais de barramento de 3,3 Volt do display e do chip de rádio. Eu tinha alguns shifters I2C espalhados com dois sinais cada um que usei no projeto. Precisamos mudar de nível um total de três sinais:SDA, SCL e RST. Eu tive que usar dois shifters I2C. (Eu liguei na descrição acima a um shifter I2C com 4 sinais que podem ajudá-lo a economizar algum cabeamento).

O Nano é quase idêntico ao Uno, mas em um tamanho muito menor. Se quiser, você pode usar o Uno. Eu fiz isso no primeiro teste. Ambos têm conectores USB e são fáceis de usar com o IDE do Arduino.





Esquemas conexões do Arduino para rádio e display


A seguir, vamos dar uma olhada na fiação ao redor do Nano e nos detalhes das conexões do barramento I2C. (Se não houver ponto, os fios apenas se cruzam).

Como você pode ver, o projeto é alimentado por três baterias AA (4,5 Volt). As baterias são conectadas diretamente ao pino de 5 volts do Arduino Nano, ignorando o regulador de tensão. Desta forma, um Nano funcionará sem problemas com 3 pilhas AA. AVISO! Sempre desconecte as baterias antes de conectar o Nano via USB ao seu computador! Caso contrário, os 5 volts do seu computador entrarão em curto-circuito com as baterias. Durante a primeira fase de teste, execute o circuito da fonte de alimentação USB sem baterias! Se você quiser jogar pelo seguro, use seis pilhas AA (9 volts) e conecte o pólo positivo ao pino VIN (em vez do pino 5 volts) do Nano . Dessa forma, o gerenciamento de energia do Nano desligará automaticamente as baterias quando você conectar o cabo USB. (Você pode usar uma bateria de bloco de 9 volts, mas pode durar apenas algumas horas).

Arduino SDA (A4) e SCL (A5) são conectados ao lado de 5 volts do I2C-shifter. Além disso, usamos D2 como sinal RST. No lado de 3,3 Volts do I2C-shifter, conectamos ao SDIO, SCLK e RST do Si4703. Para o display OLED, é suficiente conectar-se a SDA e SCL. (Eu comprei o meu em banggood.com porque era de duas cores:amarelo (linhas superiores) e azul e não havia nenhum alfinete RST).

Conecte todos os componentes à saída de 3,3 Volt do Nano e ao aterramento. O shifter I2C precisa de 5 Volts no lado da alta tensão.

Os pinos IO D5-D12 são conectados aos dois teclados. Pressionar um botão conecta a entrada ao aterramento.





Amplificador de áudio de baixa tensão LM386


Usei o chip LM386 para construir um amplificador mono. O LM386 existe desde os anos setenta. É um amplificador de potência projetado para uso em aplicações de consumo de baixa tensão (ficha técnica). O ganho é definido internamente em 20 para manter a contagem de peças externas baixa, mas a adição de um resistor externo e capacitor entre os pinos 1 e 8 aumentará o ganho para qualquer valor de 20 a 200. Trabalharemos com o ganho mais baixo de 20, que é mais do que alto o suficiente se você usar um alto-falante de 8 Ohms.

Os esquemas para a parte do amplificador de áudio do projeto são fornecidos a seguir:

Vejamos primeiro o Si4703. No lado esquerdo, as conexões do sinal I2C com o Arduino são indicadas. Os canais de saída de áudio devem ser conectados da seguinte maneira:o resistor R4 deve ser conectado a LOUT e R5 a ROUT. Os dois sinais são então combinados em um sinal MONO. Existem capacitores nas saídas da placa de breakout, portanto não precisamos adicionar um. R2 e R3 definem um divisor de tensão para diminuir o nível do sinal de entrada no amplificador. Você pode, é claro, substituir R2 e R3 por um potenciômetro e usá-lo para regular o volume. Mas queremos controlar o volume digitalmente. O nível de saída do Si4703 pode ser aumentado em I2C gradativamente de 1 a 15. Com R2 / R3, você pode combiná-lo com o amplificador experimentando diferentes resistências. Por exemplo, se você aumentar R3, o volume aumentará.

O circuito é retirado diretamente da folha de dados. C2 deve ser de pelo menos 220 µF. Valores menores amortecerão a resposta de graves. Se você quiser aumentar os graves, dê uma olhada na folha de dados. Construa o circuito em uma placa de ensaio e experimente adicionar / remover componentes:C3 deve ser colocado perto do chip. C3 e C1 são opcionais.

Há muitos vídeos no youtube sobre projetos do LM386 e muitos reclamam de som ruim. A maioria deles provavelmente carece de um layout de solo adequado. Se você olhar os esquemas, verá como mantive o aterramento de entrada separado do aterramento de saída, o que é muito importante. Eles se encontram no pino 4, o pino terra do chip. Se você quiser saber mais sobre isso, assista a este vídeo da JohnAudioTech (e este para um projeto LM386 completo).

O LM386N-1 precisa de no mínimo 4 Volts e fornece algumas centenas de mWatt. Eu corro com 3 pilhas AA (4,5 Volt) e posso variar o volume entre 1 e 10 e soa muito bem. No entanto, para tal baixa tensão de alimentação, é muito importante usar um alto-falante de 8 Ohm (não 4 Ohm). Se eu aumentar o volume para 15, ele começa a soar distorcido. Se você quiser que seu rádio fique realmente alto, aumente a tensão de alimentação para 9 volts.





Prototipagem


Aconselho fortemente que você construa primeiro todo o projeto em duas placas de ensaio. Mantenha o Arduino, I2C-shifter e display OLED juntos em um breadbord, enquanto você tem o breakout Si4703 e o amplificador de áudio juntos no outro breadboard para manter distorções acústicas ao mínimo. No meu primeiro protótipo, coloquei o Si4703 próximo ao Arduino com longos cabos de sinal para a parte de áudio (veja a foto) e isso causou distorções.

Alimente o Arduino a partir de USB com a saída regulada de 3,3 volts do Arduino que alimenta o display e o chip de rádio. Alimente o LM386 com baterias (4,5 - 9 volts).





O código do programa


As seguintes bibliotecas devem ser incluídas:
  #include  #include  #include  #include  #include   

Se você não sabe como instalar bibliotecas, dê uma olhada no guia a seguir. A biblioteca Sparkfun é encontrada aqui e fornece funções de alto nível para falar com o Si4703 sem ter que se preocupar com todos os pequenos detalhes. As bibliotecas de exibição Adafruit com tutorial são encontradas aqui.

A seguir, precisamos fazer algumas definições:
  // Botões de entrada no rádio #define volDown 9 #define volUp 10 #define channelDown 11 #define channelUp 12 // Chip de rádio Si4703 #define resetPin 2 #define SDIO A4 #define SCLK A5 Si4703_Breakout radio (resetPin, SDIO, SCLK); # define SI4703Address 0x10 // Si4703 Endereço I2C.  

O uso de #define é uma forma de tornar o código-fonte mais legível. Depois de definir de uma vez por todas que volDown se refere ao pino 9, você escreve volDown cada vez que quer dizer D9.

A seguir, veremos a seção de configuração:
  // Definição das variáveis ​​int channel; volume interno; void setup () {// Definir resistores pull up internos nas entradas pinMode (volDown, INPUT_PULLUP); pinMode (volUp, INPUT_PULLUP); pinMode (channelUp, INPUT_PULLUP); pinMode (channelDown, INPUT_PULLUP); // Inicializar rádio radio.powerOn (); canal =882; radio.setChannel (canal); volume =4; radio.setVolume (volume); }  

Os pinos 9-12 são definidos como pinos de entrada. O parâmetro INPUT_PULLUP conecta um resistor pullup interno (dentro do chip ATmega) de + 5V para o pino de entrada. Consequentemente, o nível do sinal do pino será ALTO a menos que você pressione o botão (botão pressionado =BAIXO).

A biblioteca Sparkfun facilita o controle do rádio em I2C com as funções principais powerOn (), setChannel () e setVolume ().

O loop principal escuta um botão ser pressionado e, em seguida, age de acordo:
  void loop () {// Diminuir o volume if (digitalRead (volDown) ==LOW) {if (volume> 0) volume--; radio.setVolume (volume); UpdateDisplay (); atraso (100); } // Aumentar o volume if (digitalRead (volUp) ==LOW) {if (volume <15) volume ++; radio.setVolume (volume); UpdateDisplay (); atraso (100); } // Canal para baixo if (digitalRead (channelDown) ==LOW) {channel =radio.seekDown (); UpdateDisplay (); atraso (100); } // Canal para cima if (digitalRead (channelUp) ==LOW) {channel =radio.seekUp (); UpdateDisplay (); atraso (100); }}  

Dê uma olhada no código-fonte completo abaixo. Inclui quatro botões para estações predefinidas (onde você pode colocar suas estações favoritas) e todo o código necessário para atualizar o display OLED, que usa quase toda a RAM disponível. Refiro-me ao excelente tutorial do Adafruit, se você quiser aprender sobre a biblioteca SSD1306. Esteja ciente de que a biblioteca não pode determinar o tamanho da tela de seu monitor por meio do software. Você deve especificá-lo depois de instalar o Adafruit_SSD1306.h. Abra o arquivo de biblioteca, leia as instruções nos comentários e edite o arquivo de acordo.

Existe uma função "avançada" no código-fonte para medir o nível da bateria, comparando-a a uma referência interna de 1,1 Volt dentro do chip AVR. Como estamos funcionando com baterias, não temos uma tensão de referência de 5 volts constante para medir a tensão da bateria. Se você quiser saber mais, indico os seguintes artigos:Voltímetro secreto do Arduino e o fórum Gammon.





Do protótipo da placa de ensaio ao rádio acabado


Se você chegou até aqui, você tem um protótipo totalmente funcional em duas placas de ensaio. Vamos transferir o circuito para dois perfboards e colocar todo o rádio dentro de uma bela caixa de projeto. Se você ainda não fez isso, não tenha medo de tentar. Não há nada que você possa realmente fazer de errado e você aprende as habilidades necessárias à medida que avança. Collin, da Adafruit, fez dois bons vídeos introdutórios que você pode assistir:Breadboards &perfboards e prototipagem de Perfboard.

Eu decidi colocar o Nano junto com os shifters I2C (eu tive que usar dois shifters, veja acima) em um perfboard:

Para fazer este protótipo de perfboard, segui um tutorial, que recomendo estudar detalhadamente:Como Prototipar sem usar placas de circuito impresso. Especialmente importante é o Passo 3:faça seu plano de fiação! O planejamento é a etapa mais importante e a diferença entre o fracasso e o sucesso. Mais algumas dicas:Usei fio preto 22 AWG, que era muito grosso e difícil de trabalhar como vocês podem ver na foto. Compre um pouco de "Wire Wrapping Wire" (30 AWG) em cores diferentes. E use um perfboard maior! Fiz cabeçalhos de pinos e usei fios de jumper da Dupont para conectar as diferentes partes.

Coloque o Si4703 e o amplificador de áudio juntos em um segundo perfboard. Aqui está um pequeno tutorial para um amplificador LM386, que você pode usar como inspiração:From Schematics to Veroboard. No entanto, sugiro que você use um soquete IC para o LM386! Alternativamente, JohnAudioTech fez um bom vídeo para um projeto completo de amplificador LM386 com um bom layout incluído, que tem os aterramentos de potência separados dos aterramentos de sinal.

Em seguida, você precisa de um gabinete de projeto agradável para o seu rádio. Mais uma vez, Collin mostra neste vídeo como fazer. Gostei especialmente da ideia da fita adesiva para marcar onde furar. Comprei a fita de Painter que não é muito pegajosa. Além de fita adesiva e uma broca, use uma pistola de cola quente. Basta colar o alto-falante, as perfboards, a bateria etc. no gabinete e, em seguida, conectar as peças com fios de ligação Dupont. O produto final tem a seguinte aparência:

Eu estava muito otimista e comprei uma caixa de projeto bem pequena, como você pode ver. Para fazer uma abertura quadrada para o display no painel frontal, cortei com uma lâmina Stanley por dentro (para evitar marcas feias por fora). Não é muito elegante, mas funcionou muito bem. Em seguida, colei a tela na abertura com cola quente. Eu marquei o tamanho do alto-falante no painel frontal, fiz muitos orifícios de 3 mm para o som e colei o alto-falante na parte de trás.

Na foto, você ainda pode ver o fio da antena. Em seguida, comprei um conector do tipo F para montagem em painel e uma antena FM telescópica. Embora a antena tenha apenas 50 cm de comprimento, a recepção é muito boa e o pequeno alto-falante tem um som surpreendentemente bom. O mais incrível, porém, é o fato de que ainda não troquei as baterias nenhuma vez, embora já esteja ouvindo meu pequeno rádio há muitos dias.





Outros projetos de rádio


Fiquei inicialmente inspirado para fazer este projeto quando vi o vídeo de Great Scott, que também construiu uma bela caixa de projeto de madeira para seu rádio em um vídeo posterior. Mais próximo dos detalhes do meu rádio, entretanto, está o Si4703 Pocket FM Radio de John Owen, já que ele usa o Sparkfun breakout e você deve dar uma olhada de perto na descrição do projeto. Usei seu código-fonte para a função Mono e para medir a tensão da bateria.

Código

Rádio FM
Repositório Github com código-fonte para Arduino Nanohttps://github.com/Notthemarsian/FM-radio

Esquemas

Diagramas de Fritzing Rádio FM
Arquivos e imagens originais do Fritzing / PDFhttps://github.com/Notthemarsian/FM-radio/tree/master/Fritzing%20diagrams

Processo de manufatura

  1. Amplificador de áudio Classe B
  2. 555 Oscilador histerético
  3. Circuitos de Rádio
  4. Princípios do Rádio
  5. Rádio
  6. Propagação de rádio solo a solo
  7. UnifiedWater v1
  8. Rádio da Internet Pi-Arduino
  9. Rádio FM com cabine de banho baseada em Arduino
  10. Comunicações de rádio baseadas em átomos