Taula de continguts:

Tecnologia usable: guant que canvia la veu: 7 passos
Tecnologia usable: guant que canvia la veu: 7 passos

Vídeo: Tecnologia usable: guant que canvia la veu: 7 passos

Vídeo: Tecnologia usable: guant que canvia la veu: 7 passos
Vídeo: Беслан. Помни / Beslan. Remember (english & español subs) 2024, Desembre
Anonim
Tecnologia usable: guant que canvia la veu
Tecnologia usable: guant que canvia la veu
Tecnologia usable: guant que canvia la veu
Tecnologia usable: guant que canvia la veu

Bé, sembla que els guants amb poders increïbles estan de moda aquests dies. Tot i que Infinity Gauntlet de Thanos és un guant força potent, hem volgut fer-ne un que pugui fer alguna cosa encara més notable: canviar la veu del portador en temps real.

Aquest manual instructiu proporciona una explicació detallada de com hem dissenyat un guant que canvia la veu. El nostre disseny va utilitzar diversos sensors i un microcontrolador al guant per detectar moviments, que s’enviaven mitjançant un codi Arduino a un patch Max, on el nostre senyal d’àudio es va alterar i distorsionar de maneres divertides. Els sensors, moviments i alteracions de so específics que hem utilitzat són flexibles per a diferents consideracions; aquesta és només una manera de crear un guant que canvia la veu.

Aquest projecte formava part d’una associació comunitària entre estudiants del Pomona College i la Fremont Academy of Engineering Femineers. És una barreja divertida d’enginyeria electrònica i elements de música electrònica.

Pas 1: materials

Materials
Materials
Materials
Materials
Materials
Materials

