Innehållsförteckning:

Bärbar teknik: Röstbytande handske: 7 steg
Bärbar teknik: Röstbytande handske: 7 steg

Video: Bärbar teknik: Röstbytande handske: 7 steg

Video: Bärbar teknik: Röstbytande handske: 7 steg
Video: How to do Skin Fade on Asian Hair - Barber Tutorial 2024, November
Anonim
Wearable Tech: Röstbytande handske
Wearable Tech: Röstbytande handske
Wearable Tech: Röstbytande handske
Wearable Tech: Röstbytande handske

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

Material
Material
Material
Material
Material
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

Montera accelerometern
Montera accelerometern
Montera accelerometern
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

Montering av Flex Sensors
Montering av Flex Sensors
Montering av Flex Sensors
Montering av Flex Sensors
Montering av Flex Sensors
Montering av Flex Sensors

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

Gränssnitt med max
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

Bokstavligen sätta ihop allt
Bokstavligen sätta ihop allt
Bokstavligen sätta ihop allt
Bokstavligen sätta ihop allt
Bokstavligen sätta ihop allt
Bokstavligen sätta ihop allt
Bokstavligen sätta ihop allt
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: