Inhoudsopgave:

Lichtshowjack dat reageert op muziek - Ajarnpa
Lichtshowjack dat reageert op muziek - Ajarnpa

Video: Lichtshowjack dat reageert op muziek - Ajarnpa

Video: Lichtshowjack dat reageert op muziek - Ajarnpa
Video: Albert Heijn goes kinda hard 😂 #dutch #muziek 2024, November
Anonim
Lichtshowjack dat reageert op muziek
Lichtshowjack dat reageert op muziek

Deze tutorial is gemaakt als onderdeel van mijn afstudeerproject voor mijn graad in Muziektechnologie en Toegepaste Elektronica aan de Universiteit van York. Het is bedoeld voor muzikanten met interesse in elektronica. Het eindproduct is een LED-matrix op de achterkant van een jas die een lichtshow kan produceren in overeenstemming met muziek. Dit wordt gedaan door audio-invoer te analyseren met behulp van Pure Data en Arduino. De jas heeft twee standen die met een schakelaar kunnen worden bediend. Eén instelling regelt de LED's volgens de amplitude van de muziek en de andere laat de LED's één voor één fonkelen en van kleur veranderen volgens de toonhoogte.

Hoe het zal werken

Dit apparaat zal bestaan uit twee afzonderlijke circuits. De ene zal gebaseerd zijn op een Arduino Mega die rechtstreeks op een computer is aangesloten. Het andere circuit zal gebaseerd zijn op een LilyPad Arduino en zal volledig in de jas zitten en gevoed worden via een 9V-batterij. Beide circuits zullen draadloos met elkaar communiceren via XBee-modules. Audiosignalen worden ontvangen door de ingebouwde microfoon van de computer en geanalyseerd in Pure Data om amplitude- en frequentiegegevens te verkrijgen. Deze informatie wordt via een MIDI-invoercircuit naar de Arduino Mega overgebracht en vervolgens met behulp van de XBees naar de LilyPad verzonden. De LilyPad bepaalt vervolgens hoe de LED's op de jas reageren.

Wat je nodig zult hebben

Voor het megacircuit

  • Arduino Mega 2560
  • XBee Explorer gereguleerd
  • XBee 1mW Trace Antenne - Serie 1
  • Prototyping-schild voor de Mega
  • USB Type A naar B
  • USB naar MIDI-kabel
  • MIDI-aansluiting
  • 1 x 220Ω Weerstand
  • 1 x 270Ω Weerstand
  • 1 x 1N4148 Diode
  • 1 x 6N138 Optocoupler

Voor het LilyPad-circuit

  • LilyPad Arduino 328 moederbord
  • LilyPad XBee Breakout Board
  • XBee 1mW Trace Antenne - Serie 1
  • LilyPad FTDI Basic Breakout Board
  • 72 x LilyPad-LED's (een reeks van alle kleuren beschikbaar, waaronder wit, blauw, rood, geel, groen, roze en paars)
  • LilyPad-schuifschakelaar
  • USB 2.0 A-Male naar Mini-B-kabel
  • 9V batterij
  • 9V batterijclip

Ander

  • Jasje
  • Computer met Pure Data en de Arduino IDE geïnstalleerd
  • Apparatuur draad
  • Soldeerapparatuur
  • Draadsnijders
  • Draadstrippers
  • Naald met een groot oog
  • Draad
  • Geleidende draad
  • Schaar
  • Rolmaat
  • Textiellijm of doorzichtige nagellak
  • Krijt of witte eyeliner
  • Stof voor een voering of een oud t-shirt
  • klittenband
  • Boor (eventueel)
  • Standaard LED (voor testen)
  • Breadboard (om te testen)
  • Nog een 220Ω-weerstand (voor testen)
  • Multimeter (voor testen)

De kosten van dit project zullen sterk afhangen van hoeveel van de bovenstaande apparatuur u al bezit. Het zal echter waarschijnlijk ergens tussen de £ 150 - £ 200 zijn.

Een korte opmerking: de LilyPad-borden zijn ontworpen om rechtstreeks op textiel te worden genaaid en daarom kan het solderen van een 9V-batterijclip aan een klem problemen veroorzaken. De verbinding kan delicaat zijn en gemakkelijk worden verbroken. U kunt speciaal ontworpen LilyPad-kaarten krijgen voor AAA- of LiPo-batterijen die u misschien liever gebruikt. Ik heb er echter nog steeds voor gekozen om de 9V-route te volgen, omdat hun levensduur van de batterij langer is dan die van AAA's en mijn universiteit beperkingen heeft op het gebruik van LiPo-batterijen.

Stap 1: Het MIDI-invoercircuit maken

Het MIDI-invoercircuit maken
Het MIDI-invoercircuit maken
Het MIDI-invoercircuit maken
Het MIDI-invoercircuit maken
Het MIDI-invoercircuit maken
Het MIDI-invoercircuit maken

Laten we eerst eens kijken naar het MIDI-invoercircuit. Dit moet worden geconstrueerd op het prototyping-bord dat in de Arduino Mega past. Dit wordt gebruikt om MIDI-berichten van de Pure Data-patch naar de Mega te sturen via de 'COMMUNICATION RX0'-pin. Zie hierboven voor een schakelschema en een foto. Afhankelijk van je prototyping-bord, kan je lay-out iets anders zijn, maar ik heb ervoor gekozen om de MIDI-aansluiting in de linkerbenedenhoek te plaatsen. Mogelijk moet hier een boor worden gebruikt om de gaten in het schild groter te maken om in de socket te passen. De rode draden op de foto zijn verbonden met 5V, de bruine zijn verbonden met aarde, de zwarte draad is verbonden met pin 3 op de 6N138, de blauwe draad is verbonden met pin 2 op de 6N138 en de gele draden zijn verbonden met de RX0 pin. Er is ruimte over aan de rechterkant van het prototypebord om later ruimte te maken voor de XBee. Er zullen waarschijnlijk pauzes moeten worden gemaakt in de sporen op het bord. Voor dit voorbeeld moesten ze tussen de pinnen op de 6N138 worden gemaakt.

Het MIDI-ingangscircuit testen

Om het circuit te testen, uploadt u de onderstaande code naar de Arduino Mega met behulp van de USB Type A naar B-kabel. Zorg ervoor dat het schild niet is geplaatst wanneer u dit doet, omdat de code niet kan worden geüpload als er iets is aangesloten op de RX- of TX-pinnen. De code bevat ook de MIDI.h-bibliotheek die u mogelijk moet downloaden, beschikbaar via de onderstaande link.

MIDI.h

Steek vervolgens het schild in de mega en sluit het aan op een andere USB-poort op uw computer via de MIDI-naar-USB-kabel. Het MIDI-uiteinde dat u moet gebruiken, krijgt het label 'out'. Maak een eenvoudige schakeling op een breadboard die pin 2 verbindt met een 220Ω weerstand en deze vervolgens aansluit op de anode van een standaard LED. Verbind de kathode van de LED's met aarde.

Maak vervolgens een eenvoudige Pure Data-patch met een [60 100]-bericht en een [0 0]-bericht, beide verbonden met een noteout-object via de linkeringang. Zorg ervoor dat deze patch is aangesloten op het MIDI-invoercircuit door de MIDI-instellingen te openen en het uitvoerapparaat te wijzigen. Als dit niet beschikbaar is, zorg er dan voor dat u het MIDI-circuit op uw computer hebt aangesloten voordat u Pure Data opende. Nu, als uw circuit correct is, moet de LED oplichten wanneer het [60 100]-bericht wordt ingedrukt en het moet uitgaan wanneer het [0 0]-bericht wordt ingedrukt.

Stap 2: De LED-matrix ontwerpen

De LED-matrix ontwerpen
De LED-matrix ontwerpen
De LED-matrix ontwerpen
De LED-matrix ontwerpen
De LED-matrix ontwerpen
De LED-matrix ontwerpen

Vervolgens moet rekening worden gehouden met de LED-matrix voor de achterkant van de jas. Dit wordt rechtstreeks verbonden met het hoofd LilyPad-bord. Normaal gesproken, om LED's te besturen met behulp van een microcontroller, zouden ze elk worden toegewezen aan hun eigen individuele pinnen. Met slechts één Arduino LilyPad zou dit echter zeer beperkend zijn. In totaal heeft de LilyPad 12 digitale pinnen en 6 analoge, dus mogelijk 18 uitgangspinnen. Omdat een van deze pinnen later zal worden gebruikt om een schuifschakelaar te bedienen, blijven er echter nog maar 17 over.

In deze situatie kan een techniek worden gebruikt die multiplexing wordt genoemd om het potentieel van de bedieningspinnen van de LilyPad te maximaliseren. Hierbij wordt gebruik gemaakt van twee feiten:

  • LED's zijn diodes en laten de stroom maar in één richting door.
  • Menselijke ogen en hersenen verwerken beelden veel langzamer dan licht kan reizen, dus als LED's snel genoeg knipperen, merken we het niet. Dit is een concept dat bekend staat als "Persistence of Vision".

Door deze techniek te gebruiken, is het aantal LED's dat kan worden aangestuurd (n/2) x (n-(n/2)) waarbij n het aantal beschikbare controlepinnen is. Daarom zou het met 17 beschikbare pinnen mogelijk moeten zijn om 72 LED's aan te sturen in een 9x8 matrix.

Een diagram voor de lay-out van LED's in een 9x8-matrix is hierboven te zien, inclusief suggesties voor de pinnen waarmee elke rij en kolom moet worden verbonden. Het is belangrijk op te merken dat de rijen en kolommen elkaar niet mogen raken. Ook zijn er geen weerstanden nodig omdat elke LED zijn eigen ingebouwde weerstand heeft met een weerstand van 100Ω.

Voordat u begint met naaien, moet u de lay-out van het circuit op de jas plannen. Een goede plek om hier te beginnen is door op de jas te markeren waar de LED's komen met kleine stippen, met behulp van een meetlint om ervoor te zorgen dat ze gelijkmatig verdeeld zijn. Voor een zwart leren jack werkt witte eyeliner heel goed en kan deze gemakkelijk worden weggeveegd als er een fout wordt gemaakt. Andere media zoals krijt kunnen echter ook werken, afhankelijk van het materiaal en de kleur van je jas. De rangschikking van de LED-kleuren die ik heb gebruikt, is hierboven te zien, wat zal werken met de later verstrekte code. U bent van harte welkom om een andere lay-out te gebruiken, hoewel dit in de code moet worden gewijzigd.

Het volgende waar u aan moet denken, is waar de LilyPad, LilyPad XBee en de voeding naartoe gaan. Voor de jas die ik gebruikte, leek de meest verstandige en discrete plaats aan de achterkant van de jas, aan de onderkant en aan de binnenvoering. Dit komt omdat het onwaarschijnlijk is dat het hier door de armen van de drager wordt geslagen en het gemakkelijk toegang heeft tot de LED-matrix. Omdat de jas die ik gebruikte aan de onderkant los zat, was hij nog steeds comfortabel.

Stap 3: De LED-matrix naaien

De LED-matrix naaien
De LED-matrix naaien
De LED-matrix naaien
De LED-matrix naaien
De LED-matrix naaien
De LED-matrix naaien

Op dit punt kunt u beginnen met naaien. Geleidende draad kan lastig zijn om mee te werken, dus hier zijn een paar handige tips:

  • Door een onderdeel op zijn plaats te lijmen met textiellijm, wordt het naaien veel gemakkelijker.
  • Verschillende soorten steken hebben verschillende esthetische en functionele eigenschappen, dus het is de moeite waard om hiernaar te kijken voordat u begint. Een eenvoudige lopende steek zou echter goed moeten zijn voor dit project.
  • De knopen hebben de neiging om vrij gemakkelijk los te komen met geleidende draad, omdat het "veerkrachtiger" is dan normaal. Een oplossing hiervoor is het gebruik van een kleine hoeveelheid transparante nagellak of textiellijm om ze af te dichten. Geef ze de tijd om te drogen voordat ze hun staarten afsnijden.
  • Bij het maken van verbindingen met circuitcomponenten of het samenvoegen van twee lijnen geleidende draad, is het een goed idee om deze meerdere keren te naaien om ervoor te zorgen dat er een goede mechanische en elektrische verbinding is gemaakt.
  • Zorg ervoor dat je naald scherp is en een groot oog heeft. Door de jas heen komen kan moeilijk zijn en geleidende draad is dikker dan normaal.
  • Pas op voor losse haren op de draad. Deze kunnen kortsluiting in het circuit veroorzaken als ze andere naailijnen raken. Als dit een groot probleem wordt, kunnen alle lijnen worden verzegeld met de heldere nagellak of textiellijm zodra het testen heeft plaatsgevonden en alles zeker correct werkt.

Een goede plek om te beginnen met naaien is bij de rijen. Om ze zo recht mogelijk te maken, kunt u met een liniaal vage lijnen trekken om langs te naaien. Zodra je deze hebt genaaid, ga je naar de kolommen. Elke keer dat een rij wordt bereikt, moet grote zorg worden besteed, omdat het essentieel is dat de twee elkaar niet kruisen. Dit kan worden bereikt door de steek voor de kolom aan de binnenkant van de jas voor deze kruising te maken, zoals te zien is op de bovenstaande foto. Wanneer u alle rijen en kolommen hebt voltooid, kan een multimeter worden gebruikt om te controleren of er geen kortsluiting is.

Zodra u tevreden bent, begint u met het naaien van de LED's voor de kolom aan de rechterkant van de jas. Zorg ervoor dat elke anode aan zijn eigen rij is bevestigd en dat elke kathode aan de linkerkolom is bevestigd. Plaats vervolgens de LilyPad Arduino op zijn plaats met behulp van textiellijm ergens ongeveer onder deze kolom, en zorg ervoor dat de pinnen voor het FTDI-breakoutboard naar beneden zijn gericht. Naai pin 11 van de LilyPad aan rij 1, pin 12 aan rij 2 enzovoort totdat pin A5 aan rij 9 is genaaid. Naai vervolgens pin 10 aan de uiterst rechtse kolom. Om deze eerste kolom te testen kun je onderstaande code gebruiken. Upload de code en voed de LilyPad door hem op uw computer aan te sluiten met behulp van het FTDI-breakoutboard en de USB 2.0 A-Male naar Mini-B-kabel.

Als de juiste poort niet beschikbaar is wanneer u de LilyPad aansluit, moet u mogelijk een FTDI-stuurprogramma installeren dat beschikbaar is via de onderstaande link.

Installatie van FTDI-stuurprogramma

Zodra deze eerste kolom met LED's oplicht, is het tijd om de rest op de jas te naaien. Dit is een behoorlijk tijdrovend proces en daarom is het waarschijnlijk het beste om het over een paar dagen uit te spreiden. Zorg ervoor dat u elke kolom test terwijl u doorgaat. U kunt dit doen door de bovenstaande code aan te passen, zodat de pin voor de kolom die u wilt testen, in de setup als een output wordt gedeclareerd en vervolgens in de lus op LOW wordt ingesteld. Zorg ervoor dat de andere kolompennen op HOOG staan, want dan zijn ze uitgeschakeld.

Stap 4: Een schakelaar toevoegen

Een schakelaar toevoegen
Een schakelaar toevoegen

Vervolgens kunt u een schakelaar toevoegen die wordt gebruikt om de instellingen op de jas te wijzigen. Het moet aan de binnenkant van de jas onder het LilyPad Arduino-bord worden genaaid. Met behulp van geleidende draad moet het uiteinde met het label "off" worden verbonden met aarde en het uiteinde met het label "on" moet worden verbonden met pin 2.

U kunt de schakelaar testen met behulp van de onderstaande code. Dit is heel eenvoudig en zet de LED rechtsonder aan als de schakelaar open is en gaat uit als de schakelaar gesloten is.

Stap 5: Het apparaat draadloos maken

Het apparaat draadloos maken
Het apparaat draadloos maken
Het apparaat draadloos maken
Het apparaat draadloos maken
Het apparaat draadloos maken
Het apparaat draadloos maken

De LilyPad XBee en XBee Explorer voorbereiden

Bereid de LilyPad XBee voor op configuratie door te solderen op een 6-pins haakse mannelijke header. Hierdoor kan het later op een computer worden aangesloten via het LilyPad FTDI Basic Breakout-bord en de USB Mini-kabel. Soldeer ook de 9V-batterijclip aan de LilyPad XBee met de rode draad naar de "+"-pin en de zwarte draad naar de "-"-pin.

Sluit het Explorer-bord aan op het prototype-schild voor de Arduino Mega. 5V en aarde op het Explorer-bord moeten worden aangesloten op 5V en aarde op de Mega, de uitgangspin op de Explorer moet worden aangesloten op RX1 op de Mega en de ingang op de Explorer moet worden aangesloten op TX1 op de Mega.

De XBees configureren

Vervolgens moeten de XBees worden geconfigureerd. Allereerst moet u de CoolTerm-software gratis installeren die beschikbaar is via de onderstaande link.

CoolTerm-software

Zorg ervoor dat u op de een of andere manier onderscheid maakt tussen de twee XBees, want het is belangrijk dat u ze niet door elkaar haalt.

Configureer eerst de XBee voor de computer. Plaats het in het LilyPad XBee Breakout-bord en sluit dit aan op de computer met behulp van het FTDI-basisbreakout-bord en de USB-minikabel. Open CoolTerm en selecteer in de Opties de juiste seriële poort. Als je het niet kunt zien, probeer dan op 'Re-Scan Serial Ports' te drukken. Zorg er vervolgens voor dat de baudrate is ingesteld op 9600, schakel Local Echo in en stel de Key Emulation in op CR. CoolTerm kan nu worden aangesloten op de XBee.

Typ "+++" in het hoofdvenster om de XBee in de opdrachtmodus te zetten. Druk niet op return. Hierdoor kan het worden geconfigureerd met behulp van AT-opdrachten. Als dit is gelukt, moet er na een zeer korte pauze een antwoord op het bericht "OK" zijn. Als er een vertraging van meer dan 30 seconden is voor de volgende regel, wordt de opdrachtmodus afgesloten en moet dit worden herhaald. Er moeten talloze AT-commando's worden ingevoerd om de PAN ID, MY ID, Destination ID in te stellen en de wijzigingen op te slaan. Na elk van deze commando's moet er op Return worden gedrukt en deze zijn te zien in de bovenstaande tabel. Nadat dit is voltooid voor de computer XBee, moet deze worden losgekoppeld en moet hetzelfde proces worden uitgevoerd voor de jas XBee.

U kunt de nieuwe XBee-instellingen controleren door elk AT-commando in te typen zonder de waarde aan het einde. Als u bijvoorbeeld "ATID" typt en op Return drukt, moet "1234" worden herhaald.

De XBees testen

Naai nu de LilyPad XBee op de jas naast LilyPad Arduino. De volgende verbindingen moeten worden gemaakt met geleidende draad:

  • 3.3V op de LilyPad XBee naar '+' op de LilyPad
  • Grond op de LilyPad XBee naar Grond op de LilyPad
  • RX op de LilyPad XBee naar TX op de LilyPad
  • TX op de LilyPad XBee naar RX op de LilyPad