Parts:

  • Microcontrolador HexWear (ATmega32U4) (https://hexwear.com/)
  • Acceleròmetre MMA8451 (https://www.adafruit.com/product/2019)
  • Sensors flexibles curts (x4) (https://www.adafruit.com/product/1070)
  • Guant de running lleuger
  • # 2 cargols i volanderes (x8)
  • Connectors de terminals de crimp; Indicador 22-18 (x8) (https://www.elecdirect.com/crimp-wire-terminals/ring-crimp-terminals/pvc-ring-terminals/ring-terminal-pvc-red-22-18-6- 100 pk)
  • Resistència de 50kΩ (x4)
  • Cable (calibre ~ 20)
  • Pas de seguretat autoadhesiu
  • Feltre o un altre teixit (~ 10 polzades quadrades)
  • Fil de cosir
  • Zipties
  • Portàtil
  • Micròfon USB

Eines

  • Kit de soldadura
  • Decapadors i talladores de filferro
  • Cinta elèctrica
  • Pistola d’aire calent
  • Tornavís
  • Tisores
  • Agulla de cosir

Programari:

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

Pas 2: Instal·lació del programari

Comencem pel que realment és la part més engrescadora de qualsevol projecte: instal·lar biblioteques (i molt més).

Arduino:

Descarregueu i instal·leu el programari Arduino (https://www.arduino.cc/en/Main/Software).

HexWear:

1) (Només Windows, els usuaris de Mac poden ometre aquest pas) Instal·leu el controlador visitant https://www.redgerbera.com/pages/hexwear-driver-installation. Descarregueu i instal·leu el controlador (el fitxer.exe que apareix al pas 2 a la part superior de la pàgina de RedGerbera enllaçada).

2) Instal·leu la biblioteca necessària per a Hexware. Obriu l'IDE Arduino. A "Fitxer", seleccioneu "Preferències". Enganxeu a l'espai proporcionat per als URL addicionals del gestor de taulers

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

A continuació, feu clic a "D'acord".

Aneu a Eines -> Tauler: -> Gestor de taules. Al menú de l'extrem superior esquerre, seleccioneu "Contribuïda".

Cerqueu i feu clic a Gerbera Boards i feu clic a Instal·la. Surt i torna a obrir Arduino IDE.

Per assegurar-vos que la biblioteca està instal·lada correctament, aneu a Eines -> Tauler i desplaceu-vos fins a la part inferior del menú. Hauríeu de veure una secció titulada "Gerbera Boards", sota la qual hauria d'aparèixer com a mínim HexWear (si no més taulers com el mini-HexWear).

Acceleròmetre:

Descarregueu i instal·leu la biblioteca de l’acceleròmetre (https://learn.adafruit.com/adafruit-mma8451-accelerometer-breakout/wiring-and-test)

Pas 3: connectar l’acceleròmetre

Col·locació de l’acceleròmetre
Col·locació de l’acceleròmetre
Col·locació de l’acceleròmetre
Col·locació de l’acceleròmetre

Per interactuar amb aquest projecte, necessitem dos tipus principals de sensors: un acceleròmetre i uns sensors flex. Els examinarem un per un, començant per l’acceleròmetre. En primer lloc, necessitem que les connexions de maquinari coincideixin.

Per evitar danyar el vostre hexagonal, us recomanem que col·loqueu un cargol i una rentadora núm. 2 pels ports desitjats i, a continuació, connecteu totes les connexions a aquest cargol. Per evitar que res es desprengui quan es juga amb el guant, les connexions s’han de soldar i / o arreglar. Utilitzant uns quants centímetres de cable per a cada connexió, feu les connexions següents des de l’hex a l’acceleròmetre (consulteu els pinouts de més amunt per obtenir una referència):

ENTRADA DE TENSIÓ VINGROUND GNDSCL / D3 SCLSDA / D2 SDA

Amb tot connectat, estem preparats per provar.

Com a prova, executeu el codi de mostra de l’acceleròmetre a Arduino (Fitxer-> Exemples-> Adafruit_MMA8451-> MMA8451demo), assegurant-vos que pugui sortir al monitor sèrie. Hauria de generar l’acceleració a causa de la gravetat (~ 10 m / s) en la direcció z quan es mantingui al nivell. Inclinant l’acceleròmetre, aquesta acceleració es mesurarà en la direcció x o y; ho farem servir per permetre que l'usuari canviï el so girant la mà.

Ara, hem de presentar les dades de l’acceleròmetre de manera que es puguin relacionar amb Max. Per fer-ho, hem d'imprimir els valors de x i y, potser modificats per coincidir amb l'interval desitjat (vegeu la part 6). Al nostre codi adjunt aquí, fem el següent:

// Mesureu la direcció x i la direcció y. Dividim i multipliquem per obtenir els intervals adequats per a MAX (rang de 1000 en x i rang de 40 en y) xdir = event.acceleration.x / 0,02; ydir = abs (event.acceleration.y) * 2; // Imprimeix-ho tot en un format llegible per a Max, amb espais entre cada número Serial.print (xdir); Serial.print ("");

Això hauria de fer que Hex imprimís cada línia els valors modificats de les direccions x i y de l’acceleròmetre. Ara estem preparats per afegir els sensors flex!

Pas 4: connectar els sensors flex

Col·locació dels sensors flex
Col·locació dels sensors flex
Col·locació dels sensors flex
Col·locació dels sensors flex
Col·locació dels Sensors Flex
Col·locació dels Sensors Flex

L’usuari pot obtenir molts controls de so potencials si detectem els dits flexionats. Els sensors de flexió ho faran exactament. Cada sensor de flexió és essencialment un potenciòmetre, on el no flexionat té una resistència de ~ 25KΩ, mentre que el totalment flexionat té una resistència de ~ 100KΩ. Posem cada sensor de flexió en un simple divisor de tensió amb una resistència de 50 K, tal com es mostra a la primera imatge.

Un cop més, utilitzeu fils de cable bastant curts (tingueu en compte que tot s’adapta a la part posterior d’un guant), soldeu quatre mòduls divisors de tensió. Els quatre mòduls compartiran el mateix Vin i terra: hem torçat els extrems dels cables pelats, de manera que només tindríem un cable per soldar. Finalment, agafeu els quatre mòduls i feu les connexions que es mostren a la segona imatge (si algú sap fer-ho sense fer un embolic horrible, reveleu els vostres secrets).

Ara, necessitem el codi Arduino per llegir les tensions de cada sensor. Als nostres propòsits, hem tractat els sensors flex com a interruptors; estaven activats o apagats. Com a tal, el nostre codi simplement estableix un llindar de tensió per sobre d’aquest llindar, donem un 1 al port sèrie (és a dir, el sensor està doblegat); en cas contrari, donem un 0:

// Agafeu un nombre de

mostres analògiques i afegiu-les per a cada sensor Flex

while (sample_count <NUM_SAMPLES) {

sum10 + = analogRead (A10);

sum9 + = analogRead (A9);

sum7 + = analogRead (A7);

sum11 + = analogRead (A11);

sample_count ++;

// Retard breu per no agafar-los massa ràpidament

retard (5);

}

// calcular la tensió, fent una mitjana sobre les mostres ràpides

// utilitzeu 5.0 per a un ADC de 5.0V

tensió de referència

// 5.015V és el calibrat

tensió de referència

voltatge10 = ((flotant) suma10 /

(flotant) NUM_SAMPLES * 5.015) / 1024.0;

voltatge9 = ((flotant) suma9 /

(flotant) NUM_SAMPLES * 5.015) / 1024.0;

voltatge7 = ((flotant) suma7 /

(flotant) NUM_SAMPLES * 5.015) / 1024.0;

voltatge11 = ((flotant) suma11 /

(flotant) NUM_SAMPLES * 5.015) / 1024.0;

// Comproveu si cada sensor de flexió

és superior al llindar (batre); si és així, establiu el nombre

// dit Pinkie

si (voltatge10> batre)

{

// - 5 per pujar

to de veu d'una octava

flex10 = -10;

}

altrament flex10 = 0;

//Dit anular

si (voltatge9>

(batre-0,4)) {

// 5 per baixar

to de veu d'una octava

flex9 = 5;

}

else flex9 = 0;

//Dit del cor

si (voltatge7> batre) {

// 1 per definir

efecte reverberació

flex7 = 1;

}

else flex7 = 0;

//Dit índex

si (tensió11> batre)

{

// 50 per establir

cicles a 50

flex11 = 93;

}

else flex11 = 0;

// Restableix tot el recompte

variable a 0 per al següent bucle

recompte_mostra = 0;

suma10 = 0;

suma9 = 0;

suma7 = 0;

suma11 = 0;

En aquest punt, el port sèrie ha de mostrar valors per a l'orientació de l'acceleròmetre i també si cada sensor de flexió està doblegat. Estem preparats per obtenir el nostre codi Arduino parlant amb Max.

Pas 5: Interfície amb màx

Interfície amb màx
Interfície amb màx

Ara que el codi Hex escolta molts números pel port sèrie, necessitem el programari Max per llegir aquests senyals. El bloc de codi que es mostra a la part superior ho fa exactament. Ets molt benvingut.

Nota important: després de penjar el codi a Hex, tanqueu totes les finestres del port sèrie i, a continuació, canvieu la lletra encerclada al codi Max perquè coincideixi amb el port Hex. Si no esteu segur de quina lletra voleu definir, en prémer la part "imprimir" del codi Max es mostraran tots els ports connectats.

La línia impresa del port sèrie de l’Hex es llegeix a través del bloc de codi Max i després es divideix en funció dels delimitadors d’espai. La sortida al final del bloc Max us permet agafar cada número individualment, de manera que connectarem el primer espai de sortida on volem que vagi la direcció x de l’acceleròmetre, el segon espai serà la direcció y, etc. ara només cal connectar-los a blocs numèrics per assegurar-vos que funcionen. Hauríeu de poder moure els acceleròmetres i els sensors de flexió i veure com canvien els números al programari Max.

Pas 6: crear la resta del codi màxim

Donat el poder del llenguatge Max, realment podeu deixar volar la vostra imaginació amb totes les maneres de modificar el senyal sonor entrant amb el vostre guant màgic. Tot i això, si us quedeu sense idees, a continuació es mostra un resum del que fa i com funciona el nostre codi Max.

Per a cada paràmetre que intenteu modificar, probablement voldreu ficar-vos amb l’interval de valors provinents del codi Arduino per obtenir la sensibilitat adequada.

Alguns altres consells de resolució de problemes màxims:

  • Si no sentiu so

    • assegureu-vos que Max estigui configurat per rebre àudio del vostre micròfon (Opcions Dispositiu d’entrada d’estat d’àudio)
    • assegureu-vos que el control lliscant del volum principal de Max estigui activat i que tingueu qualsevol altre control de volum que tingueu al codi
  • Si sembla que el codi no fa res

    • assegureu-vos que el pedaç estigui bloquejat (símbol de bloqueig a l'extrem inferior esquerre)
    • assegureu-vos, mitjançant les lectures del pedaç Max, que el vostre pedaç Max continua obtenint dades del port sèrie Arduino. Si no, proveu de restablir el port sèrie (tal com es descriu al pas 5) i / o comproveu les connexions de cablejat físiques.
  • Sorolls de retall estranys quan es canvien els paràmetres

    això té a veure amb el funcionament de ~ tapin i ~ tapout; específicament, quan canvieu els seus valors, es restableixen, cosa que provoca el retall. Tenint en compte el nostre coneixement limitat del programa, estem gairebé segurs que hi ha una millor manera de fer-ho a Max i eliminar el problema …

Pas 7: ajuntant-ho literalment

Posant-ho literalment tot junt
Posant-ho literalment tot junt
Posant-ho literalment tot junt
Posant-ho literalment tot junt
Unint-ho literalment
Unint-ho literalment
Unint-ho literalment
Unint-ho literalment

Ara només queda fixar els nostres circuits al guant. Agafeu la tela addicional i retalleu tires lleugerament més grans que els sensors flex. Cosiu el teixit addicional al dit del guant on es doblega el nus, deixant una màniga perquè el sensor de flexió pugui seure (no només podem enganxar els sensors de flexió directament al guant perquè el teixit del guant s’estén mentre es doblen els dits)). Una vegada que la màniga està principalment cosida, feu lliscar el sensor de flexió i cosiu amb cura els cables fins al guant, fixant el sensor de flexió al seu lloc. Repetiu-ho per a cada sensor de flexió.

A continuació, utilitzeu el passador de seguretat autoadhesiu per fixar el hexagonal a la part posterior del guant (és possible que vulgueu posar-hi una mica de cola calenta per assegurar-vos que no es desfaci durant el desgast). Cosir l’acceleròmetre al canell del guant. Finalment, utilitzeu la màgia de les tiroles per netejar els cables desagradables.

Ja esteu a punt per posar a prova el vostre màxim guant de cant! (Us recomanem encaridament Daft Punk "Harder Better Faster Stronger" per mostrar completament les vostres capacitats de canvi de veu)

Recomanat: