Índice:
Vídeo: ANALISADOR DE ESPECTRO CRAZY L.O.L: 6 etapas (com fotos)
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Hoje eu gostaria de compartilhar como fazer um analisador de espectro de áudio - 36 bandas combinando 4 LoL Shields juntos. Este projeto louco usa uma biblioteca FFT para analisar um sinal de áudio estéreo, convertê-lo em bandas de frequência e exibir a amplitude dessas bandas de frequência em 4 x LoL Shields.
Antes de começar, assista ao vídeo abaixo:
Etapa 1: COISAS DE QUE PRECISAMOS
Os principais componentes eletrônicos são os seguintes:
- 4pcs x Arduino Uno R3.
- 4pcs x LoLShield PCB. PCBWay (serviço de protótipo de PCB personalizado com recursos completos) me deu suporte a essas placas de circuito impresso LoLShield.
- 504pcs x LED, 3mm. Cada LoLShield precisa de 126 LEDs e podemos escolher 4 cores e tipos diferentes de LED (difuso ou não difuso).
- 1pcs x Bateria do banco de energia do carregador portátil 10000 / 20000mAh.
- 4pcs x Cabeçalho Masculino 40pin 2,54mm.
- Cabo 2pcs x USB tipo A / B. Um é usado para a programação do Arduino, o outro é para alimentar o Arduino a partir de um banco de energia.
- Conector de áudio estéreo feminino de 1pcs x 3,5 mm.
- 1pcs x 3.5mm Adaptador de divisor de áudio de 1 macho para 2 fêmeas ou divisor de áudio de múltiplos fones de ouvido.
- Cabo conector macho-macho para tomada de áudio estéreo de 1pcs x 3,5 mm.
- Cabo de fita arco-íris de 1m x 8P.
- Cabo de alimentação de 1m x dois núcleos.
- 1pcs x Acrílico Transparente, tamanho A4.
Etapa 2: ESQUEMA
O LoLShield é uma matriz de LED charlieplexing 9x14 para o Arduino e este projeto NÃO inclui resistores limitadores de corrente. Os LEDs são endereçáveis individualmente, portanto, podemos usá-los para exibir informações em uma matriz de LEDs de 9 × 14.
O LoL Shield deixa D0 (Rx), D1 (Tx) e os pinos analógicos A0 a A5 livres para outras aplicações. A imagem abaixo mostra o uso de pinos do Arduino Uno para este projeto:
Meu analisador de espectro de áudio tem 4 x (Arduino Uno + LoLShield). A fonte de alimentação e o conector de áudio estéreo de 3,5 mm são conectados conforme o esquema abaixo:
Etapa 3: LOL SHIELD PCB & SOLDAGEM DE LED
1. LoL SHIELD PCB
Ѽ. Você pode consultar o design de PCB em: https://github.com/jprodgers/LoLshield de Jimmie P. Rodgers.
Ѽ. A PCBWay me apoiou essas placas de circuito impresso LoLShield com entrega rápida e PCB de alta qualidade.
2. SOLDAGEM DE LED
Ѽ. Cada LoLShield precisa de 126 leds e usei diferentes tipos e cores para 4x LoLShields da seguinte forma:
- 1 x LoLShield: led difuso, cor vermelha, 3mm.
- 1 x LoLShield: led difuso, cor verde, 3mm.
- 2 x LoLShield: led não difuso (transparente), cor azul, 3mm.
Ѽ. Preparando LoLShield PCB e LED
Ѽ. Soldando 126 LED em LoLShield PCB. Devemos verificar os LEDs por bateria após soldar cada linha - 14 LEDs
TOP LoLSHIELD
BOTTOM LoLSHIELD
Ѽ. Terminar um LoLShield e continuar a soldar os 3 LoLShield restantes.
Etapa 4: CONEXÃO E MONTAGEM
Ѽ. Fonte de alimentação de solda e sinal de áudio para 4xLoLShield. Um sinal estéreo usa dois canais de áudio: esquerdo e direito, que são conectados ao Arduino Uno nos pinos analógicos A4 e A5.
- A4: Canal de áudio esquerdo.
- A5: Canal de áudio direito.
Ѽ. Alinhando e montando 4 x Arduino Uno na placa de acrílico.
Ѽ. Conectando 4 x LoLShield em 4 x Arduino Uno.
Ѽ. Cole o carregador portátil e o conector de áudio na placa de acrílico
Ѽ. Feito!
Etapa 5: PROGRAMAÇÃO
Você deve consultar como LoLShield funciona com base no método Charlieplexing e Fast Fourier Transform (FFT) em:
en.wikipedia.org/wiki/Charlieplexing
github.com/kosme/fix_fft
Para o Charlieplexing, prestamos atenção aos "três estados" dos pinos digitais do Arduino: "HIGH" (5V), "LOW" (0V) e "INPUT". O modo "INPUT" coloca o pino do Arduino no estado de alta impedância. Referência em:
www.arduino.cc/en/Tutorial/DigitalPins
No meu projeto, as bandas de frequência de áudio são exibidas em 4 x LoL Shield e são descritas conforme mostrado abaixo:
Cada Arduino lê o sinal de áudio no canal esquerdo / direito e executa o FFT.
para (i = 0; i <64; i ++) {Audio_Input = analogRead (RIGHT_CHANNEL); // Lê o sinal de áudio no canal direito A5 - ARDUINO 1 e 2 // Audio_Input = analogRead (LEFT_CHANNEL); // Lê o sinal de áudio no canal esquerdo A4 - ARDUINO 3 e 4 Real_Number = Audio_Input; Imaginary_Number = 0; } fix_fft (Real_Number, Imaginary_Number, 6, 0); // Realiza a transformação Fast Fourier com N_WAVE = 6 (2 ^ 6 = 64) para (i = 0; i <32; i ++) {Real_Number = 2 * sqrt (Real_Number * Real_Number + Imaginary_Number * Imaginary_Number ); }
Ѽ. Arduino 1 - Exibe as bandas de frequência de amplitude 01 ~ 09 do canal direito (A5).
for (int x = 0; x <14; x ++) {for (int y = 0; y <9; y ++) {if (x <Real_Number [y]) // Exibir bandas de frequência 01 a 09 {LedSign:: Set (13-x, 8-y, 1); // LED ON} else {LedSign:: Set (13-x, 8-y, 0); // LED OFF}}}
Ѽ. Arduino 2 - Exibe as bandas de frequência de amplitude 10 ~ 18 do canal direito (A5).
for (int x = 0; x <14; x ++) {for (int y = 0; y <9; y ++) {if (x <Real_Number [9 + y]) // Exibe as bandas de frequência 10 a 18 {LedSign:: Conjunto (13-x, 8-y, 1); // LED ON} else {LedSign:: Set (13-x, 8-y, 0); // LED OFF}}}
Ѽ. Arduino 3 - Exibe as bandas de frequência de amplitude 01 ~ 09 do canal esquerdo (A4).
O código é o mesmo do Arduino 1 e o canal esquerdo do sinal de áudio conecta-se ao Arduino no pino analógico A4.
Ѽ. Arduino 4 - Exibe as bandas de frequência de amplitude 10 ~ 18 do canal esquerdo.
O código é o mesmo do Arduino 2 e o canal esquerdo do sinal de áudio conecta-se ao Arduino no pino analógico A4.
Etapa 6: TERMINAR
Este analisador de espectro portátil pode ser conectado diretamente a um laptop / desktop, telefone celular, tablet ou outros reprodutores de música por meio do conector de áudio estéreo de 3,5 mm. Esse projeto parece maluco, espero que gostem!
Obrigado pela sua leitura !!!