Indholdsfortegnelse:

Light Show -jakke, der reagerer på musik: 7 trin (med billeder)
Light Show -jakke, der reagerer på musik: 7 trin (med billeder)

Video: Light Show -jakke, der reagerer på musik: 7 trin (med billeder)

Video: Light Show -jakke, der reagerer på musik: 7 trin (med billeder)
Video: Sikkerhedsstyrelsen - Nytår Igen | ft. Jesu Brødre, Niels Olsen, Lina Rafn, Shambs & Klam Vandmand 2024, Juli
Anonim
Light Show -jakke, der reagerer på musik
Light Show -jakke, der reagerer på musik

Denne vejledning er blevet produceret som en del af mit sidste års projekt for min uddannelse i musikteknologi og anvendt elektronik ved University of York. Det henvender sig til musikere med interesse for elektronik. Det færdige produkt vil være en LED -matrix på bagsiden af en jakke, der kan producere et lysshow i overensstemmelse med musik. Dette vil blive gjort ved at analysere lydindgange ved hjælp af Pure Data og Arduino. Jakken har to indstillinger, der kan styres af en kontakt. Den ene indstilling styrer lysdioderne i henhold til musikens amplitude, og den anden får lysdioderne til at blinke en ad gangen og skifte farve i henhold til tonehøjden.

Hvordan det vil fungere

Denne enhed består af to separate kredsløb. Den ene vil være baseret på en Arduino Mega, der er forbundet direkte til en computer. Det andet kredsløb vil være baseret på en LilyPad Arduino og vil være fuldstændig indeholdt i jakken og drives af et 9V batteri. Begge disse kredsløb kommunikerer trådløst med hinanden ved hjælp af XBee -moduler. Lydsignaler vil blive modtaget af computerens indbyggede mikrofon og analyseret i Pure Data for at opnå amplitude- og frekvensdata. Disse oplysninger vil blive overført til Arduino Mega ved hjælp af et MIDI -indgangskredsløb, og dette vil derefter blive overført til LilyPad ved hjælp af XBees. LilyPad bestemmer derefter, hvordan lysdioderne på jakken vil reagere.

Hvad du får brug for

Til Mega Circuit

  • Arduino Mega 2560
  • XBee Explorer reguleret
  • XBee 1mW Trace Antenne - Serie 1
  • Prototyping Shield til Mega
  • USB Type A til B
  • USB til MIDI kabel
  • MIDI -stik
  • 1 x 220Ω modstand
  • 1 x 270Ω modstand
  • 1 x 1N4148 Diode
  • 1 x 6N138 optokobler

Til LilyPad -kredsløbet

  • LilyPad Arduino 328 hovedkort
  • LilyPad XBee Breakout Board
  • XBee 1mW Trace Antenne - Serie 1
  • LilyPad FTDI Basic Breakout Board
  • 72 x LilyPad -lysdioder (en række af alle farver, herunder hvid, blå, rød, gul, grøn, pink og lilla)
  • LilyPad Slide Switch
  • USB 2.0 A-han til mini-B kabel
  • 9V batteri
  • 9V batteriklemme

Andet

  • Jakke
  • Computer med Pure Data og Arduino IDE installeret
  • Udstyr Wire
  • Loddeudstyr
  • Trådskærere
  • Wire Strippers
  • Nål med et stort øje
  • Tråd
  • Ledende tråd
  • Saks
  • Målebånd
  • Stofflim eller klar neglelak
  • Kridt eller hvid Eyeliner
  • Stof til for eller en gammel t-shirt
  • velcro
  • Bor (muligvis)
  • Standard LED (til test)
  • Brødbræt (til test)
  • En anden 220Ω modstand (til test)
  • Multimeter (til test)

Omkostningerne ved dette projekt afhænger meget af, hvor meget af ovenstående udstyr du allerede ejer. Det er dog sandsynligvis et sted mellem £ 150 - £ 200.

En hurtig bemærkning - LilyPad -pladerne er designet til at blive syet direkte til tekstiler, og derfor kan lodning af et 9V batteriklemme forårsage problemer. Forbindelsen kan være delikat og let brudt. Du kan få specielt designet LilyPad -tavler til AAA- eller LiPo -batterier, som du kan beslutte, at du hellere vil bruge. Jeg valgte dog stadig at gå ned på 9V -ruten, da deres batterilevetid er større end AAA'er, og mit universitet har begrænsninger for brugen af LiPo -batterier.

