Cuprins:

Tehnologie portabilă: Mănușă care schimbă vocea: 7 pași
Tehnologie portabilă: Mănușă care schimbă vocea: 7 pași

Video: Tehnologie portabilă: Mănușă care schimbă vocea: 7 pași

Video: Tehnologie portabilă: Mănușă care schimbă vocea: 7 pași
Video: Trucul pentru a face o persoana sa se îndragosteasca de tine 2024, Noiembrie
Anonim
Tehnologie portabilă: Mănușa care schimbă vocea
Tehnologie portabilă: Mănușa care schimbă vocea
Tehnologie portabilă: Mănușă care schimbă vocea
Tehnologie portabilă: Mănușă care schimbă vocea

Ei bine, se pare că mănușile cu puteri incredibile sunt la moda în zilele noastre. În timp ce Infinity Gauntlet al lui Thanos este o mănușă destul de puternică, am vrut să realizăm o mănușă care ar putea face ceva și mai remarcabil: schimbarea vocii purtătorului în timp real.

Acest instructabil oferă o prezentare generală a modului în care am proiectat o mănușă care schimbă vocea. Proiectarea noastră a folosit diverși senzori și un microcontroler în mănușă pentru a detecta mișcările, care au fost trimise printr-un cod Arduino către un patch Max, unde semnalul nostru audio a fost apoi modificat și distorsionat în moduri distractive. Senzorii, mișcările și modificările de sunet specifice pe care le-am folosit sunt flexibili pentru diferite considerații; aceasta este doar o modalitate de a crea o mănușă care schimbă vocea!

Acest proiect a făcut parte dintr-un parteneriat comunitar între studenții Pomona College și Academia Fremont de Ingineri Feminini. Este un amestec distractiv de elemente de inginerie electronică și muzică electronică!

Pasul 1: Materiale

Materiale
Materiale
Materiale
Materiale
Materiale
Materiale

