Inhoudsopgave:
Video: CRAZY L.O.L SPECTRUM ANALYZER - Ajarnpa
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Vandaag wil ik delen hoe je een audiospectrumanalysator maakt - 36 banden door 4 LoL Shields samen te combineren. Dit gekke project gebruikt een FFT-bibliotheek om een stereo-audiosignaal te analyseren, om te zetten naar frequentiebanden en de amplitude van deze frequentiebanden weer te geven op 4 x LoL Shields.
Bekijk de onderstaande video voordat u aan de slag gaat:
Stap 1: DINGEN DIE WE NODIG HEBBEN
De belangrijkste elektronische componenten zijn zoals hieronder:
- 4 stuks x Arduino Uno R3.
- 4 stuks x LoLShield-printplaat. PCBWay (Full feature custom PCB prototype service) ondersteunde me met deze LoLShield printplaten.
- 504st x LED, 3 mm. Elke LoLShield heeft 126 LED's nodig en we kunnen kiezen uit 4 verschillende led-kleuren en -types (diffuus of niet-diffuus).
- 1 stks x Draagbare Oplader Power Bank Batterij 10000/20000 mAh.
- 4 stuks x mannelijke kop 40pin 2,54 mm.
- 2 stuks x USB Type A/B-kabel. Een wordt gebruikt voor Arduino-programmering, de andere is voor het voeden van de Arduino vanaf een powerbank.
- 1 stks x 3,5 mm vrouwelijke stereo audio-aansluiting.
- 1 stuks x 3,5 mm 1 mannelijke naar 2 vrouwelijke audiosplitteradapter of multi-hoofdtelefoonaudiosplitter.
- 1 stuks x 3,5 mm stereo audio-aansluiting mannelijk-mannelijk connectorkabel.
- 1m x 8P Rainbow Ribbon-kabel.
- 1 m x twee kernen voedingskabel.
- 1 stuks x helder acryl, maat A4.
Stap 2: SCHEMA
De LoLShield is een 9x14 charlieplexing LED-matrix voor de Arduino en dit ontwerp bevat GEEN stroombeperkende weerstanden. De LED's zijn individueel adresseerbaar, dus we kunnen ze gebruiken om informatie weer te geven in een 9×14 led-matrix.
Het LoL Shield laat D0 (Rx), D1 (Tx) en analoge pinnen A0 tot A5 vrij voor andere toepassingen. Onderstaande afbeelding toont het gebruik van Arduino Uno-pinnen voor dit project:
Mijn audiospectrumanalyser heeft 4 x (Arduino Uno + LoLShield). De voeding en stereo audio jack 3,5 mm zijn aangesloten zoals onderstaand schema:
Stap 3: LOL SHIELD PCB & LED SOLDEREN
1. LoL SHIELD-printplaat
. U kunt naar PCB-ontwerp verwijzen op: https://github.com/jprodgers/LoLshield door Jimmie P. Rodgers.
. PCBWay ondersteunde mij deze LoLShield printplaten met snelle levering en hoge kwaliteit PCB.
2. LED SOLDEREN:
. Elke LoLShield heeft 126 leds nodig en ik heb verschillende soorten en kleuren gebruikt voor 4x LoLShields als volgt:
- 1 x LoLShield: diffuus led, kleur rood, 3mm.
- 1 x LoLShield: diffuus led, kleur groen, 3mm.
- 2 x LoLShield: niet-diffuus (helder) led, kleur blauw, 3mm.
. LoLShield PCB en LED voorbereiden
. Soldeer 126 LED op LoLShield PCB. We moeten de LED's op batterij controleren na het solderen van elke rij - 14 LED's
TOP LoLSHIELD
BODEM LoLSHIELD
. Een LoLShield afwerken en doorgaan met het solderen van 3 resterende LoLShield.
Stap 4: AANSLUITEN EN MONTEREN
. Soldeervoeding en audiosignaal naar 4xLoLShield. Een stereosignaal maakt gebruik van twee audiokanalen: links en rechts die zijn aangesloten op Arduino Uno op analoge pinnen A4 & A5.
- A4: Linker audiokanaal.
- A5: Rechter audiokanaal.
. Uitlijnen & monteren van 4 x Arduino Uno op de acrylplaat.
. 4 x LoLShield aansluiten op 4 x Arduino Uno.
. Lijm draagbare oplader powerbank en audio-aansluiting op acrylplaat
. Gedaan!
Stap 5: PROGRAMMERING
Raadpleeg hoe LoLShield werkt op basis van de Charlieplexing-methode en Fast Fourier Transform (FFT) op:
en.wikipedia.org/wiki/Charlieplexing
github.com/kosme/fix_fft
Voor Charlieplexing letten we op de "drie toestanden" van de Arduino digitale pinnen: "HIGH" (5V), "LOW" (0V) en "INPUT". De "INPUT"-modus zet de Arduino-pin in een toestand met hoge impedantie. Referentie bij:
www.arduino.cc/en/Tutorial/DigitalPins
In mijn project worden de audiofrequentiebanden weergegeven op 4 x LoL Shield en worden ze beschreven zoals hieronder weergegeven:
Elke Arduino leest het audiosignaal op het linker/rechterkanaal en voert de FFT uit.
for (i=0; i <64; i++) {Audio_Input= analogRead (RIGHT_CHANNEL); // Lees audiosignaal op rechterkanaal A5 - ARDUINO 1 & 2 //Audio_Input = analogRead (LEFT_CHANNEL); // Lees audiosignaal op linkerkanaal A4 - ARDUINO 3 & 4 Real_Number = Audio_Input; Imaginary_Number = 0; } fix_fft(Real_Number, Imaginary_Number, 6, 0); // Voer een snelle Fourier-transformatie uit met N_WAVE=6 (2^6=64) voor (i=0; i<32;i++) {Real_Number = 2*sqrt(Real_Number * Real_Number + Imaginary_Number * Imaginary_Number); }
. Arduino 1 - Toon amplitudefrequentiebanden 01 ~ 09 van rechterkanaal (A5).
for (int x=0; x < 14; x++) { for (int y=0; y < 9; y++) { if (x < Real_Number [y]) // Toon frequentiebanden 01 tot 09 { LedSign::Set (13-x, 8-y, 1); // LED AAN} else { LedSign::Set(13-x, 8-y, 0); // LED UIT } } }
. Arduino 2 - Toon amplitude frequentiebanden 10 ~ 18 van het rechter kanaal (A5).
for (int x=0; x < 14; x++) { for (int y=0; y < 9; y++) { if (x < Real_Number [9 + y]) // Toon frequentiebanden 10 tot 18 { LedSign::Set(13-x, 8-y, 1); // LED AAN} else { LedSign::Set(13-x, 8-y, 0); // LED UIT } } }
. Arduino 3 - Toon amplitudefrequentiebanden 01 ~ 09 van linkerkanaal (A4).
De code is hetzelfde als Arduino 1 en het linkerkanaal van het audiosignaal wordt aangesloten op Arduino op analoge pin A4.
. Arduino 4 - Toon amplitude frequentiebanden 10 ~ 18 van het linker kanaal.
De code is hetzelfde als Arduino 2 en het linkerkanaal van het audiosignaal wordt aangesloten op Arduino op analoge pin A4.
Stap 6: AFWERKEN
Deze draagbare spectrumanalysator kan rechtstreeks worden aangesloten op een laptop/desktop, mobiele telefoon, tablet of andere muziekspelers via de 3,5 mm stereo audio-aansluiting. Dit project lijkt gek, ik hoop dat je het leuk vindt!
Bedankt voor het lezen!!!