Innehållsförteckning:
- Steg 1: Material
- Steg 2: Installera programvaran
- Steg 3: Montera accelerometern
- Steg 4: Fäst Flex -sensorerna
- Steg 5: Gränssnitt med max
- Steg 6: Skapa resten av maxkoden
- Steg 7: Bokstavligen sätta ihop allt
Video: Bärbar teknik: Röstbytande handske: 7 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
Tja, det verkar som att handskar med otroliga krafter är raseri nuförtiden. Medan Thanos Infinity Gauntlet är en ganska kraftfull handske, ville vi göra en handske som kunde göra något ännu mer anmärkningsvärt: ändra bärarens röst i realtid.
Denna instruerbara ger en genomgång av hur vi utformade en röstbytande handske. Vår design använde olika sensorer och en mikrokontroller i handsken för att upptäcka rörelser, som skickades via en Arduino -kod till en Max -patch, där vår ljudsignal sedan ändrades och förvrängdes på roliga sätt. De specifika sensorer, rörelser och ljudförändringar vi använde är alla flexibla för olika överväganden; detta är bara ett sätt att skapa en röstbytande handske!
Detta projekt var en del av ett gemenskapspartnerskap mellan Pomona College -studenter och Fremont Academy of Engineering Femineers. Det är en riktigt rolig blandning av elektronisk teknik och elektroniska musikelement!
Steg 1: Material
Delar:
- HexWear Microcontroller (ATmega32U4) (https://hexwear.com/)
- MMA8451 Accelerometer (https://www.adafruit.com/product/2019)
- Korta flexsensorer (x4) (https://www.adafruit.com/product/1070)
- Lätt löphandske
- #2 skruvar och brickor (x8)
- Crimp -kontaktdon; 22-18 gauge (x8) (https://www.elecdirect.com/crimp-wire-terminals/ring-crimp-terminals/pvc-ring-terminals/ring-terminal-pvc-red-22-18-6- 100pk)
- 50kΩ motstånd (x4)
- Tråd (~ 20 gauge)
- Självhäftande säkerhetsnål
- Filt eller annat tyg (~ 10 kvm)
- Sytråd
- Buntband
- Bärbar dator
- USB -mikrofon
Verktyg
- Lödkit
- Wire strippers och wire cutters
- Eltejp
- Varmluftspistol
- Skruvmejsel
- Sax
- Synål
Programvara:
- Max by Cycling '74 (https://cycling74.com)
- Arduino -programvara (https://www.arduino.cc/en/Main/Software)
Steg 2: Installera programvaran
Vi börjar med vad som verkligen är den mest spännande delen av något projekt: att installera bibliotek (och mer).
Arduino:
Ladda ner och installera Arduino -programvaran (https://www.arduino.cc/en/Main/Software).
HexWear:
1) (endast Windows, Mac-användare kan hoppa över det här steget) Installera drivrutinen genom att besöka https://www.redgerbera.com/pages/hexwear-driver-installation. Ladda ner och installera drivrutinen (.exe -filen listad i steg 2 högst upp på den länkade RedGerbera -sidan).
2) Installera nödvändigt bibliotek för Hexware. Öppna Arduino IDE. Under "File" väljer du "Preferences". Klistra in i utrymmet för ytterligare Boards Manager -webbadresser
github.com/RedGerbera/Gerbera-Boards/raw/master/package_RedGerbera_index.json.
Klicka sedan på "OK".
Gå till Verktyg -> Styrelse: -> Styrelsechef. I menyn i det övre vänstra hörnet väljer du "Bidragen".
Sök efter och klicka sedan på Gerbera Boards och klicka på Installera. Avsluta och öppna Arduino IDE igen.
För att säkerställa att biblioteket är korrekt installerat går du till Verktyg -> Board och bläddrar till botten av menyn. Du bör se ett avsnitt med titeln "Gerbera Boards", där det åtminstone bör visas HexWear (om inte fler brädor som mini-HexWear).
Accelerometer:
Ladda ner och installera accelerometerbiblioteket (https://learn.adafruit.com/adafruit-mma8451-accelerometer-breakout/wiring-and-test)
Steg 3: Montera accelerometern
Vi behöver två huvudtyper av sensorer för att interagera med detta projekt: en accelerometer och flexsensorer. Vi kommer att undersöka dessa en i taget, med början med accelerometern. Först behöver vi hårdvaruanslutningarna för att matcha.
För att undvika att skada din Hex rekommenderar vi att du sätter in en #2 skruv och bricka genom de önskade portarna och fäster sedan alla anslutningar till den skruven. För att förhindra att något lossnar när du spelar med handsken bör anslutningarna lödas och/eller krympas. Använd några centimeter tråd för varje anslutning och gör följande anslutningar från Hex till accelerometern (se pinouts ovan för referens):
INGÅNGSSPÄNNING VINGROUND GNDSCL/D3 SCLSDA/D2 SDA
När allt är klart är vi redo att testa!
Som ett test, kör accelerometerprovkoden i Arduino (File-> Exempel-> Adafruit_MMA8451-> MMA8451demo), se till att den kan matas ut till seriell bildskärm. Den bör mata ut accelerationen på grund av gravitationen (~ 10m/s) i z -riktningen när den hålls i nivå. Genom att luta accelerometern mäts denna acceleration i x- eller y -riktningen; vi kommer att använda detta för att låta bäraren ändra ljudet genom att rotera handen!
Nu måste vi presentera accelerometerdata på ett sådant sätt att det kan gränssnittas med Max. För att göra det måste vi skriva ut värdena för x och y, kanske modifierade för att matcha det önskade intervallet (se del 6). I vår kod som bifogas här gör vi följande:
// Mät x-riktning och y-riktning. Vi delar och multiplicerar för att komma in i rätt intervall för MAX (intervallet 1000 i x och intervallet 40 i y) xdir = event.acceleration.x/0.02; ydir = abs (event.acceleration.y)*2; // Skriv ut allt i ett läsbart format för Max - med mellanslag mellan varje nummer Serial.print (xdir); Serial.print ("");
Detta bör få Hexen att skriva ut de modifierade värdena för accelerationsmätarens x- och y -riktningar varje rad. Nu är vi redo att lägga till flex -sensorerna!
Steg 4: Fäst Flex -sensorerna
Användaren kan få massor av potentiella ljudkontroller om vi kan upptäcka böjande fingrar. Flex -sensorerna kommer att göra just det. Varje flexsensor är i huvudsak en potentiometer, där unflexed har ett motstånd på ~ 25KΩ, medan fullt flexed har ett motstånd på ~ 100KΩ. Vi lägger varje flexsensor i en enkel spänningsdelare med ett 50K -motstånd, som visas i den första bilden.
Återigen använder du ganska korta trådlängder (kom ihåg att allt kommer att passa på baksidan av en handske), löd fyra spänningsdelare. De fyra modulerna kommer att dela samma Vin och slipade-vi tvinnade ihop de avskalade ändarna på trådarna så att vi bara skulle ha en ledning till lödning. Slutligen, ta de fyra modulerna och gör anslutningarna som visas i den andra bilden (om någon vet hur man gör detta utan att göra en fruktansvärt trasslig röra, avslöja dina hemligheter).
Nu behöver vi Arduino -koden för att läsa in spänningarna från varje sensor. För våra ändamål behandlade vi flexsensorerna som switchar; de var antingen på eller av. Som sådan sätter vår kod helt enkelt en spänningströskel över denna tröskel, vi matar ut ett 1 till serieporten (vilket betyder att sensorn är böjd), annars matar vi ut ett 0:
// Ta ett antal
analoga prover och lägg till dem för varje Flex -sensor
medan (sample_count <NUM_SAMPLES) {
sum10 += analogRead (A10);
sum9 += analogRead (A9);
sum7 += analogRead (A7);
sum11 += analogRead (A11);
sample_count ++;
// Kort fördröjning för att inte ta dem för snabbt
fördröjning (5);
}
// beräkna spänningen, i genomsnitt över de snabba proverna
// använd 5.0 för en 5.0V ADC
referensspänning
// 5.015V är den kalibrerade
referensspänning
spänning10 = ((float) sum10 /
(float) NUM_SAMPLES * 5.015) / 1024.0;
spänning9 = ((float) sum9/
(float) NUM_SAMPLES * 5.015) / 1024.0;
spänning7 = ((float) sum7 /
(float) NUM_SAMPLES * 5.015) / 1024.0;
spänning11 = ((float) sum11 /
(float) NUM_SAMPLES * 5.015) / 1024.0;
// Kontrollera om varje flex -sensor
är större än tröskeln (tröskan) - i så fall, ställ in numret
// Pinkifinger
om (spänning10> tröskning)
{
//-5 att höja
tonhöjd med en oktav
flex10 = -10;
}
annars flex10 = 0;
// Ringfinger
om (spänning9>
(trösk-0.4)) {
// 5 för att sänka
tonhöjd med en oktav
flex9 = 5;
}
annars flex9 = 0;
//Långfinger
if (voltage7> thresh) {
// 1 att ställa in
efterklangseffekt
flex7 = 1;
}
annars flex7 = 0;
//Pekfinger
om (spänning11> tröskning)
{
// 50 att ställa in
cyklar till 50
flex11 = 93;
}
annars flex11 = 0;
// Återställ all räkning
variabel till 0 för nästa slinga
sample_count = 0;
sum10 = 0;
sum9 = 0;
sum7 = 0;
sum11 = 0;
Vid denna tidpunkt bör serieporten visa värden för accelerometerns orientering och även om varje flexsensor är böjd. Vi är redo att få vår Arduino -kod att prata med Max!
Steg 5: Gränssnitt med max
Nu när Hex -koden spottar massor av nummer genom serieporten, behöver vi Max -programvaran för att läsa dessa signaler. Kodblocket på bilden ovan gör just det! Varsågod.
Viktig anmärkning: När du har laddat upp koden till Hex stänger du alla seriella portfönster och ändrar sedan den inringade bokstaven i Max -koden så att den matchar Hex -porten. Om du är osäker på vilken bokstav du ska ställa in kommer alla anslutna portar att visas genom att trycka på "skriv ut" -delen av Max -koden.
Den utskrivna raden från Hexs seriella port läses genom Max -kodblocket och delas sedan baserat på rymdavgränsarna. Utgången i slutet av Max -blocket gör att du kan ta varje nummer individuellt, så vi ansluter det första utmatningsutrymmet till var vi vill att accelerationsmätarens x -riktning ska gå, det andra utrymmet är y -riktningen, etc. För nu, bara ansluta dessa till nummerblock för att säkerställa att de fungerar. Du bör kunna flytta accelerometern och flexsensorerna och se hur siffrorna ändras i Max -programvaran.
Steg 6: Skapa resten av maxkoden
Med tanke på Max -språkets kraft kan du verkligen låta din fantasi springa här med alla sätt du kan ändra den inkommande ljudsignalen med din magiska powerhandske. Men om du har slut på idéer, ovan är en översikt över vad vår Max -kod gör och hur den fungerar.
För varje parameter du försöker ändra, kommer du förmodligen att bråka med värdena från Arduino -koden för att få precis rätt känslighet.
Några andra Max felsökningstips:
-
Om du inte hör ljud
- se till att Max är inställt för att ta emot ljud från din mikrofon (Alternativ Ljudstatusinmatningsenhet)
- Se till att reglaget för huvudvolym i Max är aktiverat och alla andra volymkontroller som du kan ha i din kod
-
Om koden inte verkar göra någonting
- se till att din lapp är låst (låssymbol i nedre vänstra hörnet)
- se till att via avläsningar i Max -patchen att din Max -patch fortfarande får data från Arduino -serieporten. Om inte, försök återställa den seriella porten (enligt beskrivningen i steg 5) och/eller kontrollera dina fysiska anslutningar.
-
Konstiga klippljud när parametrar ändras
detta är något att göra med hur ~ tapin och ~ tapout fungerar; specifikt att när du ändrar deras värden återställs de, vilket orsakar klippningen. Med tanke på vår begränsade kunskap om programmet är vi nästan säkra på att det finns ett bättre sätt att göra detta i Max och eliminera problemet …
Steg 7: Bokstavligen sätta ihop allt
Allt som återstår nu är att fästa våra kretsar i vår handske. Ta ditt extra tyg och klipp ut remsor som är något större än flexsensorerna. Sy det extra tyget på handskens finger där knoken böjer sig och lämna en slags hylsa för flexsensorn att sitta i (vi kan inte bara limma flexsensorerna direkt på handsken eftersom handskens tyg sträcker sig när fingrarna böjer sig). När ärmen mestadels sytt, skjut in flexsensorn och sy försiktigt ledningarna till handsken och fixera flexsensorn på plats. Upprepa detta för varje flex -sensor.
Använd sedan den självhäftande säkerhetsnålen för att fästa Hex på baksidan av handsken (du kanske vill lägga lite varmt lim på stiftet för att se till att det inte går att ångra under slitage). Sy accelerometern mot handskens handled. Slutligen, använd magi med dragkedjor för att vackert städa upp alla fula trådar.
Du är redo att testa din ultimata sångkraftshandske! (Kan vi starkt rekommendera Daft Punk's "Harder Better Faster Stronger" för att helt visa upp dina röstförändrande funktioner)
Rekommenderad:
Parkinsons sjukdom bärbar teknik: 4 steg
Parkinson Disease Wearable Tech: Mer än 10 miljoner människor världen över lever med Parkinsons sjukdom (PD). En progressiv störning i nervsystemet som orsakar stelhet och påverkar patientens rörelse. I enklare termer drabbades många av Parkinsons sjukdom men
Bärbar teknik: Air Drums: 5 steg
Wearable Tech: Air Drums: Vårt mål för detta projekt var att göra ett bärbart trumset av några accelerometrar och piezoskivor. Tanken var att med ett slag av en hand skulle ett virveltrumma spela; eller, med ett tryck på en fot, spelas ett hi-hat- eller bastrummljud. Att kontrollera
Infigo - (en artificiell intelligensdriven bärbar handske): 9 steg
Infigo - (en Artificial Intelligence Powered Wearable Glove): Infigo är en AI (artificiell intelligens) driven bärbar handske baserad på principerna för hjälpmedel (AT) som kommer att öka produktiviteten i det nedsatta samhället Artificiell intelligens och maskininlärning kan inte ersätta en mänsklig integritet
KeyPi - en billig bärbar Raspberry Pi 3 bärbar dator under $ 80: 11 steg (med bilder)
KeyPi - en billig bärbar Raspberry Pi 3 bärbar dator under $ 80: *** UPPDATERING *** Hej alla! För det första tack för allt stöd och feedback, gemenskapen här är fantastisk :) Här är svar på några frågor: Varför gjorde du det här? Jag ville göra en bärbar dator som hade ett tangentbord i full storlek. Jag kände att t
Hur man hanterar överhettning av bärbar dator/bärbar dator: 8 steg
Hur man hanterar överhettning av bärbar dator/bärbar dator: Överhettning av bärbar dator kan orsaka allvarliga skador. Plötsliga avstängningsfel eller slumpmässigt förekommande dödsskärmar kan innebära att du kväver din anteckningsbok. Min sista anteckningsbok smälte bokstavligen på min säng när jag blockerade dess kylfläktar på min kudde