Tabla de contenido:

Tecnología usable: Guante que cambia la voz: 7 pasos
Tecnología usable: Guante que cambia la voz: 7 pasos

Video: Tecnología usable: Guante que cambia la voz: 7 pasos

Video: Tecnología usable: Guante que cambia la voz: 7 pasos
Video: Los MEJORES TRUCOS para tu Realme 2024, Noviembre
Anonim
Tecnología usable: Guante que cambia la voz
Tecnología usable: Guante que cambia la voz
Tecnología usable: Guante que cambia la voz
Tecnología usable: Guante que cambia la voz

Bueno, parece que los guantes con poderes increíbles están de moda en estos días. Si bien el Infinity Gauntlet de Thanos es un guante bastante poderoso, queríamos hacer un guante que pudiera hacer algo aún más notable: cambiar la voz del usuario en tiempo real.

Este Instructable proporciona un tutorial de cómo diseñamos un guante que cambia la voz. Nuestro diseño utilizó varios sensores y un microcontrolador en el guante para detectar movimientos, que se enviaron a través de un código Arduino a un parche Max, donde nuestra señal de audio se alteró y distorsionó de manera divertida. Los sensores, movimientos y alteraciones de sonido específicos que usamos son todos flexibles para diferentes consideraciones; ¡Esta es solo una forma de crear un guante que cambie la voz!

Este proyecto fue parte de una asociación comunitaria entre los estudiantes de Pomona College y la Fremont Academy of Engineering Femineers. ¡Es una mezcla realmente divertida de ingeniería electrónica y elementos de música electrónica!

Paso 1: Materiales

Materiales
Materiales
Materiales
Materiales
Materiales
Materiales

Partes:

  • Microcontrolador HexWear (ATmega32U4) (https://hexwear.com/)
  • Acelerómetro MMA8451 (https://www.adafruit.com/product/2019)
  • Sensores cortos de flexión (x4) (https://www.adafruit.com/product/1070)
  • Guante de running ligero
  • # 2 tornillos y arandelas (x8)
  • Conectores terminales de crimpado; Calibre 22-18 (x8) (https://www.elecdirect.com/crimp-wire-terminals/ring-crimp-terminals/pvc-ring-terminals/ring-terminal-pvc-red-22-18-6- Paquete de 100)
  • Resistencia de 50 kΩ (x4)
  • Alambre (~ calibre 20)
  • Pasador de seguridad autoadhesivo
  • Fieltro u otra tela (~ 10 pulgadas cuadradas)
  • Hilo de coser
  • Zipties
  • Ordenador portátil
  • Micrófono USB

Instrumentos

  • Kit de soldadura
  • Pelacables y cortadores de alambre
  • Cinta eléctrica
  • Pistola de aire caliente
  • Destornillador
  • Tijeras
  • Aguja de coser

Software:

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

Paso 2: instalación del software

Empezamos con lo que es verdaderamente la parte más emocionante de cualquier proyecto: instalar bibliotecas (y más).

Arduino:

Descargue e instale el software Arduino (https://www.arduino.cc/en/Main/Software).

HexWear:

1) (Solo Windows, los usuarios de Mac pueden omitir este paso) Instale el controlador visitando https://www.redgerbera.com/pages/hexwear-driver-installation. Descargue e instale el controlador (el archivo.exe enumerado en el Paso 2 en la parte superior de la página vinculada de RedGerbera).

2) Instale la biblioteca requerida para Hexware. Abra el IDE de Arduino. En "Archivo", seleccione "Preferencias". En el espacio provisto para URL adicionales del administrador de tableros, pegue

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

Luego haga clic en "Aceptar".

Vaya a Herramientas -> Tablero: -> Administrador de tablero. En el menú de la esquina superior izquierda, seleccione "Contribuido".

Busque y luego haga clic en Gerbera Boards y haga clic en Instalar. Salga y vuelva a abrir Arduino IDE.

Para asegurarse de que la biblioteca esté instalada correctamente, vaya a Herramientas -> Tablero y desplácese hasta la parte inferior del menú. Debería ver una sección titulada “Tableros de Gerbera”, debajo de la cual al menos debería aparecer HexWear (si no más tableros como mini-HexWear).

Acelerómetro:

Descargue e instale la biblioteca de acelerómetros (https://learn.adafruit.com/adafruit-mma8451-accelerometer-breakout/wiring-and-test)

Paso 3: Colocación del acelerómetro

Colocación del acelerómetro
Colocación del acelerómetro
Colocación del acelerómetro
Colocación del acelerómetro

Necesitamos dos tipos principales de sensores para interactuar con este proyecto: un acelerómetro y sensores flexibles. Examinaremos estos uno a la vez, comenzando con el acelerómetro. Primero, necesitamos que las conexiones de hardware coincidan.

Para evitar dañar su Hex, recomendamos colocar un tornillo # 2 y una arandela a través de los puertos deseados, luego unir todas las conexiones a ese tornillo. Para evitar que algo se suelte al jugar con el guante, las conexiones deben soldarse y / o doblarse. Con unas pocas pulgadas de cable para cada conexión, realice las siguientes conexiones desde el hexágono al acelerómetro (consulte los pines de arriba como referencia):

VOLTAJE DE ENTRADA VINGROUND GNDSCL / D3 SCLSDA / D2 SDA

Con todo conectado, ¡estamos listos para probar!

Como prueba, ejecute el código de muestra del acelerómetro en Arduino (Archivo-> Ejemplos-> Adafruit_MMA8451-> MMA8451demo), asegurándose de que pueda salir al monitor serial. Debería generar la aceleración debida a la gravedad (~ 10 m / s) en la dirección z cuando se mantiene nivelada. Al inclinar el acelerómetro, esta aceleración se medirá en la dirección xoy; ¡Usaremos esto para permitir que el usuario cambie el sonido girando su mano!

Ahora, tenemos que presentar los datos del acelerómetro de tal manera que puedan interactuar con Max. Para hacerlo, debemos imprimir los valores de xey, quizás modificados para que coincidan con el rango deseado (ver Parte 6). En nuestro código adjunto aquí, hacemos lo siguiente:

// Mide la dirección xy la dirección y. Dividimos y multiplicamos para obtener los rangos correctos para MAX (rango de 1000 en x y rango de 40 en y) xdir = event.acceleration.x / 0.02; ydir = abs (event.acceleration.y) * 2; // Imprime todo en un formato legible para Max - con espacios entre cada número Serial.print (xdir); Serial.print ("");

Esto debería tener el Hex imprimiendo los valores modificados de las direcciones xey del acelerómetro en cada línea. ¡Ahora estamos listos para agregar los sensores flexibles!

Paso 4: Colocación de los sensores Flex

Colocación de los sensores Flex
Colocación de los sensores Flex
Colocación de los sensores Flex
Colocación de los sensores Flex
Colocación de los sensores Flex
Colocación de los sensores Flex

El usuario puede obtener muchos controles de sonido potenciales si podemos detectar los dedos doblados. Los sensores flexibles harán precisamente eso. Cada sensor flexible es esencialmente un potenciómetro, donde sin flexión tiene una resistencia de ~ 25KΩ, mientras que completamente flexionado tiene una resistencia de ~ 100KΩ. Colocamos cada sensor flexible en un divisor de voltaje simple con una resistencia de 50K, como se muestra en la primera imagen.

Nuevamente, utilizando longitudes de cable bastante cortas (tenga en cuenta que todo esto se ajustará a la parte posterior de un guante), suelde cuatro módulos divisores de voltaje. Los cuatro módulos compartirán el mismo Vin y tierra; trenzamos los extremos pelados de los cables para que solo tengamos un cable para soldar. Finalmente, tome los cuatro módulos y haga las conexiones que se muestran en la segunda imagen (si alguien sabe cómo hacer esto sin hacer un lío horriblemente enredado, revele sus secretos).

Ahora, necesitamos el código Arduino para leer los voltajes de cada sensor. Para nuestros propósitos, tratamos los sensores flexibles como interruptores; estaban encendidos o apagados. Como tal, nuestro código simplemente establece un umbral de voltaje, por encima de este umbral, emitimos un 1 al puerto serie (lo que significa que el sensor está doblado), de lo contrario, emitimos un 0:

// Toma un número de

muestras analógicas y sumarlas para cada sensor Flex

while (sample_count <NUM_SAMPLES) {

sum10 + = analogRead (A10);

sum9 + = analogRead (A9);

sum7 + = analogRead (A7);

sum11 + = analogRead (A11);

sample_count ++;

// Breve retraso para no tomarlos demasiado rápido

retraso (5);

}

// calcula el voltaje, promediando las muestras rápidas

// use 5.0 para un ADC de 5.0V

voltaje de referencia

// 5.015V es el calibrado

voltaje de referencia

voltaje10 = ((flotante) suma10 /

(flotante) NUM_SAMPLES * 5.015) / 1024.0;

voltaje9 = ((flotante) suma9 /

(flotante) NUM_SAMPLES * 5.015) / 1024.0;

voltaje7 = ((flotante) suma7 /

(flotante) NUM_SAMPLES * 5.015) / 1024.0;

voltaje11 = ((flotante) suma11 /

(flotante) NUM_SAMPLES * 5.015) / 1024.0;

// Compruebe si cada sensor flexible

es mayor que el umbral (umbral); si es así, establezca el número

//Dedo meñique

si (voltaje10> umbral)

{

// - 5 para subir

tono de voz en una octava

flex10 = -10;

}

si no flex10 = 0;

//Dedo anular

si (voltaje9>

(umbral-0.4)) {

// 5 para bajar

tono de voz en una octava

flex9 = 5;

}

si no flex9 = 0;

//Dedo medio

if (voltage7> thresh) {

// 1 para configurar

efecto de reverberación

flex7 = 1;

}

si no flex7 = 0;

//Dedo índice

si (voltaje11> umbral)

{

// 50 para configurar

ciclos a 50

flex11 = 93;

}

si no flex11 = 0;

// Restablecer todo el conteo

variable a 0 para el siguiente ciclo

sample_count = 0;

suma10 = 0;

suma9 = 0;

suma7 = 0;

suma11 = 0;

En este punto, el puerto serie debe mostrar valores para la orientación del acelerómetro y también si cada sensor flexible está doblado. ¡Estamos listos para que nuestro código Arduino hable con Max!

Paso 5: Interfaz con Max

Interfaz con Max
Interfaz con Max

Ahora que el código hexadecimal está escupiendo muchos números a través del puerto serie, necesitamos el software Max para leer estas señales. ¡El bloque de código que se muestra arriba hace exactamente eso! Eres muy bienvenido.

Nota importante: después de cargar el código en Hex, cierre todas las ventanas del puerto serie y luego cambie la letra encerrada en un círculo en el código Max para que coincida con el puerto Hex. Si no está seguro de qué letra establecer, al presionar la parte "imprimir" del código Max se enumerarán todos los puertos conectados.

La línea impresa del puerto serie del Hex se lee a través del bloque de código Max y luego se divide en función de los delimitadores de espacio. La salida al final del bloque Max le permite tomar cada número individualmente, por lo que conectaremos el primer espacio de salida a donde queremos que vaya la dirección x del acelerómetro, el segundo espacio será la dirección y, etc. Para ahora, simplemente conéctelos a bloques numéricos para asegurarse de que estén funcionando. Debería poder mover el acelerómetro y los sensores flexibles y ver cómo cambian los números en el software Max.

Paso 6: creación del resto del código Max

Dado el poder del lenguaje Max, realmente puede dejar volar su imaginación aquí con todas las formas en que puede alterar la señal de sonido entrante con su guante de poder mágico. Aún así, si se queda sin ideas, arriba hay un resumen de lo que hace nuestro código Max y cómo funciona.

Para cada parámetro que intente alterar, probablemente querrá perder el tiempo con el rango de valores provenientes del código Arduino para obtener la sensibilidad correcta.

Algunos otros consejos de resolución de problemas de Max:

  • Si no escuchas sonido

    • asegúrese de que Max esté configurado para recibir audio desde su micrófono (Opciones Dispositivo de entrada de estado de audio)
    • asegúrese de que el control deslizante de volumen maestro en Max esté activado y cualquier otro control de volumen que pueda tener en su código
  • Si el código no parece estar haciendo nada
    • asegúrese de que su parche esté bloqueado (símbolo de candado en la esquina inferior izquierda)
    • asegúrese a través de lecturas en el parche Max que su parche Max todavía está obteniendo datos del puerto serie Arduino. Si no es así, intente restablecer el puerto serie (como se describe en el Paso 5) y / o verifique sus conexiones de cableado físico.
  • Ruidos de recorte extraños al cambiar los parámetros

    esto tiene que ver con la forma en que ~ tapin y ~ tapout funcionan; específicamente que cuando cambia sus valores, se restablecen, lo que provoca el recorte. Dado nuestro conocimiento limitado del programa, estamos casi seguros de que hay una mejor manera de hacer esto en Max y eliminar el problema …

Paso 7: literalmente ponerlo todo junto

Literalmente poniendo todo junto
Literalmente poniendo todo junto
Literalmente poniendo todo junto
Literalmente poniendo todo junto
Literalmente poniendo todo junto
Literalmente poniendo todo junto
Literalmente poniendo todo junto
Literalmente poniendo todo junto

Todo lo que queda ahora es conectar nuestro circuito a nuestro guante. Tome su tela adicional y corte tiras un poco más grandes que los sensores flexibles. Coser la tela adicional al dedo del guante donde se dobla el nudillo, dejando una especie de manga para que el sensor de flexión se asiente (no podemos simplemente pegar los sensores de flexión directamente al guante porque la tela del guante se estira a medida que los dedos se doblan). Una vez que la manga esté mayormente cosida, deslice el sensor de flexión hacia adentro y coser con cuidado los cables al guante, fijando el sensor de flexión en su lugar. Repita esto para cada sensor flexible.

Luego, use el imperdible autoadhesivo para sujetar el Hex a la parte posterior del guante (es posible que desee poner un poco de pegamento caliente en el perno para asegurarse de que no se deshaga durante el uso). Coser el acelerómetro a la muñeca del guante. Finalmente, use la magia de las bridas para limpiar maravillosamente cualquier cable antiestético.

¡Estás listo para poner a prueba tu guante de canto definitivo! (Podemos recomendar encarecidamente "Harder Better Faster Stronger" de Daft Punk para mostrar completamente sus capacidades de cambio de voz)

Recomendado: