Innholdsfortegnelse:

Ikke-adresserbar RGB LED Strip Audio Visualizer: 6 trinn (med bilder)
Ikke-adresserbar RGB LED Strip Audio Visualizer: 6 trinn (med bilder)

Video: Ikke-adresserbar RGB LED Strip Audio Visualizer: 6 trinn (med bilder)

Video: Ikke-adresserbar RGB LED Strip Audio Visualizer: 6 trinn (med bilder)
Video: 40 полезных автотоваров с Aliexpress, которые упростят жизнь любому автовладельцу #7 2024, Desember
Anonim
Image
Image

Jeg har hatt en 12v RGB LED-stripe rundt TV-skapet mitt en stund, og den styres av en kjedelig LED-driver som lar meg velge en av 16 forhåndsprogrammerte farger!

Jeg hører på mye musikk som holder meg motivert, men belysningen setter bare ikke stemningen riktig. For å fikse det bestemte jeg meg for å ta lydsignalet som ble gitt til høyttaleren min via AUX (3,5 mm jack), behandle det og kontrollere RGB -stripen deretter.

Lysdiodene reagerer på musikken basert på størrelsen på Bass (Lav), Diskant (Mid) og Høy frekvens.

Frekvensområdet - Fargen er som følger:

Lav - rød

Midtgrønn

Høy - blå

Dette prosjektet involverer mange DIY ting fordi hele kretsen ble bygget fra bunnen av. Dette bør være ganske enkelt hvis du setter det opp på et brødbrett, men ganske utfordrende å lodde det på en PCB.

Rekvisita

(x1) RGB LED -stripe

(x1) Arduino Uno/Nano (Mega anbefales)

(x1) TL072 eller TL082 (TL081/TL071 er også fine)

(x3) TIP120 NPN Transistor (TIP121, TIP122 eller N-Channel MOSFETs som IRF540, IRF 530 er også fine)

(x1) 10 kOhm potensiometer lineært

(x3) 100kOhm 1/4watt motstander

(x1) 10uF elektrolytisk kondensator

(x1) 47nF keramisk kondensator

(x2) 3,5 mm lydkontakt - hunn

(x2) 9V batteri

(x2) 9V batteriknappkontakt

Trinn 1: Forstå typer RGB LED -striper

Forstå typer RGB LED -striper
Forstå typer RGB LED -striper

Det er to grunnleggende typer LED -strips, den "analoge" typen og den "digitale" typen.

Strimler av analog type (fig 1) har alle lysdiodene koblet parallelt, og så fungerer den som en enorm trefarget LED; du kan sette hele stripen til hvilken som helst farge du ønsker, men du kan ikke kontrollere de enkelte LED -fargene. De er veldig enkle å bruke og ganske rimelige.

Digital-stripene (fig 2) fungerer på en annen måte. De har en chip for hver LED, for å bruke stripen må du sende digitalt kodede data til chipsene. Dette betyr imidlertid at du kan kontrollere hver LED individuelt! På grunn av den ekstra kompleksiteten til brikken, er de dyrere.

Hvis du synes det er vanskelig å fysisk identifisere forskjellene mellom de analoge og digitale stripene,

  1. Anolog-typen bruker 4 pinner, 1 vanlige positive og 3 negative, dvs. en for hver farge på RGB.
  2. Digital type bruk 3 pins, positive, data og bakken.

Jeg kommer til å bruke strips av analog type, fordi

  1. Det er svært få eller ingen instrukser som lærer hvordan du lager en musikkreaktiv stripe av analog type. Flertallet av dem fokuserer på den digitale typen, og det er lettere å få dem til å reagere på musikk.
  2. Jeg hadde noen striper av analog type liggende.

Trinn 2: Forsterke lydsignalet

Forsterker lydsignalet
Forsterker lydsignalet
Forsterker lydsignalet
Forsterker lydsignalet
Forsterker lydsignalet
Forsterker lydsignalet

Lydsignalet som sendes ut gjennom lydkontakten er

et analogt signal som svinger innenfor +200mV og -200mV. Nå er dette et problem, vi vil måle lydsignalet med en av Arduinos analoge innganger fordi Arduinos analoge innganger bare kan måle spenninger mellom 0 og 5V. Hvis vi prøvde å måle de negative spenningene i lydsignalet fra, ville Arduino bare lese 0V, og vi ville ende opp med å klippe bunnen av signalet.

For å løse det må vi forsterke og forskyve lydsignalene slik at de faller innenfor et område på 0-5V. Ideelt sett bør signalet ha en amplitude på 2,5V som svinger rundt 2,5V slik at min spenning er 0V og maks spenning er 5V.

Forsterkning

Forsterkeren er det første trinnet i kretsen, den øker signalets amplitude fra rundt + eller - 200mV til + eller - 2,5V (ideelt sett). Den andre funksjonen til forsterkeren er å beskytte lydkilden (tingen som genererer lydsignalet i utgangspunktet) fra resten av kretsen. Det utgående forsterkede signalet vil koble all sin strøm fra forsterkeren, så enhver belastning på den senere i kretsen vil ikke bli "merket" av lydkilden (telefonen/iPod/bærbar datamaskin i mitt tilfelle). Gjør dette ved å sette opp en av op-ampere i pakken TL072 eller TL082 (fig 2) i en ikke-inverterende forsterkerkonfigurasjon.

Databladet til TL072 eller TL082 sier at det skal drives med +15 og -15V, men siden signalet aldri vil bli forsterket over + eller -2.5V er det greit å kjøre op -amp med noe lavere. Jeg brukte to ni -volts batterier i serie for å lage en + eller - 9V strømforsyning.

Koble +V (pin 8) og –V (pin 4) til op-amp. Koble signalet fra monokontakten til den ikke-inverterende inngangen (pin 3) og koble jordkontakten til kontakten til 0V-referansen på spenningsforsyningen (for meg var dette krysset mellom de to 9V-batteriene i serie). Koble en 100kOhm motstand mellom utgangen (pin 1) og inverteringsinngangen (pin 2) til op-amp. I denne kretsen brukte jeg et 10 kOhm potensiometer koblet som en variabel motstand for å justere forsterkningen (mengden som forsterkeren forsterker) til min ikke-inverterende forsterker. Koble denne 10K lineære koniske gryten mellom inverteringsinngangen og 0V -referansen.

DC -forskyvning

DC -forskyvningskretsen har to hovedkomponenter: en spenningsdeler og en kondensator. Spenningsdeleren er laget av to 100k motstander koblet i serie fra Arduinos 5V forsyning til bakken. Siden motstandene har samme motstand, er spenningen ved krysset mellom dem lik 2,5V. Dette 2.5V -krysset er knyttet til forsterkerens utgang via en 10uF kondensator. Etter hvert som spenningen på forsterkerens side av kondensatoren stiger og faller, får den ladning til å akkumulere og frastøte fra siden av kondensatoren festet til 2,5V -krysset. Dette får spenningen ved 2,5V -krysset til å svinge opp og ned, sentrert rundt 2,5V.

Som vist i skjematisk, kobler du den negative ledningen til en 10uF kondensator til utgangen fra forsterkeren. Koble den andre siden av hetten til krysset mellom to 100k motstander koblet i serie mellom 5V og jord. Legg også til en 47nF kondensator fra 2,5V til bakken.

Trinn 3: Nedbryting av signalet til en sum av stasjonære sinusoider - teori

Nedbryting av signalet til en sum av stasjonære sinusoider - teori
Nedbryting av signalet til en sum av stasjonære sinusoider - teori

Lydsignalet som sendes ut via en 3,5 mm -kontakt er i

område fra 20 Hz til 20 kHz. Det samples ved 44,1 kHz og hver prøve er kodet på 16 bits.

For å dekonstruere de grunnleggende elementære frekvensene som utgjør lydsignalet, bruker vi Fourier Transform på signalet, som bryter ned signalet til en sum av stasjonære sinusoider. Med andre ord konverterer Fourier -analyse et signal fra det opprinnelige domenet (ofte tid eller rom) til en representasjon i frekvensdomenet og omvendt. Men å beregne det direkte fra definisjonen er ofte for tregt til å være praktisk.

Figurer viser hvordan signalet ser ut i tids- og frekvensdomenet.

Det er her Fast Fourier Transform (FFT) -algoritmen er ganske nyttig!

Per definisjon, En FFT beregner slike transformasjoner raskt ved å faktorisere DFT -matrisen til et produkt av sparsomme (stort sett null) faktorer. Som et resultat klarer det å redusere kompleksiteten ved å beregne DFT fra O (N2), som oppstår hvis man bare bruker definisjonen av DFT, til O (N log N), hvor N er datastørrelsen. Forskjellen i hastighet kan være enorm, spesielt for lange datasett der N kan være i tusenvis eller millioner. I nærvær av avrundingsfeil er mange FFT-algoritmer mye mer nøyaktige enn å evaluere DFT-definisjonen direkte eller indirekte.

Enkelt sagt betyr det bare at FFT -algoritmen er en raskere måte å beregne Fourier -transformasjonen av ethvert signal. Dette brukes vanligvis på enheter med lav datakraft.

Anbefalt: