Inhoudsopgave:
- Stap 1: Materialen
- Stap 2: De software installeren
- Stap 3: De versnellingsmeter bevestigen
- Stap 4: De flexsensoren bevestigen
- Stap 5: Interface met Max
- Stap 6: De rest van de Max Code bouwen
- Stap 7: Letterlijk alles samenbrengen
Video: Draagbare technologie: stemveranderende handschoen - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Nou, het lijkt erop dat handschoenen met ongelooflijke krachten tegenwoordig een rage zijn. Hoewel de Infinity Gauntlet van Thanos een behoorlijk krachtige handschoen is, wilden we een handschoen maken die nog iets opmerkelijks zou kunnen doen: de stem van de drager in realtime veranderen.
Deze Instructable biedt een overzicht van hoe we een stemveranderende handschoen hebben ontworpen. Ons ontwerp maakte gebruik van verschillende sensoren en een microcontroller in de handschoen om bewegingen te detecteren, die via een Arduino-code naar een Max-patch werden gestuurd, waar ons audiosignaal vervolgens op leuke manieren werd gewijzigd en vervormd. De specifieke sensoren, bewegingen en geluidsaanpassingen die we hebben gebruikt, zijn allemaal flexibel voor verschillende overwegingen; dit is slechts één manier om een stemveranderende handschoen te maken!
Dit project maakte deel uit van een gemeenschapspartnerschap tussen Pomona College-studenten en de Fremont Academy of Engineering Femineers. Het is een echt leuke mix van elektronische techniek en elektronische muziekelementen!
Stap 1: Materialen
Onderdelen:
- HexWear-microcontroller (ATmega32U4) (https://hexwear.com/)
- MMA8451 versnellingsmeter (https://www.adafruit.com/product/2019)
- Korte Flex-sensoren (x4) (https://www.adafruit.com/product/1070)
- Lichtgewicht hardloophandschoen
- #2 schroeven en ringen (x8)
- Krimpaansluitingen; 22-18 gauge (x8) (https://www.elecdirect.com/crimp-wire-terminals/ring-crimp-terminals/pvc-ring-terminals/ring-terminal-pvc-red-22-18-6- 100 pk)
- 50kΩ weerstand (x4)
- Draad (~ 20 meter)
- Zelfklevende veiligheidsspeld
- Vilt of andere stof (~ 10 vierkante inch)
- Naaigaren
- Zipties
- laptop
- USB-microfoon
Gereedschap
- Soldeer kit
- Draadstrippers en draadknippers
- Elektrische tape
- Heteluchtpistool
- Schroevendraaier
- Schaar
- Naald
Software:
- Max van Cycling '74 (https://cycling74.com)
- Arduino-software (https://www.arduino.cc/en/Main/Software)
Stap 2: De software installeren
We beginnen met wat echt het meest opwindende deel van elk project is: het installeren van bibliotheken (en meer).
Arduino:
Download en installeer de Arduino-software (https://www.arduino.cc/en/Main/Software).
HexWear:
1) (Alleen Windows, Mac-gebruikers kunnen deze stap overslaan) Installeer de driver door naar https://www.redgerbera.com/pages/hexwear-driver-installation te gaan. Download en installeer het stuurprogramma (het.exe-bestand vermeld in stap 2 bovenaan de gekoppelde RedGerbera-pagina).
2) Installeer de vereiste bibliotheek voor Hexware. Open de Arduino-IDE. Selecteer onder "Bestand" "Voorkeuren". Plak in de ruimte die is voorzien voor URL's voor extra bordbeheer:
github.com/RedGerbera/Gerbera-Boards/raw/master/package_RedGerbera_index.json.
Klik vervolgens op "OK".
Ga naar Tools -> Board: -> Board Manager. Selecteer 'Bijgedragen' in het menu in de linkerbovenhoek.
Zoek naar en klik vervolgens op Gerbera Boards en klik op Installeren. Sluit Arduino IDE af en open het opnieuw.
Om ervoor te zorgen dat de bibliotheek correct is geïnstalleerd, gaat u naar Extra -> Bord en scrolt u naar de onderkant van het menu. Je zou een sectie moeten zien met de titel "Gerbera Boards", waaronder er op zijn minst HexWear zou moeten verschijnen (zo niet meer boards zoals mini-HexWear).
versnellingsmeter:
Download en installeer de accelerometer-bibliotheek (https://learn.adafruit.com/adafruit-mma8451-accelerometer-breakout/wiring-and-test)
Stap 3: De versnellingsmeter bevestigen
We hebben twee hoofdtypen sensoren nodig om met dit project te kunnen communiceren: een versnellingsmeter en flexsensoren. We zullen deze één voor één bekijken, te beginnen met de versnellingsmeter. Ten eerste hebben we de hardwareverbindingen nodig om overeen te komen.
Om schade aan je Hex te voorkomen, raden we aan om een nr. 2 schroef en sluitring door de gewenste poorten te steken en vervolgens alle verbindingen aan die schroef te bevestigen. Om te voorkomen dat er iets losraakt tijdens het spelen met de handschoen, dienen verbindingen gesoldeerd en/of gekrompen te worden. Gebruik een draad van enkele centimeters voor elke verbinding en maak de volgende verbindingen van de Hex naar de versnellingsmeter (zie de pin-outs hierboven ter referentie):
INGANGSSPANNING VINGROUND GNDSCL/D3 SCLSDA/D2 SDA
Nu alles is aangesloten, zijn we klaar om te testen!
Voer als test de voorbeeldcode van de versnellingsmeter uit in Arduino (Bestand->Voorbeelden->Adafruit_MMA8451->MMA8451demo), en zorg ervoor dat deze naar de seriële monitor kan worden uitgevoerd. Het moet de versnelling als gevolg van de zwaartekracht (~ 10 m/s) in de z-richting uitvoeren wanneer het waterpas wordt gehouden. Door de versnellingsmeter te kantelen, wordt deze versnelling in de x- of y-richting gemeten; we zullen dit gebruiken om de drager in staat te stellen het geluid te veranderen door zijn hand te draaien!
Nu moeten we de gegevens van de versnellingsmeter zo presenteren dat ze kunnen worden gekoppeld aan Max. Om dit te doen, moeten we de waarden van x en y afdrukken, misschien aangepast om overeen te komen met het gewenste bereik (zie deel 6). In onze code die hier is bijgevoegd, doen we het volgende:
// Meet de x-richting en y-richting. We delen en vermenigvuldigen om in het juiste bereik te komen voor MAX (bereik van 1000 in x en bereik van 40 in y) xdir = event.acceleration.x/0.02; ydir = abs(gebeurtenis.versnelling.y)*2; // Print alles in een leesbaar formaat voor Max - met spaties tussen elk nummer Serial.print(xdir); Serieel.print(" ");
Hierdoor zou de Hex de gewijzigde waarden van de x- en y-richtingen van de versnellingsmeter op elke regel moeten afdrukken. Nu zijn we klaar om de flexsensoren toe te voegen!
Stap 4: De flexsensoren bevestigen
De drager kan veel potentiële geluidscontroles krijgen als we buigende vingers kunnen detecteren. De flexsensoren doen precies dat. Elke flexsensor is in wezen een potentiometer, waarbij niet-gebogen een weerstand van ~ 25 KΩ heeft, terwijl volledig gebogen een weerstand heeft van ~ 100 KΩ. We plaatsen elke flexsensor in een eenvoudige spanningsdeler met een weerstand van 50K, zoals weergegeven in de eerste afbeelding.
Gebruik opnieuw vrij korte stukken draad (houd er rekening mee dat dit allemaal op de achterkant van een handschoen past), soldeer vier spanningsdelermodules. De vier modules zullen dezelfde Vin en aarde delen - we hebben de gestripte uiteinden van de draden in elkaar gedraaid, zodat we maar één draad hebben om te solderen. Neem ten slotte de vier modules en maak de verbindingen die in de tweede afbeelding worden getoond (als iemand weet hoe dit moet zonder een vreselijke warboel te maken, onthul dan je geheimen).
Nu hebben we de Arduino-code nodig om de spanningen van elke sensor in te lezen. Voor onze doeleinden hebben we de flexsensoren als schakelaars behandeld; ze waren aan of uit. Als zodanig stelt onze code eenvoudig een spanningsdrempel in - boven deze drempel voeren we een 1 uit naar de seriële poort (wat betekent dat de sensor gebogen is), anders voeren we een 0 uit:
// Neem een aantal
analoge samples en tel ze op voor elke Flex-sensor
terwijl (sample_count < NUM_SAMPLES) {
sum10 += analoog lezen (A10);
sum9 += analoog lezen (A9);
sum7 += analoog lezen (A7);
sum11 += analoog lezen (A11);
voorbeeld_count++;
//Korte vertraging om ze niet te snel te nemen
vertraging (5);
}
// bereken de spanning, het middelen over de snelle steekproeven
// gebruik 5.0 voor een 5.0V ADC
referentiespanning
// 5.015V is de gekalibreerde
referentiespanning
spanning10 = ((float)som10 /
(float)NUM_SAMPLES * 5.015) / 1024.0;
spanning9 = ((float)som9/
(float) NUM_SAMPLES * 5.015) / 1024.0;
spanning7 = ((float)som7 /
(float)NUM_SAMPLES * 5.015) / 1024.0;
spanning11 = ((float)som11 /
(float) NUM_SAMPLES * 5.015) / 1024.0;
//Controleer of elke flex-sensor
is groter dan drempel (thresh) - zo ja, stel het nummer in
// Pink vinger
if (voltage10 > thresh)
{
//-5 om te verhogen
stem toonhoogte met één octaaf
flex10 = -10;
}
anders flex10 = 0;
//Ringvinger
als (spanning9 >
(dors-0,4)) {
//5 om te verlagen
stem toonhoogte met één octaaf
flex9 = 5;
}
anders flex9 = 0;
//Middelvinger
if (voltage7 > dorsen) {
//1 om in te stellen
galm effect
flex7 = 1;
}
anders flex7 = 0;
//Wijsvinger
if (voltage11 > thresh)
{
//50 om in te stellen
cycli tot 50
flex11 = 93;
}
anders flex11 = 0;
// Reset al het tellen
variabele naar 0 voor de volgende lus
sample_count = 0;
som10 = 0;
som9 = 0;
som7 = 0;
som11 = 0;
Op dit punt moet de seriële poort waarden weergeven voor de oriëntatie van de versnellingsmeter, en ook of elke flexsensor gebogen is. We zijn klaar om onze Arduino-code met Max te laten praten!
Stap 5: Interface met Max
Nu de Hex-code veel cijfers door de seriële poort spuugt, hebben we de Max-software nodig om deze signalen te lezen. Het hierboven afgebeelde codeblok doet precies dat! Heel graag gedaan.
Belangrijke opmerking: nadat u de code naar de Hex hebt geüpload, sluit u alle seriële poortvensters en wijzigt u de omcirkelde letter in de Max-code zodat deze overeenkomt met de Hex-poort. Als u niet zeker weet welke letter u moet instellen, drukt u op het "print"-gedeelte van de Max-code om alle aangesloten poorten weer te geven.
De afgedrukte regel van de seriële poort van de Hex wordt gelezen door het Max-codeblok en vervolgens gesplitst op basis van de spatiescheidingstekens. Met de uitvoer aan het einde van het Max-blok kun je elk nummer afzonderlijk pakken, dus we zullen de eerste uitvoerruimte verbinden met waar we willen dat de x-richting van de versnellingsmeter gaat, de tweede spatie is de y-richting, enz. Voor sluit deze nu gewoon aan op nummerblokken om ervoor te zorgen dat ze werken. Je zou in staat moeten zijn om de versnellingsmeter en flexsensoren te verplaatsen en de cijfers in de Max-software te zien veranderen.
Stap 6: De rest van de Max Code bouwen
Gezien de kracht van de Max-taal, kun je hier echt je fantasie de vrije loop laten met alle manieren waarop je het inkomende geluidssignaal kunt veranderen met je magische krachthandschoen. Maar als u geen ideeën meer heeft, vindt u hierboven een overzicht van wat onze Max-code doet en hoe deze werkt.
Voor elke parameter die u probeert te wijzigen, wilt u waarschijnlijk rommelen met het bereik van waarden die uit de Arduino-code komen om precies de juiste gevoeligheid te krijgen.
Enkele andere Max-tips voor het oplossen van problemen:
-
Als u geen geluid hoort
- zorg ervoor dat Max is ingesteld om audio van uw microfoon te ontvangen (Options Audio Status Input Device)
- zorg ervoor dat de Master Volume-schuifregelaar in Max omhoog staat en eventuele andere volumeregelaars die u in uw code hebt
-
Als de code niets lijkt te doen
- zorg ervoor dat uw patch is vergrendeld (slotsymbool in de linkerbenedenhoek)
- zorg er via uitlezingen in de Max-patch voor dat uw Max-patch nog steeds gegevens ontvangt van de seriële poort van Arduino. Als dit niet het geval is, probeert u de seriële poort opnieuw in te stellen (zoals beschreven in stap 5) en/of uw fysieke bedradingsverbindingen te controleren.
-
Vreemde clipping-geluiden bij het wijzigen van parameters
dit heeft te maken met hoe ~tapin en ~tapout werken; met name dat wanneer u hun waarden wijzigt, ze opnieuw worden ingesteld, wat het knippen veroorzaakt. Gezien onze beperkte kennis van het programma, zijn we er vrijwel zeker van dat er een betere manier is om dit in Max te doen en het probleem op te lossen…
Stap 7: Letterlijk alles samenbrengen
Het enige dat we nu nog moeten doen, is onze schakelingen aan onze handschoen bevestigen. Neem je extra stof en knip stroken uit die iets groter zijn dan de flexsensoren. Naai de extra stof aan de vinger van de handschoen waar de knokkel buigt, zodat er een soort mouw overblijft waar de flexsensor in kan zitten (we kunnen de flexsensoren niet zomaar rechtstreeks op de handschoen lijmen omdat de handschoenstof uitrekt als de vingers buigen). Zodra de mouw grotendeels is genaaid, schuift u de flexsensor naar binnen en naait u voorzichtig de draden aan de handschoen, waarbij u de flexsensor op zijn plaats vastzet. Herhaal dit voor elke flexsensor.
Gebruik vervolgens de zelfklevende veiligheidsspeld om de Hex aan de achterkant van de handschoen te bevestigen (misschien wilt u wat hete lijm op de pen doen om ervoor te zorgen dat deze niet losraakt tijdens het dragen). Naai de versnellingsmeter aan de pols van de handschoen. Gebruik ten slotte de magie van kabelbinders om lelijke draden mooi op te ruimen.
Je bent klaar om je ultieme zanghandschoen op de proef te stellen! (Mogen we Daft Punk's "Harder Better Faster Stronger" ten zeerste aanbevelen om volledig te pronken met je stemveranderende capaciteiten)
Aanbevolen:
Draagbare technologie voor de ziekte van Parkinson: 4 stappen
Wearable Tech Parkinson Ziekte: Wereldwijd leven meer dan 10 miljoen mensen met de ziekte van Parkinson (PD). Een progressieve aandoening van het zenuwstelsel die stijfheid veroorzaakt en de beweging van de patiënt beïnvloedt. Simpel gezegd, veel mensen leden aan de ziekte van Parkinson, maar
Hoe maak je een draadloze Air Piano-handschoen: 9 stappen
Hoe maak je een draadloze luchtpianohandschoen: Doelen en functies: Ons draagbare technologieproject is om een draadloze luchtpianohandschoen te maken met gesynchroniseerde lichten met behulp van basiselektronica, een microcontroller zoals een HexWear en een laptop met Arduino en Max 8-software . Het gebruik van ons proj
Verwarmde Handschoen Liners Ver. 2: 8 stappen (met afbeeldingen)
Verwarmde Handschoen Liners Ver. 2: OPMERKING: de draadverbindingsmethode die in deze Instructable wordt beschreven, is niet zo sterk als nodig is. Een verbeterde methode is hier te vinden: Werken met Carbon Heat Rope Dit is een herziene versie van mijn vorige project. De constructie is vereenvoudigd
Draagbare technologie: luchtdrums: 5 stappen
Wearable Tech: Air Drums: Ons doel voor dit project was om een draagbare drumkit te maken van enkele versnellingsmeters en piëzo-schijven. Het idee was dat bij een slag van een hand een snare-geluid zou spelen; of, gegeven een voetdruk, zou een hi-hat- of basdrumgeluid spelen. Te beheersen
Infigo - (een door kunstmatige intelligentie aangedreven draagbare handschoen): 9 stappen
Infigo - (een door kunstmatige intelligentie aangedreven draagbare handschoen): Infigo is een door AI (kunstmatige intelligentie) aangedreven draagbare handschoen gebaseerd op de principes van ondersteunende technologie (AT) die de productiviteit van de gehandicapte samenleving zal verbeteren. Kunstmatige intelligentie en machinaal leren kunnen een menselijk inte