Părți:

  • Microcontroler HexWear (ATmega32U4) (https://hexwear.com/)
  • Accelerometru MMA8451 (https://www.adafruit.com/product/2019)
  • Senzori flexori scurți (x4) (https://www.adafruit.com/product/1070)
  • Mănușă de alergare ușoară
  • # 2 șuruburi și șaibe (x8)
  • Conectori terminali cu sertizare; 22-18 calibru (x8) (https://www.elecdirect.com/crimp-wire-terminals/ring-crimp-terminals/pvc-ring-terminals/ring-terminal-pvc-red-22-18-6- 100 buc)
  • Rezistor 50kΩ (x4)
  • Sârmă (~ 20 gabarit)
  • Știft de siguranță autoadeziv
  • Pâslă sau altă țesătură (~ 10 inci)
  • Ață de cusut
  • Zipties
  • Laptop
  • Microfon USB

Instrumente

  • Set de lipit
  • Dispozitive de decupare și tăiere de sârmă
  • Bandă electrică
  • Arma cu aer cald
  • Şurubelniţă
  • Foarfece
  • Ac de cusut

Software:

  • Max by Cycling '74 (https://cycling74.com)
  • Software Arduino (https://www.arduino.cc/en/Main/Software)

Pasul 2: Instalarea software-ului

Începem cu ceea ce este cu adevărat cea mai entuziasmantă parte a oricărui proiect: instalarea bibliotecilor (și multe altele).

Arduino:

Descărcați și instalați software-ul Arduino (https://www.arduino.cc/en/Main/Software).

HexWear:

1) (numai Windows, utilizatorii Mac pot sări peste acest pas) Instalați driverul accesând https://www.redgerbera.com/pages/hexwear-driver-installation. Descărcați și instalați driverul (fișierul.exe listat la Pasul 2 în partea de sus a paginii RedGerbera conectate).

2) Instalați biblioteca necesară pentru Hexware. Deschideți ID-ul Arduino. Sub „Fișier”, selectați „Preferințe”. În spațiul prevăzut pentru adresele URL suplimentare ale managerului de panouri, lipiți

github.com/RedGerbera/Gerbera-Boards/raw/master/package_RedGerbera_index.json.

Apoi faceți clic pe „OK”.

Accesați Instrumente -> Consiliu: -> Administrator consiliu. Din meniul din colțul din stânga sus, selectați „Contribuit”.

Căutați, apoi faceți clic pe Plăcile Gerbera și faceți clic pe Instalare. Renunțați și redeschideți Arduino IDE.

Pentru a vă asigura că biblioteca este instalată corect, accesați Instrumente -> Tablă și derulați până în partea de jos a meniului. Ar trebui să vedeți o secțiune intitulată „Plăci Gerbera”, sub care ar trebui să apară cel puțin HexWear (dacă nu mai multe plăci precum mini-HexWear).

Accelerometru:

Descărcați și instalați biblioteca accelerometrului (https://learn.adafruit.com/adafruit-mma8451-accelerometer-breakout/wiring-and-test)

Pasul 3: Atașarea accelerometrului

Atașarea accelerometrului
Atașarea accelerometrului
Atașarea accelerometrului
Atașarea accelerometrului

Avem nevoie de două tipuri principale de senzori pentru a interacționa cu acest proiect: un accelerometru și senzori flex. Le vom examina pe rând, începând cu accelerometrul. În primul rând, avem nevoie de conexiuni hardware pentru a se potrivi.

Pentru a evita deteriorarea Hex-ului, vă recomandăm să puneți un șurub și o șaibă # 2 prin orificiile dorite, apoi atașați toate conexiunile la acel șurub. Pentru a preveni pierderea oricărui lucru atunci când vă jucați cu mănușa, conexiunile trebuie lipite și / sau sertizate. Folosind câțiva centimetri de sârmă pentru fiecare conexiune, efectuați următoarele conexiuni de la Hex la accelerometru (a se vedea pinouturile de mai sus pentru referință):

TENSIUNE DE INTRARE VINGROUND GNDSCL / D3 SCLSDA / D2 SDA

Cu totul conectat, suntem gata să testăm!

Ca test, rulați codul eșantionului accelerometrului în Arduino (Fișier-> Exemple-> Adafruit_MMA8451-> MMA8451demo), asigurându-vă că poate ieși pe monitorul Serial. Ar trebui să producă accelerația datorată gravitației (~ 10m / s) în direcția z atunci când este menținută la nivel. Prin înclinarea accelerometrului, această accelerație va fi măsurată în direcția x sau y; vom folosi acest lucru pentru a permite utilizatorului să schimbe sunetul prin rotirea mâinii!

Acum, trebuie să prezentăm datele accelerometrului în așa fel încât să poată fi interfațate cu Max. Pentru a face acest lucru, trebuie să tipărim valorile lui x și y, poate modificate pentru a se potrivi cu intervalul dorit (vezi partea 6). În codul nostru atașat aici, facem următoarele:

// Măsurați direcția x și direcția y. Împărțim și înmulțim pentru a ajunge în intervalele potrivite pentru MAX (interval de 1000 în x și interval de 40 în y) xdir = event.acceleration.x / 0.02; ydir = abs (event.acceleration.y) * 2; // Imprimați totul într-un format lizibil pentru Max - cu spații între fiecare număr Serial.print (xdir); Serial.print ("");

Acest lucru ar trebui ca Hex să imprime valorile modificate ale direcțiilor x și y ale accelerometrului pe fiecare linie. Acum suntem gata să adăugăm senzorii flex!

Pasul 4: Atașarea senzorilor flexibili

Atașarea senzorilor flexibili
Atașarea senzorilor flexibili
Atașarea senzorilor flexibili
Atașarea senzorilor flexibili
Atașarea senzorilor flexibili
Atașarea senzorilor flexibili

Purtătorul poate obține o mulțime de controale sonore potențiale dacă putem detecta degetele îndoite. Senzorii flex vor face exact asta. Fiecare senzor de flexie este în esență un potențiometru, unde neflexat are o rezistență de ~ 25KΩ, în timp ce complet flexat are o rezistență de ~ 100KΩ. Am pus fiecare senzor flex într-un simplu divizor de tensiune cu un rezistor de 50K, așa cum se arată în prima imagine.

Din nou, folosind lungimi destul de scurte de sârmă (rețineți că toate acestea se vor potrivi pe spatele unei mănuși), lipiți patru module divizoare de tensiune. Cele patru module vor împărți același Vin și sol - am răsucit capetele dezbrăcate ale firelor, astfel încât să avem un singur cablu de lipit. În cele din urmă, luați cele patru module și faceți conexiunile afișate în a doua imagine (dacă cineva știe cum să facă acest lucru fără a face o mizerie îngrozitor de încurcată, vă rugăm să ne dezvăluiți secretele).

Acum, avem nevoie de codul Arduino pentru a citi tensiunile de la fiecare senzor. În scopul nostru, am tratat senzorii flex ca niște comutatoare; erau fie pornite, fie oprite. Ca atare, codul nostru stabilește pur și simplu un prag de tensiune-peste acest prag, vom emite un 1 la portul serial (adică senzorul este îndoit), altfel vom emite un 0:

// Ia un număr de

probe analogice și adăugați-le pentru fiecare senzor Flex

while (sample_count <NUM_SAMPLES) {

sum10 + = analogRead (A10);

sum9 + = analogRead (A9);

sum7 + = analogRead (A7);

sum11 + = analogRead (A11);

sample_count ++;

// Întârziere scurtă pentru a nu le lua prea repede

întârziere (5);

}

// calculați tensiunea, media peste eșantioanele rapide

// utilizați 5.0 pentru un ADC 5.0V

tensiunea de referință

// 5.015V este calibrat

tensiunea de referință

tensiune10 = ((float) sum10 /

(float) NUM_SAMPLES * 5.015) / 1024.0;

tensiune9 = ((float) sum9 /

(float) NUM_SAMPLES * 5.015) / 1024.0;

tensiune7 = ((float) sum7 /

(float) NUM_SAMPLES * 5.015) / 1024.0;

tensiune11 = ((float) sum11 /

(float) NUM_SAMPLES * 5.015) / 1024.0;

// Verificați dacă fiecare senzor flex

este mai mare decât pragul (treierat) - dacă da, setați numărul

// Degetul Pinkie

dacă (tensiune10> treieră)

{

// - 5 pentru a ridica

ton de voce cu o octavă

flex10 = -10;

}

altfel flex10 = 0;

//Degetul inelar

dacă (tensiunea9>

(treierat-0,4)) {

// 5 pentru a coborî

ton de voce cu o octavă

flex9 = 5;

}

altfel flex9 = 0;

//Degetul mijlociu

dacă (tensiunea7> treieră) {

// 1 pentru a seta

efect de reverb

flex7 = 1;

}

altfel flex7 = 0;

//Degetul aratator

dacă (tensiune11> treieră)

{

// 50 pentru a seta

cicluri la 50

flex11 = 93;

}

altfel flex11 = 0;

// Resetați toate numărările

variabilă la 0 pentru următoarea buclă

sample_count = 0;

sum10 = 0;

suma9 = 0;

sum7 = 0;

sum11 = 0;

În acest moment, portul serial ar trebui să afișeze valori pentru orientarea accelerometrului și, de asemenea, dacă fiecare senzor flex este îndoit. Suntem gata să obținem codul Arduino vorbind cu Max!

Pasul 5: interfațarea cu max

Interfață cu max
Interfață cu max

Acum că codul Hex scuipă numeroase numere prin portul serial, avem nevoie de software-ul Max pentru a citi aceste semnale. Blocul de cod din imaginea de mai sus face exact asta! Cu multa placere.

Notă importantă: după încărcarea codului în Hex, închideți toate ferestrele portului serial, apoi schimbați litera încercuită din codul Max pentru a se potrivi cu portul Hex. Dacă nu sunteți sigur ce literă să setați, apăsând partea „print” a codului Max se vor afișa toate porturile conectate.

Linia tipărită de la portul serial al Hex-ului este citită prin blocul de cod Max și apoi împărțită pe baza delimitatorilor de spațiu. Ieșirea la sfârșitul blocului Max vă permite să apucați fiecare număr individual, așa că vom conecta primul spațiu de ieșire la locul în care dorim să meargă direcția x a accelerometrului, al doilea spațiu va fi direcția y etc. acum, conectați-le doar la blocuri numerice pentru a vă asigura că funcționează. Ar trebui să puteți muta accelerometrul și senzorii flex și să vedeți cum se schimbă numerele în software-ul Max.

Pasul 6: Construirea Restului Codului Max

Având în vedere puterea limbajului Max, îți poți lăsa cu adevărat imaginația să se elibereze aici cu toate modalitățile prin care poți modifica semnalul sonor de intrare cu mănușa ta de putere magică. Totuși, dacă rămâneți fără idei, mai sus este o descriere a ceea ce face codul nostru Max și cum funcționează.

Pentru fiecare parametru pe care încercați să îl modificați, probabil că veți dori să vă deranjați cu gama de valori provenind din codul Arduino pentru a obține sensibilitatea potrivită.

Alte câteva sfaturi Max de depanare:

  • Dacă nu auzi sunet

    • asigurați-vă că Max este setat să primească sunet de la microfonul dvs. (Opțiuni Dispozitiv de intrare stare audio)
    • asigurați-vă că glisorul Master Volume din Max este activat și orice alte controale de volum pe care le aveți în cod
  • Dacă codul nu pare să facă nimic

    • asigurați-vă că patch-ul este blocat (simbolul de blocare în colțul din stânga jos)
    • asigurați-vă, prin citiri în patch-ul Max, că patch-ul dvs. Max primește în continuare date de la portul serial Arduino. Dacă nu, încercați să resetați portul serial (așa cum este subliniat la pasul 5) și / sau să verificați conexiunile fizice de cablare.
  • Zgomote ciudate de tăiere la schimbarea parametrilor

    acest lucru are legătură cu modul în care funcționează ~ tapin și ~ tapout; mai exact că atunci când le schimbați valorile, acestea se resetează, ceea ce cauzează tăierea. Având în vedere cunoștințele noastre limitate despre program, suntem aproape siguri că există o modalitate mai bună de a face acest lucru în Max și de a elimina problema …

Pasul 7: Puneți totul laolaltă

Punând literalmente totul împreună
Punând literalmente totul împreună
Punând laolaltă totul
Punând laolaltă totul
Punând literalmente totul împreună
Punând literalmente totul împreună
Punând laolaltă totul
Punând laolaltă totul

Tot ce a mai rămas acum este să ne atașăm circuitele la mănușă. Luați materialul suplimentar și decupați benzi puțin mai mari decât senzorii flex. Coaseți țesătura suplimentară la degetul mănușii unde se îndoaie articulația, lăsând un fel de mânecă pentru ca senzorul flexibil să poată sta (nu putem lipi senzorii flexori direct pe mănușă, deoarece țesătura mănușii se întinde pe măsură ce degetele se îndoaie). Odată ce manșonul este în mare parte cusut, glisați senzorul flex în interior și coaseți cu grijă cablurile la mănușă, fixând senzorul flex în loc. Repetați acest lucru pentru fiecare senzor flex.

Apoi, utilizați știftul de siguranță autoadeziv pentru a atașa Hex-ul la partea din spate a mănușii (poate doriți să puneți un lipici fierbinte pe știft pentru a vă asigura că nu se desface în timpul uzurii). Coaseți accelerometrul la încheietura mănușii. În cele din urmă, utilizați magia fermoarelor pentru a curăța frumos orice fir inestetic.

Ești gata să-ți pui la încercare mănușa de putere supremă! (Vă recomandăm cu tărie „Harder Better Faster Stronger” de la Daft Punk pentru a vă arăta complet capacitățile de schimbare a vocii)

Recomandat: