Innholdsfortegnelse:
- Trinn 1: Materialer
- Trinn 2: Installere programvaren
- Trinn 3: Fest akselerometeret
- Trinn 4: Fest Flex -sensorene
- Trinn 5: Grensesnitt med maks
- Trinn 6: Bygg resten av maks -koden
- Trinn 7: Sett bokstavelig talt alt sammen
Video: Wearable Tech: Stemmeendrende hanske: 7 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
Vel, det virker som hansker med utrolige krefter er raseri i disse dager. Selv om Thanos 'Infinity Gauntlet er en ganske kraftig hanske, ønsket vi å lage en hanske som kunne gjøre noe enda mer bemerkelsesverdig: endre brukerens stemme i sanntid.
Denne instruksjonsboken gir en gjennomgang av hvordan vi designet en hanske som endrer stemme. Vår design brukte forskjellige sensorer og en mikrokontroller i hansken for å oppdage bevegelser, som ble sendt via en Arduino -kode til en Max -patch, der lydsignalet vårt deretter ble endret og forvrengt på morsomme måter. De spesifikke sensorene, bevegelsene og lydendringene vi brukte er alle fleksible for forskjellige hensyn; Dette er bare en måte å lage en stemmeskiftende hanske på!
Dette prosjektet var en del av et fellesskapspartnerskap mellom Pomona College -studenter og Fremont Academy of Engineering Femineers. Det er en skikkelig morsom blanding av elektronikk og elektroniske musikkelementer!
Trinn 1: Materialer
Deler:
- HexWear Microcontroller (ATmega32U4) (https://hexwear.com/)
- MMA8451 akselerometer (https://www.adafruit.com/product/2019)
- Short Flex Sensors (x4) (https://www.adafruit.com/product/1070)
- Lett løpehanske
- #2 skruer og skiver (x8)
- Krympeklemmer; 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Ω motstand (x4)
- Wire (~ 20 gauge)
- Selvklebende sikkerhetsnål
- Filt eller annet stoff (~ 10 kvm)
- Sytråd
- Zipties
- Laptop
- USB -mikrofon
Verktøy
- Loddesett
- Wire strippere og wire cutters
- Elektrisk tape
- Varmluftspistol
- Skrujern
- Saks
- Synål
Programvare:
- Max by Cycling '74 (https://cycling74.com)
- Arduino -programvare (https://www.arduino.cc/en/Main/Software)
Trinn 2: Installere programvaren
Vi begynner med det som virkelig er den mest spennende delen av ethvert prosjekt: installering av biblioteker (og mer).
Arduino:
Last ned og installer Arduino -programvaren (https://www.arduino.cc/en/Main/Software).
HexWear:
1) (bare Windows, Mac-brukere kan hoppe over dette trinnet) Installer driveren ved å besøke https://www.redgerbera.com/pages/hexwear-driver-installation. Last ned og installer driveren (.exe -filen oppført på trinn 2 øverst på den koblede RedGerbera -siden).
2) Installer nødvendig bibliotek for Hexware. Åpne Arduino IDE. Velg "Preferanser" under "File". Lim inn på plassen som er gitt for flere nettadresser for Boards Manager
github.com/RedGerbera/Gerbera-Boards/raw/master/package_RedGerbera_index.json.
Klikk deretter "OK".
Gå til Tools -> Board: -> Board Manager. Velg "Bidraget" fra menyen i venstre hjørne.
Søk etter, og klikk deretter på Gerbera Boards og klikk på Installer. Avslutt og åpne Arduino IDE på nytt.
For å sikre at biblioteket er riktig installert, gå til Verktøy -> Brett og bla til bunnen av menyen. Du bør se en seksjon med tittelen "Gerbera Boards", der det i det minste skulle vises HexWear (om ikke flere tavler som mini-HexWear).
Akselerometer:
Last ned og installer akselerometerbiblioteket (https://learn.adafruit.com/adafruit-mma8451-accelerometer-breakout/wiring-and-test)
Trinn 3: Fest akselerometeret
Vi trenger to hovedtyper sensorer for å samhandle med dette prosjektet: et akselerometer og flexsensorer. Vi vil undersøke disse om gangen, med start med akselerometeret. Først trenger vi maskinvaretilkoblingene for å samsvare.
For å unngå å skade Hex, anbefaler vi å sette en #2 skrue og skive gjennom de ønskede portene, og deretter feste alle tilkoblinger til den skruen. For å forhindre at noe løsner når du spiller med hansken, bør tilkoblinger loddes og/eller krympes. Bruk noen få centimeter ledning for hver tilkobling, og gjør følgende tilkoblinger fra sekskantet til akselerometeret (se pinoutene ovenfor for referanse):
INNGANGSPENNING VINGROUND GNDSCL/D3 SCLSDA/D2 SDA
Når alt er ferdig, er vi klare til å teste!
Som en test, kjør akselerometerprøvekoden i Arduino (Fil-> Eksempler-> Adafruit_MMA8451-> MMA8451demo), og sørg for at den kan sendes til seriell skjerm. Den skal levere akselerasjonen på grunn av tyngdekraften (~ 10m/s) i z -retningen når den holdes på nivå. Ved å vippe akselerometeret vil denne akselerasjonen måles i x- eller y -retningen; vi bruker dette til å la brukeren endre lyden ved å rotere hånden!
Nå må vi presentere akselerometerdataene på en slik måte at de kan kobles til Max. For å gjøre det må vi skrive ut verdiene til x og y, kanskje modifisert for å matche ønsket område (se del 6). I koden vår vedlagt her gjør vi følgende:
// Mål x-retningen og y-retningen. Vi deler og multipliserer for å komme inn i de riktige områdene for MAX (område på 1000 i x og område på 40 i y) xdir = event.acceleration.x/0.02; ydir = abs (event.acceleration.y)*2; // Skriv ut alt i et lesbart format for Max - med mellomrom mellom hvert nummer Serial.print (xdir); Serial.print ("");
Dette bør få Hex til å skrive ut de modifiserte verdiene for x- og y -retningene til akselerometeret hver linje. Nå er vi klare til å legge til flex -sensorene!
Trinn 4: Fest Flex -sensorene
Brukeren kan få mange potensielle lydkontroller hvis vi kan oppdage bøyende fingre. Flex -sensorene vil gjøre nettopp det. Hver flex -sensor er i hovedsak et potensiometer, hvor unflexed har en motstand på ~ 25KΩ, mens fullt flexed har en motstand på ~ 100KΩ. Vi legger hver flexsensor i en enkel spenningsdeler med en 50K motstand, som vist på det første bildet.
Igjen bruker du ganske korte trådlengder (husk at alt passer på baksiden av hansken), lodd fire spenningsdelermoduler. De fire modulene vil dele den samme Vin og malt-vi vridd sammen de avisolerte endene på ledningene, slik at vi bare ville ha en ledning til lodding. Til slutt, ta de fire modulene og gjør tilkoblingene som vises i det andre bildet (hvis noen vet hvordan de skal gjøre dette uten å gjøre et fryktelig flokete rot, vennligst avslør hemmelighetene dine).
Nå trenger vi Arduino -koden for å lese inn spenningene fra hver sensor. For vårt formål behandlet vi flexsensorene som brytere; de var enten på eller av. Som sådan setter koden vår ganske enkelt en spenningsterskel-over denne terskelen, vi sender ut en 1 til serieporten (betyr at sensoren er bøyd), ellers sender vi ut en 0:
// Ta en rekke
analoge prøver og legg dem til for hver Flex -sensor
mens (sample_count <NUM_SAMPLES) {
sum10 += analogRead (A10);
sum9 += analogRead (A9);
sum7 += analogRead (A7);
sum11 += analogRead (A11);
sample_count ++;
// Kort forsinkelse for ikke å ta dem for raskt
forsinkelse (5);
}
// beregne spenningen, gjennomsnitt over de raske prøvene
// bruk 5.0 for en 5.0V ADC
referansespenning
// 5.015V er kalibrert
referansespenning
voltage10 = ((float) sum10 /
(flyte) NUM_SAMPLES * 5.015) / 1024.0;
spenning9 = ((float) sum9/
(flyte) NUM_SAMPLES * 5.015) / 1024.0;
spenning7 = ((float) sum7 /
(flyte) NUM_SAMPLES * 5.015) / 1024.0;
voltage11 = ((float) sum11 /
(flyte) NUM_SAMPLES * 5.015) / 1024.0;
// Sjekk om hver flex sensor
er større enn terskel (tersk) - sett i så fall tallet
// Pinkifinger
hvis (spenning10> tersk)
{
//-5 for å heve
stemmehøyde med en oktav
flex10 = -10;
}
ellers flex10 = 0;
//Ringfingeren
hvis (spenning9>
(tersk-0.4)) {
// 5 for å senke
stemmehøyde med en oktav
flex9 = 5;
}
annet flex9 = 0;
//Langfinger
if (voltage7> thresh) {
// 1 for å angi
reverb effekt
flex7 = 1;
}
annet flex7 = 0;
//Pekefinger
hvis (spenning11> tersk)
{
// 50 for å angi
sykluser til 50
flex11 = 93;
}
ellers flex11 = 0;
// Tilbakestill all tellingen
variabel til 0 for neste sløyfe
sample_count = 0;
sum10 = 0;
sum9 = 0;
sum7 = 0;
sum11 = 0;
På dette tidspunktet bør den serielle porten vise verdier for akselerometerretningen, og også om hver flex -sensor er bøyd. Vi er klare til å få Arduino -koden vår til å snakke med Max!
Trinn 5: Grensesnitt med maks
Nå som Hex -koden spytter mange tall gjennom serieporten, trenger vi Max -programvaren for å lese disse signalene. Kodeblokken avbildet ovenfor gjør nettopp det! Du er hjertelig velkommen.
Viktig merknad: Etter å ha lastet opp koden til Hex, lukker du alle serielle portvinduer, og deretter endrer du den sirkulerte bokstaven i Maks -koden for å matche Hex -porten. Hvis du er usikker på hvilken bokstav du skal angi, vil alle "tilkoblede porter" vises ved å trykke på "skrive ut" -delen av Maks -koden.
Den trykte linjen fra Hex serielle port leses gjennom Max -kodeblokken, og deles deretter basert på mellomromstegnene. Utgangen på slutten av Max -blokken lar deg fange hvert tall individuelt, så vi vil koble det første utgangsområdet til der vi vil at x -retningen til akselerometeret skal gå, det andre rommet vil være y -retningen, etc. For nå, bare koble disse til nummerblokker for å sikre at de fungerer. Du bør kunne flytte akselerometeret og flex -sensorene og se tallene endres i Max -programvaren.
Trinn 6: Bygg resten av maks -koden
Gitt kraften i Max -språket, kan du virkelig la fantasien løpe vilt her med alle måtene du kan endre det innkommende lydsignalet med din magiske krafthanske. Likevel, hvis du går tom for ideer, er en oversikt over hva Max -koden vår gjør og hvordan den fungerer.
For hver parameter du prøver å endre, vil du sannsynligvis rote rundt med verdiområdet fra Arduino -koden for å få akkurat den riktige følsomheten.
Noen andre Max -feilsøkingstips:
-
Hvis du ikke hører lyd
- Sørg for at Max er satt til å motta lyd fra mikrofonen (alternativer for lydstatusinnmatingsenhet)
- Sørg for at Master Volume -glidebryteren i Max er skrudd opp, og at alle andre volumkontroller du måtte ha i koden
-
Hvis koden ikke ser ut til å gjøre noe
- sørg for at lappen er låst (låsesymbol i nedre venstre hjørne)
- sikre via avlesninger i Max -oppdateringen at Max -oppdateringen fremdeles får data fra Arduino seriell port. Hvis ikke, kan du prøve å tilbakestille den serielle porten (som beskrevet i trinn 5) og/eller kontrollere de fysiske tilkoblingene.
-
Merkelige klippelyder ved endring av parametere
dette er noe å gjøre med hvordan ~ tapin og ~ tapout fungerer; spesielt at når du endrer verdiene deres, tilbakestilles de, noe som forårsaker klipping. Gitt vår begrensede kunnskap om programmet, er vi nesten sikre på at det er en bedre måte å gjøre dette på i Max og eliminere problemet …
Trinn 7: Sett bokstavelig talt alt sammen
Alt som gjenstår nå er å feste kretsene våre til hansken. Ta ekstra stoff og klipp ut strimler som er litt større enn flex -sensorene. Sy det ekstra stoffet til fingeren på hansken der knoken bøyes, og la en slags erme for flex -sensoren sitte i (vi kan ikke bare lime flex -sensorene direkte til hansken fordi hanskestoffet strekker seg når fingrene bøyer seg). Når ermet for det meste er sydd, skyver du inn flexsensoren og syer forsiktig ledningene til hansken, og fester flexsensoren på plass. Gjenta dette for hver flex -sensor.
Deretter bruker du den selvklebende sikkerhetsnålen til å feste Hex på baksiden av hansken (det kan være lurt å legge litt varmt lim på pinnen for å sikre at den ikke blir angret under slitasje). Sy akselerometeret til håndleddet på hansken. Til slutt, bruk magien i glidelåser for å vakkert rydde opp i stygge ledninger.
Du er klar til å teste din ultimate sangkrafthanske! (Kan vi anbefale Daft Punk's "Harder Better Faster Stronger" på det sterkeste for å vise frem evnen til å endre stemmen din fullt ut)
Anbefalt:
Parkinsons sykdom Wearable Tech: 4 trinn
Parkinson Disease Wearable Tech: Mer enn 10 millioner mennesker over hele verden lever med Parkinsons sykdom (PD). En progressiv lidelse i nervesystemet som forårsaker stivhet og påvirker pasientens bevegelse. Enkelt sagt led mange av Parkinsons sykdom, men
Soft Robotics Hanske: 8 trinn (med bilder)
Soft Robotics Glove: Mitt prosjekt er en softrobotic hanske. Den har en aktuator plassert på hver finger; den nedre delen av hansken fjernes for å gjøre det lettere for brukeren å bruke den. Aktuatorene aktiveres av en enhet som er plassert på håndleddet litt større enn en klokke
[Wearable Mouse] Bluetooth-basert Wearable Mouse Controller for Windows 10 og Linux: 5 trinn
[Wearable Mouse] Bluetooth-basert Wearable Mouse Controller for Windows 10 og Linux: Jeg laget en Bluetooth-basert musekontroller som kan brukes til å kontrollere musepekeren og utføre PC-musrelaterte operasjoner i farten, uten å berøre noen overflater. Den elektroniske kretsen, som er innebygd på en hanske, kan brukes til å spore h
Gest til tale/tekstkonverterende hanske: 5 trinn
Gest til tale/tekstkonverterende hanske: Ideen/presset bak implementeringen av dette prosjektet var å hjelpe mennesker som har problemer med å kommunisere ved hjelp av tale og kommunisere ved hjelp av håndbevegelser eller mer populært kjent som amerikansk tegnspråk (ASL). Dette prosjektet kan være et skritt mot å tilby
Wearable Tech Final Project - DJ -hjelm: 6 trinn
Wearable Tech Final Project - DJ -hjelm: Målet med dette prosjektet er å gjøre en DJ -hjelm med LED -er reaktive på musikk for show og wow -faktor. Vi bruker en adresserbar LED -stripe fra Amazon.com samt en motorsykkelhjelm, en Arduino uno og wire