Analisador-visualizador de espectro de áudio baseado em Arduino



O que você acha que as meninas fazem quando se reúnem? Ir às compras, tirar fotos, ir a salões de beleza? Sim, é, mas nem todo mundo faz. Este artigo discutirá como duas meninas decidiram montar um dispositivo eletrônico com suas próprias mãos.

Por que exatamente um analisador de espectro-visualizador?


Afinal, existem muitas soluções de software para esse problema e também existem muitas opções para implementação de hardware. Primeiro, eu realmente queria trabalhar com um grande número de LEDs (porque já montamos o cubo de led, cada um para nós mesmos, mas em tamanhos pequenos) e, segundo, colocar em prática o conhecimento adquirido no processamento de sinais digitais e, terceiro, mais uma vez praticar o trabalho com um ferro de soldar.

Desenvolvimento de dispositivos


Porque pegar uma solução pronta e fazê-lo estritamente de acordo com as instruções é chato e desinteressante, por isso decidimos desenvolver o circuito sozinhos, contando apenas com um pouco dos dispositivos já criados.

Como tela, escolhemos uma matriz de LED 8x32. Era possível usar matrizes prontas de 8x8 e montá-las, mas decidimos não nos negar o prazer de ficar sentado à noite com um ferro de soldar e, portanto, montamos a tela a partir dos LEDs.

Para controlar a exibição, não inventamos uma bicicleta e usamos um circuito de controle com indicação dinâmica. I.e. selecionamos uma coluna, acendemos, as demais colunas naquele momento foram extintas; depois, selecionamos a seguinte, acendemos, o restante foi extinto etc. Devido ao fato de o olho humano não ser perfeito, podemos observar uma imagem estática no visor.
Seguindo o caminho de menor resistência, foi decidido que seria sensato transferir todos os cálculos para o controlador Arduino.

A inclusão de uma linha em uma coluna é realizada abrindo a chave correspondente. Para reduzir o número de pinos de saída do controlador, a coluna é selecionada através de decodificadores (portanto, podemos reduzir o número de linhas de controle para 5).


Como interface para conectar-se a um computador (ou outro dispositivo capaz de transmitir um sinal de áudio), o conector TRS (minitomada de 3,5 mm) foi selecionado.

Montagem do dispositivo


Iniciamos a montagem do dispositivo fazendo um modelo do painel frontal do dispositivo.



O material para o painel frontal foi selecionado em plástico preto com 5 mm de espessura (já que o diâmetro da lente de diodo também é de 5 mm). Marcamos de acordo com o layout desenvolvido, cortamos o painel frontal com o tamanho necessário e fazemos furos no plástico para os LEDs.





Assim, temos um painel frontal acabado no qual você já pode montar a tela.



Como LEDs para a matriz, foram usadas duas cores (vermelho-verde) com o cátodo comum GNL-5019UEUGC. Antes de iniciar a montagem da matriz, guiado pela regra “o controle extra não danifica” todos os LEDs, ou seja, 270 peças. (tiradas com uma margem apenas por precaução), foram testadas quanto à operacionalidade (para isso foi montado um dispositivo de teste, incluindo um conector, um resistor de 200 Ohm e uma fonte de alimentação de 5V).



Em seguida, expandimos os LEDs da seguinte maneira. Os ânodos dos diodos vermelho e verde são dobrados para um lado (à direita), o cátodo é dobrado para o outro lado, garantindo que o cátodo seja mais baixo que os ânodos. E então a 90 ° dobramos o cátodo.



Começamos a montagem da matriz a partir do canto inferior direito, a montagem é realizada em colunas.





Lembrando a regra “o controle extra não fará mal”, depois de uma ou duas colunas unidas, verificamos o desempenho.



A matriz finalizada é a seguinte.



Vista traseira: de



acordo com o esquema desenvolvido, soldamos o esquema de gerenciamento de linhas e colunas, dessoldamos os cabos e o local sob o Arduino.



Decidiu-se também derivar não apenas a amplitude-frequência, mas também o espectro de frequência de fase, além de selecionar o número de amostras a serem exibidas (32,16,8,4). Para isso, foram adicionados 4 switches: um para selecionar o tipo de espectro, dois para selecionar o número de amostras e um para ligar e desligar o dispositivo.

Escrevendo um programa


Mais uma vez, somos guiados por nossa regra e garantimos que nossa tela esteja totalmente operacional. Para fazer isso, escrevemos um programa simples que acende completamente todos os LEDs no visor. Naturalmente, de acordo com a lei de Murphy, vários LEDs careciam de corrente e precisavam ser substituídos.



Depois de garantir que tudo funcione, começamos a escrever o código principal do programa. Consiste em três partes: inicializando as variáveis ​​necessárias e lendo os dados, obtendo o espectro do sinal usando a transformada rápida de Fourier, produzindo o espectro obtido com a formatação necessária para o display.

Montagem final do dispositivo


No final, temos um painel frontal e, sob ele, um monte de fios que precisam ser fechados com alguma coisa, e os interruptores precisam ser fixados em alguma coisa. Antes disso, pensávamos nos restos de plástico, mas não imaginávamos como seria especificamente e como fazê-lo. A solução para o problema veio inesperadamente. Caminhando pela loja de ferragens, encontramos um vaso de flores de plástico que era surpreendentemente perfeito em tamanho.



O assunto permaneceu pequeno, marque os orifícios para os conectores, cabos e interruptores, além de cortar os dois painéis laterais de plástico.



Como resultado, reunindo tudo, conectando o dispositivo ao computador, obtivemos o seguinte:

Resposta em frequência (32 amostras):



Resposta em frequência (16 amostras):



Resposta em frequência (8 amostras):



Resposta em frequência (4 amostras):



Espectro de frequências de fase:



Vista traseira:



Vídeo de operação do dispositivo


Para maior clareza, o vídeo foi filmado no escuro. O dispositivo exibe o espectro de amplitude-frequência no vídeo e, em 7 segundos, passamos para o modo de espectro de frequência de fase.



Lista de itens obrigatórios


  1. LEDs GNL-5019UEUGC - 256 pçs. (Para exibição)
  2. Transistores npn KT863A - 8 pçs. (Para gerenciamento de cadeias)
  3. Transistores pnp 32740 - 32 pçs. (Para gerenciar colunas)
  4. Resistores de 1kΩ - 32 pçs. (Para limitar a corrente base dos transistores pnp)
  5. Decodificadores 3/8 IN74AC138 - 4 unid. (Para selecionar uma coluna)
  6. Decodificadores 2/4 IN74AC139 - 1 pc. (Para decodificadores em cascata)
  7. Placa de montagem 5x10cm - 2 unid.
  8. Loops
  9. Arduino Pro micro - 1 pç.
  10. Mini-jack de 3,5 mm - 1 pç.
  11. Interruptor - 4 peças.
  12. Plástico preto 720 * 490 * 5 mm - 1 folha. (Para painel frontal)
  13. Vaso preto 550 * 200 * 150 mm - 1 unid. (Para habitação)

Source: https://habr.com/ru/post/pt395289/


All Articles