Sommario:
2025 Autore: John Day | [email protected]. Ultima modifica: 2025-01-13 06:57
Oggi vorrei condividere come realizzare un analizzatore di spettro audio - 36 bande combinando insieme 4 LoL Shields. Questo folle progetto utilizza una libreria FFT per analizzare un segnale audio stereo, convertirlo in bande di frequenza e visualizzare l'ampiezza di queste bande di frequenza su 4 x LoL Shields.
Prima di iniziare, guarda il video qui sotto:
Fase 1: COSE DI CUI ABBIAMO BISOGNO
I principali componenti elettronici sono i seguenti:
- 4 pezzi x Arduino Uno R3.
- PCB da 4 pezzi x LoLShield. PCBWay (servizio completo di prototipi PCB personalizzati) mi ha supportato con questi circuiti stampati LoLShield.
- 504 pezzi x LED, 3 mm. Ogni LoLShield ha bisogno di 126 LED e possiamo scegliere 4 diversi colori e tipi di led (diffuso o non diffuso).
- 1 pz x Caricabatterie Portatile Power Bank Batteria 10000/20000 mAh.
- 4 pezzi x intestazione maschio 40 pin 2,54 mm.
- 2 x cavo USB di tipo A/B. Uno è usato per la programmazione Arduino, l'altro è per alimentare Arduino da un power bank.
- Jack audio stereo femmina da 1 pz x 3,5 mm.
- 1 pz x 3,5 mm Adattatore splitter audio da 1 maschio a 2 femmine o splitter audio multi cuffia.
- Cavo connettore maschio-maschio jack audio stereo da 1 pz x 3,5 mm.
- Cavo a nastro arcobaleno da 1 m x 8P.
- Cavo di alimentazione da 1 m x due core.
- 1 pz x acrilico trasparente, formato A4.
Fase 2: SCHEMA
LoLShield è una matrice LED charlieplexing 9x14 per Arduino e questo design NON include resistori di limitazione della corrente. I LED sono indirizzabili individualmente, quindi possiamo usarlo per visualizzare informazioni in una matrice di led 9×14.
LoL Shield lascia D0 (Rx), D1 (Tx) e i pin analogici da A0 ad A5 liberi per altre applicazioni. L'immagine sotto mostra l'utilizzo dei pin Arduino Uno per questo progetto:
Il mio analizzatore di spettro audio ha 4 x (Arduino Uno + LoLShield). L'alimentatore e il jack audio stereo da 3,5 mm sono collegati come illustrato di seguito:
Passaggio 3: LOL SHIELD PCB & SALDATURA LED
1. PCB LoL SHIELD
. Puoi fare riferimento alla progettazione PCB su: https://github.com/jprodgers/LoLshield di Jimmie P. Rodgers.
. PCBWay mi ha supportato con questi circuiti stampati LoLShield con consegna rapida e PCB di alta qualità.
2. SALDATURA A LED
. Ogni LoLShield ha bisogno di 126 led e ho usato diversi tipi e colori per 4x LoLShields come segue:
- 1 x LoLShield: led diffuso, colore rosso, 3mm.
- 1 x LoLShield: led diffuso, colore verde, 3mm.
- 2 x LoLShield: led non diffuso (trasparente), colore blu, 3mm.
. Preparazione PCB e LED LoLShield
. Saldatura di 126 LED su PCB LoLShield. Dovremmo controllare i LED a batteria dopo aver saldato ogni riga - 14 LED
TOP LoLSHIELD
INFERIORE LoLSHIELD
. Finire un LoLShield e continuare a saldare i 3 LoLShield rimanenti.
Fase 4: COLLEGAMENTO E MONTAGGIO
. Saldatura alimentazione e segnale audio a 4xLoLShield. Un segnale stereo utilizza due canali audio: sinistro e destro che sono collegati ad Arduino Uno ai pin analogici A4 e A5.
- A4: Canale audio sinistro.
- A5: Canale audio destro.
. Allineamento e montaggio di 4 Arduino Uno sulla piastra acrilica.
. Collegando 4 x LoLShield a 4 x Arduino Uno.
. Incolla la banca di alimentazione del caricatore portatile e il jack audio su una piastra acrilica
. Fatto!
Fase 5: PROGRAMMAZIONE
Dovresti fare riferimento a come funziona LoLShield basato sul metodo Charlieplexing e Fast Fourier Transform (FFT) su:
en.wikipedia.org/wiki/Charlieplexing
github.com/kosme/fix_fft
Per Charlieplexing, prestiamo attenzione ai "tre stati" dei pin digitali di Arduino: "HIGH" (5V), "LOW" (0V) e "INPUT". La modalità "INPUT" mette il pin Arduino in stato di alta impedenza. Riferimento a:
www.arduino.cc/en/Tutorial/DigitalPins
Nel mio progetto, le bande di frequenza audio sono visualizzate su 4 x LoL Shield e sono descritte come mostrato di seguito:
Ogni Arduino legge il segnale audio sul canale sinistro/destro ed esegue l'FFT.
for (i=0; i < 64; i++) { Audio_Input= analogRead(RIGHT_CHANNEL); // Legge il segnale audio sul canale destro A5 - ARDUINO 1 & 2 //Audio_Input = analogRead(LEFT_CHANNEL); // Legge il segnale audio sul canale sinistro A4 - ARDUINO 3 & 4 Real_Number = Audio_Input; Imaginary_Number = 0; } fix_fft(Real_Number, Imaginary_Number, 6, 0); // Esegui la trasformata di Fourier veloce con N_WAVE=6 (2^6=64) for (i=0; i< 32;i++) { Real_Number = 2*sqrt(Real_Number * Real_Number + Imaginary_Number * Numero_Immaginario); }
. Arduino 1 - Visualizza le bande di frequenza di ampiezza 01 ~ 09 del canale destro (A5).
for (int x=0; x < 14; x++) { for (int y=0; y < 9; y++) { if (x < Real_Number[y]) // Visualizza le bande di frequenza da 01 a 09 { LedSign::Set (13-x, 8-y, 1); // LED ON } else { LedSign::Set(13-x, 8-y, 0); // LED SPENTO } } }
. Arduino 2 - Visualizza le bande di frequenza di ampiezza 10 ~ 18 del canale destro (A5).
for (int x=0; x < 14; x++) { for (int y=0; y < 9; y++) { if (x < Real_Number[9 + y]) // Visualizza le bande di frequenza da 10 a 18 { LedSign::Set(13-x, 8-y, 1); // LED ON } else { LedSign::Set(13-x, 8-y, 0); // LED SPENTO } } }
. Arduino 3 - Visualizza le bande di frequenza di ampiezza 01 ~ 09 del canale sinistro (A4).
Il codice è lo stesso di Arduino 1 e il canale sinistro del segnale audio si collega ad Arduino sul pin analogico A4.
. Arduino 4 - Visualizza le bande di frequenza di ampiezza 10 ~ 18 del canale sinistro.
Il codice è lo stesso di Arduino 2 e il canale sinistro del segnale audio si collega ad Arduino sul pin analogico A4.
Passaggio 6: FINE
Questo analizzatore di spettro portatile può connettersi direttamente a un laptop/desktop, telefono cellulare, tablet o altri lettori musicali tramite il jack audio stereo da 3,5 mm. Questo progetto sembra pazzesco, spero vi piaccia!
Grazie per la tua lettura!!!