Trin 1: Oprettelse af MIDI Input Circuit

Oprettelse af MIDI Input Circuit
Oprettelse af MIDI Input Circuit
Oprettelse af MIDI Input Circuit
Oprettelse af MIDI Input Circuit
Oprettelse af MIDI Input Circuit
Oprettelse af MIDI Input Circuit

Lad os først og fremmest overveje MIDI Input kredsløb. Dette skal konstrueres på prototyperbrættet, der vil slippe ind i Arduino Mega. Dette vil blive brugt til at sende MIDI -meddelelser fra Pure Data -patchen til Mega'en via dens 'COMMUNICATION RX0' -pin. Se ovenfor for et kredsløbsdiagram og et foto. Afhængigt af dit prototypebord kan dit layout være lidt anderledes, men jeg valgte at placere MIDI-stikket i nederste venstre hjørne. Her skal der muligvis bruges en boremaskine til at gøre hullerne på skjoldet større for at passe til fatningen. De røde ledninger på billedet er forbundet til 5V, de brune er forbundet til jorden, den sorte ledning er forbundet til pin 3 på 6N138, den blå ledning er forbundet til pin 2 på 6N138, og de gule ledninger er forbundet til RX0 pin. Plads er tilbage på højre side af prototypebordet for at give plads til XBee senere. Der bliver sandsynligvis brug for afbrydelser i sporene på tavlen. I dette eksempel skulle de laves mellem stifterne på 6N138.

Test af MIDI Input Circuit

For at teste kredsløbet skal du uploade koden herunder til Arduino Mega ved hjælp af USB Type A til B -kablet. Sørg for, at skjoldet ikke er indsat, når du gør dette, da koden ikke kan uploades, hvis der er sluttet noget til RX- eller TX -benene. Koden indeholder også MIDI.h -biblioteket, som du muligvis skal downloade, tilgængeligt på nedenstående link.

MIDI.h

Sæt derefter skærmen i mega -en og tilslut den til en anden USB -port på din computer via MIDI til USB -kablet. Den MIDI -ende, du skal bruge, vil blive mærket 'out'. Opret et simpelt kredsløb på et brødbræt, der forbinder pin 2 til en 220Ω modstand, og tilslut derefter dette til anoden på en standard LED. Tilslut lysdiodernes katode til jorden.

Opret derefter en simpel Pure Data -patch med en [60 100] -meddelelse og en [0 0] -meddelelse, der begge er forbundet til et noteout -objekt via dets venstre indløb. Sørg for, at denne patch er forbundet til MIDI -inputkredsløbet ved at åbne MIDI -indstillingerne og ændre outputenheden. Hvis dette ikke er tilgængeligt, skal du sørge for at tilslutte MIDI -kredsløbet til din computer, før du åbnede Pure Data. Nu, hvis dit kredsløb er korrekt, skal LED'en lyse, når der trykkes på [60 100] meddelelsen, og den skal slukke, når der trykkes på [0 0] meddelelsen.

Trin 2: Design af LED Matrix

Design af LED Matrix
Design af LED Matrix
Design af LED Matrix
Design af LED Matrix
Design af LED Matrix
Design af LED Matrix

Dernæst skal LED -matrixen på bagsiden af jakken overvejes. Dette vil blive direkte forbundet til hovedlilyPad -kortet. Normalt ville de hver især blive tildelt deres egne individuelle stifter for at styre lysdioder ved hjælp af en mikrokontroller. Men med kun en Arduino LilyPad ville dette være meget begrænsende. I alt har LilyPad 12 digitale ben og 6 analoge, så potentielt 18 udgangsstifter. Men da en af disse stifter senere vil blive brugt til at styre en glidekontakt, vil dette kun efterlade 17 tilbage.

En teknik kan bruges i denne situation kaldet multiplexering for at maksimere potentialet i LilyPads kontrolnåle. Dette udnytter to fakta:

  • Lysdioder er dioder og tillader kun strøm at strømme i en retning.
  • Menneskelige øjne og hjerner behandler billeder meget langsommere, end lys kan rejse, så hvis lysdioder blinker hurtigt nok, vil vi ikke bemærke det. Dette er et begreb kendt som "Persistence of Vision".

Ved at bruge denne teknik er antallet af lysdioder, der kan styres, (n/2) x (n- (n/2)), hvor n er antallet af tilgængelige styrepinde. Derfor bør det med 17 stifter være muligt at styre 72 lysdioder i en 9x8 matrix.

Et diagram for layoutet af lysdioder i en 9x8 matrix kan ses ovenfor, herunder forslag til stifterne, som hver række og kolonne skal forbindes til. Det er vigtigt at bemærke, at rækker og kolonner ikke må røre. Der kræves heller ingen modstande på grund af det faktum, at hver LED har sin egen indbyggede med en modstand på 100Ω.

Inden du begynder at sy, skal du planlægge kredsløbets layout på jakken. Et godt sted at starte her er ved at markere på jakken, hvor lysdioderne skal gå med små prikker, ved hjælp af et målebånd for at sikre, at de er jævnt fordelt. For en sort læderjakke fungerer hvid eyeliner meget godt og kan let tørres af, hvis der begås en fejl. Andre medier, såsom kridt, kan dog også fungere afhængigt af materialet og farven på din jakke. Arrangementet af LED -farverne, som jeg brugte, kan ses ovenfor, som fungerer med koden, der er givet senere. Du er velkommen til at bruge et andet layout, selvom dette skal ændres i koden.

Den næste ting at tænke på er, hvor LilyPad, LilyPad XBee og strømforsyningen skal hen. For den jakke, jeg brugte, syntes det mest fornuftige og diskrete sted at være på bagsiden af jakken, i bunden og på indersiden. Dette skyldes, at det er usandsynligt at blive slået af brugerens arme her, og det kan let få adgang til LED -matricen. Da den jakke, jeg brugte, var løs i bunden, var den stadig behagelig.

Trin 3: Syning af LED Matrix

Syning af LED Matrix
Syning af LED Matrix
Syning af LED Matrix
Syning af LED Matrix
Syning af LED Matrix
Syning af LED Matrix

På dette tidspunkt kan du begynde at sy. Ledende tråd kan være vanskelig at arbejde med, så her er et par nyttige tips:

  • Limning af en komponent på plads ved hjælp af stoflim gør det meget lettere at sy.
  • Forskellige stingtyper har forskellige æstetiske og funktionelle egenskaber, så det er værd at undersøge disse, før du går i gang. En grundlæggende løbesøm skulle dog være fin til dette projekt.
  • Knobene har en tendens til at løsne sig ganske let med ledende tråd, da det er “fjedrende” end normalt. En løsning på dette er at bruge en lille mængde klar neglelak eller stoflim til at forsegle dem. Lad dem få tid til at tørre, inden de skærer halerne af.
  • Når du opretter forbindelser til kredsløbskomponenter eller forbinder to linjer med ledende gevind, er det en god idé at sy over disse flere gange for at sikre, at der er skabt en god mekanisk og elektrisk forbindelse.
  • Sørg for, at din nål er skarp og har et stort øje. Det kan være hårdt at komme igennem jakken, og ledende tråd er tykkere end normalt.
  • Vær forsigtig med løse hår på tråden. Disse kan skabe shorts i kredsløbet, hvis de tilfældigvis rører ved andre syninger. Hvis disse bliver et stort problem, kan alle linjerne forsegles med den klare neglelak eller stoflim, når afprøvningen har fundet sted, og alt fungerer bestemt korrekt.

Et godt sted at begynde at sy er med rækkerne. For at gøre dem så lige som muligt kan du tegne svage linjer til at sy sammen med en lineal. Når du har syet disse, skal du gå videre til søjlerne. Der skal udvises stor forsigtighed, hver gang en række nås, fordi det er vigtigt, at de to ikke krydser hinanden. Dette kan opnås ved at oprette sømmen til søjlen på indersiden af jakken til dette kryds, som det ses på billedet ovenfor. Når du har udfyldt alle rækker og kolonner, kan et multimeter bruges til at kontrollere, at der ikke er shorts.

Når du er tilfreds, skal du begynde at sy lysdioderne til søjlen yderst til højre på jakken. Sørg for, at hver anode er knyttet til sin egen række, og at hver katode er fastgjort til kolonnen til venstre. Læg derefter LilyPad Arduino på plads ved hjælp af stoflim et sted nogenlunde nogenlunde under denne kolonne, og sørg for, at benene til FTDI -udbrudskortet vender nedad. Sy pin 11 af LilyPad til række 1, pin 12 til række 2 og så videre, indtil pin A5 er syet til række 9. Sy derefter pin 10 til kolonnen yderst til højre. For at teste denne første kolonne kan du bruge nedenstående kode. Upload koden og tænd for LilyPad ved at slutte den til din computer ved hjælp af FTDI breakout board og USB 2.0 A-Male til Mini-B kablet.

Hvis den korrekte port ikke er tilgængelig, når du tilslutter LilyPad, skal du muligvis installere en FTDI -driver, der er tilgængelig via nedenstående link.

Installation af FTDI -driver

Når du har denne første kolonne med lysdioder tændt, er det tid til at sy resten på jakken. Dette er en ganske tidskrævende proces, og derfor er det bedst at være fordelt over et par dage. Sørg for at teste hver kolonne undervejs. Du kan gøre dette ved at tilpasse koden ovenfor, så stiften til den kolonne, du vil teste, erklæres som et output i opsætningen, og derefter sættes den LAV i loop. Sørg for, at de andre søjlestifter er indstillet til HØJ, da dette vil sikre, at de er slukket.

Trin 4: Tilføjelse af en switch

Tilføjelse af en switch
Tilføjelse af en switch

Dernæst kan du tilføje en switch, der bruges til at ændre indstillingerne på jakken. Det skal syes på indersiden af jakken under LilyPad Arduino -tavlen. Ved hjælp af ledende tråd skal enden mærket "off" sluttes til jorden, og enden mærket "on" skal tilsluttes pin 2.

Du kan teste kontakten ved hjælp af nedenstående kode. Dette er meget enkelt og tænder den nederste højre LED, hvis kontakten er åben, og slukker, hvis kontakten er lukket.

Trin 5: Gør enheden trådløs

Gør enheden trådløs
Gør enheden trådløs
Gør enheden trådløs
Gør enheden trådløs
Gør enheden trådløs
Gør enheden trådløs

Forberedelse af LilyPad XBee og XBee Explorer

Forbered LilyPad XBee til konfiguration ved lodning på et 6-benet retvinklet hanhoved. Dette gør det senere muligt at tilslutte den til en computer via LilyPad FTDI Basic Breakout -kortet og USB Mini -kablet. Lod også 9V batteriklemmen til LilyPad XBee med den røde ledning til "+"-stiften og den sorte ledning til "-"-stiften.

Tilslut Explorer -kortet til prototypeskærmen til Arduino Mega. 5V og Ground på Explorer -kortet skal tilsluttes 5V og Ground on Mega, output -pin på Explorer skal tilsluttes RX1 på Mega, og input på Explorer skal tilslutte til TX1 på Mega.

Konfiguration af XBees

Dernæst skal XBees konfigureres. Først og fremmest skal du installere CoolTerm -softwaren gratis, som er tilgængelig fra nedenstående link.

CoolTerm -software

Sørg for at skelne mellem de to XBees på en eller anden måde, da det er vigtigt, at du ikke blander dem.

Konfigurer først XBee til computeren. Indsæt det i LilyPad XBee Breakout -kortet, og tilslut dette til computeren ved hjælp af FTDI basic breakout board og USB Mini -kabel. Åbn CoolTerm, og vælg den korrekte serielle port i indstillingerne. Hvis du ikke kan se det, kan du prøve at trykke på 'Re-Scan serielle porte'. Sørg derefter for, at baudhastigheden er indstillet til 9600, tænd for Local Echo og indstil Key Emulation til CR. CoolTerm kan nu tilsluttes XBee.

Skriv "+++" i hovedvinduet for at sætte XBee i kommandotilstand. Tryk ikke på retur. Dette gør det muligt at konfigurere det ved hjælp af AT -kommandoer. Hvis dette er lykkedes, bør der efter en meget kort pause være et "OK" beskedsvar. Hvis der er en forsinkelse på mere end 30 sekunder før den næste linje, afslutter kommandotilstanden, og dette skal gentages. Der skal indtastes mange AT -kommandoer for at indstille PAN ID, MIT ID, Destinations -ID og gemme ændringerne. Retur skal rammes efter hver af disse kommandoer, og disse kan ses i tabellen ovenfor. Når dette var afsluttet for computerens XBee, skal den afbrydes, og den samme proces skal udføres for jakken XBee.

Du kan kontrollere de nye XBee -indstillinger ved at indtaste hver AT -kommando uden værdien i slutningen. For eksempel, hvis du skriver "ATID" og rammer retur, skal "1234" ekko tilbage.

Test af XBees

På dette tidspunkt sys LilyPad XBee på jakken ved siden af LilyPad Arduino. Følgende forbindelser skal foretages med ledende gevind:

  • 3.3V på LilyPad XBee til '+' på LilyPad
  • Jord på LilyPad XBee til jord på LilyPad
  • RX på LilyPad XBee til TX på LilyPad
  • TX på LilyPad XBee til RX på LilyPad

Nu kan enheden testes for at sikre, at XBees fungerede korrekt. Nedenstående kode kaldet 'Wireless_Test_Mega' skal uploades til Arduino Mega, og dens hovedformål er at modtage MIDI -meddelelser fra den enkle Pure Data -patch, der blev oprettet tidligere, og overføre forskellige værdier via XBee. Hvis der modtages en MIDI -note med en tonehøjde på 60, sendes meddelelsen 'a'. Alternativt, hvis der modtages en notatbesked, sendes 'b'.

Ud over dette skal koden nedenfor kaldet 'Wireless_Test_LilyPad' uploades til LilyPad. Dette modtager beskederne fra Mega via XBees og kontrollerer LED'en nederst til højre i overensstemmelse hermed. Hvis meddelelsen 'a' modtages, hvilket betyder, at en MIDI -note med en tonehøjde på 60 var blevet modtaget af Mega, tænder LED'en. På den anden side, hvis 'a' ikke modtages, slukker LED'en.

Når koden er blevet uploadet til begge tavler, skal du sikre dig, at afskærmningen er blevet indsat i Mega igen, og at den er forbundet til computeren via begge kabler. Indsæt computerens XBee i Explorer -kortet. Sørg derefter for, at FTDI Breakout -kortet er frakoblet jakken, og sæt jakken XBee i LilyPad XBee. Tilslut 9V batteriet, og prøv at trykke på de forskellige meddelelser i Pure Data. LED'en nederst til højre på jakken skal tænde og slukke.

Trin 6: Sidste hånd

Sidste hånd
Sidste hånd
Sidste hånd
Sidste hånd
Sidste hånd
Sidste hånd

Koden og Pure Data Patch

Når du er glad for, at jakken fungerer trådløst, skal du uploade 'MegaCode' -skitsen herunder til Arduino Mega og 'LilyPadCode' -skitsen til LilyPad. Åbn Pure Data -patchen for at sikre, at DSP er tændt, og lydindgangen er indstillet til din computers indbyggede mikrofon. Prøv at afspille musik og flytte kontakten. Du skal muligvis justere tærsklerne i Pure Data lidt afhængigt af hvor meget eller lidt lysdioderne reagerer på lyden.

Tilføjelse af en ny foring

Endelig, for at gøre jakken mere æstetisk tiltalende og mere behagelig at have på, kan der tilføjes endnu et foring på indersiden af jakken for at dække syningen og komponenterne. Dette bør gøres ved hjælp af velcro for at give let adgang til kredsløbet, hvis der er behov for ændringer.

Sy først og fremmest 'løkke' -strimlerne (den blødere del) til jakken på indersiden langs toppen og ned på begge sider. Det er en god idé at lade bunden stå fri, da dette vil tillade luft at komme til komponenterne. Klip derefter et stykke stof af samme størrelse og sy 'velcro'ens' kroge 'strimler langs toppen og ned på begge sider. På samme side som velcroen og på det mest bekvemme sted kan du også sy en lomme, som batteriet kan sidde i. Se billederne ovenfor for eksempler.

Trin 7: Du er færdig

Din trådløse Light Show -jakke skal nu være komplet og med succes reagere på lyd! Den ene indstilling skal skabe en effekt som en amplitudebjælke, og den anden skal have individuelle lysdioder, der blinker til musikken med deres farver afhængigt af tonehøjden. Se videoeksempler ovenfor. I tilfælde af at du undrede dig, er farve og tonehøjde relateret via rosenkreuzerordenen, der er baseret på bare intonation. Jeg håber, at du nød dette projekt!

Anbefalede: