
Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-23 15:01


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!!!
Aanbevolen:
Maak een Digital Logic Analyzer voor minder dan $1: 5 stappen

Maak een digitale logische analysator voor minder dan $ 1. Een logische niveausensor is een apparaat dat detecteert of de uitvoer van een component 1 of 0 is (positief of negatief). Ken je die mooie niveausensoren met de LCD-schermen die ongeveer $ 25 kosten? Deze is lachwekkend goedkoper en doet hetzelfde (ik
Logic Analyzer met Android-gebruikersinterface: 7 stappen

Logic Analyzer met Android-gebruikersinterface: de wereld wordt al overspoeld met zoveel logic-analyzers. In mijn elektronicahobby had ik er een nodig voor het oplossen van problemen en het debuggen. Ik heb op internet gezocht maar ik kan niet degene vinden die ik zoek. Dus hier ben ik, ik introduceer…"YET Another Lo
Rock Sample Analyzer: 4 stappen

Rock Sample Analyzer: Rock Sample Analyzer wordt gebruikt om de soorten gesteentemonsters te identificeren en te analyseren met behulp van zachte hamertrillingstechniek. Het is een nieuwe methode om de gesteentemonsters te identificeren. Als er een meteoriet of een onbekend rotsmonster is, kan men de
Pocket ZX (Handheld ZX-spectrum): 10 stappen

Pocket ZX (Handheld ZX Spectrum): ik ben een kind van de jaren 80 en heb goede herinneringen aan de 8-bits computers uit die tijd. Mijn eerste computer - een die een speciaal plekje in mijn hart heeft - was een Sinclair ZX Spectrum 48K. Na onlangs een aantal gemeenschappen te hebben ontdekt die gericht zijn op oudere computers