Nu kan het apparaat worden getest om er zeker van te zijn dat de XBees correct werkten. De onderstaande code genaamd 'Wireless_Test_Mega' moet worden geüpload naar de Arduino Mega en het belangrijkste doel is om MIDI-berichten te ontvangen van de eenvoudige Pure Data-patch die eerder is gemaakt, en om verschillende waarden via de XBee te verzenden. Als een MIDI-noot met een toonhoogte van 60 wordt ontvangen, wordt het bericht 'a' verzonden. Als alternatief, als een noteoff-bericht wordt ontvangen, wordt 'b' verzonden.

Daarnaast moet de onderstaande code met de naam 'Wireless_Test_LilyPad' worden geüpload naar de LilyPad. Deze ontvangt de berichten van de Mega via de XBees en stuurt de LED rechtsonder dienovereenkomstig aan. Als het bericht 'a' wordt ontvangen, wat betekent dat een MIDI-noot met een toonhoogte van 60 door de Mega is ontvangen, gaat de LED branden. Aan de andere kant, als 'a' niet wordt ontvangen, gaat de LED uit.

Nadat de code naar beide kaarten is geüpload, moet u ervoor zorgen dat het schild opnieuw in de Mega is geplaatst en via beide kabels op de computer is aangesloten. Plaats de computer XBee in het Explorer-bord. Zorg er vervolgens voor dat het FTDI Breakout-bord is losgekoppeld van de jacket en plaats de jacket XBee in de LilyPad XBee. Sluit de 9V-batterij aan en probeer op de verschillende berichten in Pure Data te drukken. De LED rechtsonder op de jas moet aan en uit gaan.

Stap 6: laatste hand

Laatste puntjes op de i
Laatste puntjes op de i
Laatste puntjes op de i
Laatste puntjes op de i
Laatste puntjes op de i
Laatste puntjes op de i

De code en pure data-patch

Als je tevreden bent dat de jas draadloos werkt, upload dan de onderstaande 'MegaCode'-schets naar de Arduino Mega en de 'LilyPadCode'-schets naar de LilyPad. Open de Pure Data-patch en zorg ervoor dat DSP is ingeschakeld en dat de audio-invoer is ingesteld op de ingebouwde microfoon van uw computer. Probeer wat muziek af te spelen en de schakelaar te verplaatsen. Mogelijk moet u de drempels in Pure Data enigszins aanpassen, afhankelijk van hoeveel of weinig de LED's op de audio reageren.

Een nieuwe voering toevoegen

Ten slotte, om de jas esthetischer en comfortabeler te maken om te dragen, kan een andere voering aan de binnenkant van de jas worden toegevoegd om het naaiwerk en de componenten te bedekken. Dit moet worden gedaan met klittenband om gemakkelijke toegang tot het circuit mogelijk te maken voor het geval er wijzigingen moeten worden aangebracht.

Naai eerst de 'lus'-stroken (het zachtere deel) aan de binnenkant, langs de bovenkant en aan beide zijkanten aan de jas. Het is een goed idee om de bodem vrij te laten, omdat hierdoor lucht bij de onderdelen kan komen. Knip vervolgens een stuk stof van dezelfde grootte en naai hieraan de 'haak'-stroken van het klittenband, langs de bovenkant en aan beide zijkanten. Naai ook, aan dezelfde kant als het klittenband en op de handigste plaats, een zak vast waar de batterij in kan zitten. Zie de afbeeldingen hierboven voor voorbeelden.

Stap 7: Je bent klaar

Uw draadloze lichtshowjas zou nu compleet moeten zijn en succesvol moeten reageren op audio! De ene instelling moet een effect creëren zoals een amplitudebalk en de andere moet individuele LED's hebben die op de muziek fonkelen met hun kleuren, afhankelijk van de toonhoogte. Zie hierboven voor videovoorbeelden. Voor het geval je je afvroeg, de kleur en toonhoogte zijn gerelateerd via de Rozenkruisersorde die is gebaseerd op rechtvaardige intonatie. Ik hoop dat je genoten hebt van dit project!

Aanbevolen: