Sommario:

Tecnologia indossabile: Guanto che cambia la voce: 7 passaggi
Tecnologia indossabile: Guanto che cambia la voce: 7 passaggi

Video: Tecnologia indossabile: Guanto che cambia la voce: 7 passaggi

Video: Tecnologia indossabile: Guanto che cambia la voce: 7 passaggi
Video: Huawei BAND 6 è il vero RIVALE di MI BAND 6 | Differenze con Watch Fit e Honor Band 6 2024, Novembre
Anonim
Tecnologia indossabile: guanto che cambia voce
Tecnologia indossabile: guanto che cambia voce
Tecnologia indossabile: guanto che cambia voce
Tecnologia indossabile: guanto che cambia voce

Bene, sembra che i guanti con poteri incredibili siano di gran moda in questi giorni. Sebbene il Guanto dell'Infinito di Thanos sia un guanto piuttosto potente, volevamo creare un guanto che potesse fare qualcosa di ancora più straordinario: cambiare la voce di chi lo indossa in tempo reale.

Questo Instructable fornisce una guida dettagliata su come abbiamo progettato un guanto che cambia la voce. Il nostro progetto ha utilizzato vari sensori e un microcontrollore nel guanto per rilevare i movimenti, che sono stati inviati tramite un codice Arduino a una patch Max, dove il nostro segnale audio è stato poi alterato e distorto in modi divertenti. I sensori specifici, i movimenti e le alterazioni del suono che abbiamo usato sono tutti flessibili per diverse considerazioni; questo è solo un modo per creare un guanto che cambia la voce!

Questo progetto faceva parte di una partnership comunitaria tra gli studenti del Pomona College e la Fremont Academy of Engineering Femineers. È un mix davvero divertente di ingegneria elettronica ed elementi di musica elettronica!

Passaggio 1: materiali

Materiali
Materiali
Materiali
Materiali
Materiali
Materiali

Parti:

  • Microcontrollore HexWear (ATmega32U4) (https://hexwear.com/)
  • Accelerometro MMA8451 (https://www.adafruit.com/product/2019)
  • Sensori a flessione corta (x4) (https://www.adafruit.com/product/1070)
  • Guanto da corsa leggero
  • #2 viti e rondelle (x8)
  • Connettori terminali a crimpare; calibro 22-18 (x8) (https://www.elecdirect.com/crimp-wire-terminals/ring-crimp-terminals/pvc-ring-terminals/ring-terminal-pvc-red-22-18-6- 100 pezzi)
  • Resistenza da 50kΩ (x4)
  • Filo (~20 calibro)
  • Spilla da balia autoadesiva
  • Feltro o altro tessuto (~10 pollici quadrati)
  • Filo per cucire
  • Zipties
  • Il computer portatile
  • Microfono USB

Utensili

  • Kit di saldatura
  • Spelafili e tronchesi
  • Nastro elettrico
  • Pistola ad aria calda
  • Cacciavite
  • Forbici
  • Ago da cucito

Software:

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

Passaggio 2: installazione del software

Iniziamo con quella che è veramente la parte più esilarante di qualsiasi progetto: l'installazione di librerie (e altro ancora).

Arduino:

Scarica e installa il software Arduino (https://www.arduino.cc/en/Main/Software).

HexWear:

1) (Solo Windows, gli utenti Mac possono saltare questo passaggio) Installare il driver visitando https://www.redgerbera.com/pages/hexwear-driver-installation. Scarica e installa il driver (il file.exe elencato al passaggio 2 nella parte superiore della pagina RedGerbera collegata).

2) Installa la libreria richiesta per Hexware. Apri l'IDE di Arduino. In "File" seleziona "Preferenze". Nello spazio fornito per gli URL di Gestione schede aggiuntive, incolla

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

Quindi fare clic su "OK".

Vai su Strumenti -> Bacheca: -> Gestore bacheca. Dal menu nell'angolo in alto a sinistra, seleziona "Contribuito".

Cerca, quindi fai clic su Gerbera Boards e fai clic su Installa. Esci e riapri Arduino IDE.

Per assicurarti che la libreria sia installata correttamente, vai su Strumenti -> Lavagna e scorri fino alla fine del menu. Dovresti vedere una sezione intitolata "Schede Gerbera", sotto la quale dovrebbe apparire almeno HexWear (se non più schede come mini-HexWear).

Accelerometro:

Scarica e installa la libreria dell'accelerometro (https://learn.adafruit.com/adafruit-mma8451-accelerometer-breakout/wiring-and-test)

Passaggio 3: collegamento dell'accelerometro

Collegamento dell'accelerometro
Collegamento dell'accelerometro
Collegamento dell'accelerometro
Collegamento dell'accelerometro

Abbiamo bisogno di due tipi principali di sensori per interagire con questo progetto: un accelerometro e sensori flessibili. Li esamineremo uno alla volta, iniziando dall'accelerometro. Innanzitutto, abbiamo bisogno che le connessioni hardware corrispondano.

Per evitare di danneggiare il tuo Hex, ti consigliamo di inserire una vite n. 2 e una rondella attraverso le porte desiderate, quindi collegare tutte le connessioni a quella vite. Per evitare che qualcosa si allenti quando si gioca con il guanto, le connessioni devono essere saldate e/o crimpate. Utilizzando pochi pollici di cavo per ogni connessione, effettuare le seguenti connessioni dall'esagono all'accelerometro (vedere i pinout sopra come riferimento):

TENSIONE DI INGRESSO VINGROUND GNDSCL/D3 SCLSDA/D2 SDA

Con tutto collegato, siamo pronti per il test!

Come test, esegui il codice di esempio dell'accelerometro in Arduino (File->Esempi->Adafruit_MMA8451->MMA8451demo), assicurandoti che possa essere inviato al monitor seriale. Dovrebbe emettere l'accelerazione dovuta alla gravità (~10 m/s) nella direzione z quando tenuta a livello. Inclinando l'accelerometro, questa accelerazione verrà misurata nella direzione x o y; lo useremo per consentire a chi lo indossa di cambiare il suono ruotando la mano!

Ora, dobbiamo presentare i dati dell'accelerometro in modo tale che possano essere interfacciati con Max. Per fare ciò, dobbiamo stampare i valori di x e y, magari modificati per corrispondere all'intervallo desiderato (vedi Parte 6). Nel nostro codice allegato qui, facciamo quanto segue:

//Misura la direzione x e la direzione y. Dividiamo e moltiplichiamo per ottenere gli intervalli giusti per MAX (intervallo di 1000 in x e intervallo di 40 in y) xdir = event.acceleration.x/0.02; ydir = abs(event.accelerazione.y)*2; //Stampa tutto in un formato leggibile per Max - con spazi tra ogni numero Serial.print(xdir); Serial.print(" ");

Questo dovrebbe avere l'esadecimale che stampa i valori modificati delle direzioni x e y dell'accelerometro ogni riga. Ora siamo pronti per aggiungere i sensori flessibili!

Passaggio 4: collegamento dei sensori Flex

Collegamento dei sensori flessibili
Collegamento dei sensori flessibili
Collegamento dei sensori flessibili
Collegamento dei sensori flessibili
Collegamento dei sensori flessibili
Collegamento dei sensori flessibili

Chi lo indossa può ottenere molti potenziali controlli del suono se siamo in grado di rilevare le dita piegate. I sensori di flessione faranno proprio questo. Ogni sensore flessibile è essenzialmente un potenziometro, dove non flesso ha una resistenza di ~25KΩ, mentre completamente flesso ha una resistenza di ~100KΩ. Mettiamo ogni sensore flessibile in un semplice partitore di tensione con un resistore da 50K, come mostrato nella prima immagine.

Usando di nuovo lunghezze di filo piuttosto corte (tieni presente che tutto ciò si adatterà sul retro di un guanto), saldare quattro moduli divisori di tensione. I quattro moduli condivideranno lo stesso Vin e massa: abbiamo intrecciato insieme le estremità spellate dei fili in modo da avere un solo cavo da saldare. Infine, prendi i quattro moduli e fai i collegamenti mostrati nella seconda immagine (se qualcuno sa come farlo senza fare un pasticcio orribilmente aggrovigliato, per favore rivela i tuoi segreti).

Ora, abbiamo bisogno del codice Arduino per leggere le tensioni da ciascun sensore. Per i nostri scopi, abbiamo trattato i sensori flessibili come interruttori; erano accesi o spenti. Pertanto, il nostro codice imposta semplicemente una soglia di tensione, al di sopra di questa soglia, emettiamo un 1 sulla porta seriale (il che significa che il sensore è piegato), altrimenti emettiamo uno 0:

// Prendi un numero di

campioni analogici e sommarli per ogni sensore Flex

mentre (conteggio_campioni < NUM_SAMPLES) {

sum10 += analogRead(A10);

sum9 += analogRead(A9);

sum7 += analogRead(A7);

sum11 += analogRead(A11);

sample_count++;

//Breve ritardo per non prenderli troppo in fretta

ritardo(5);

}

// calcola la tensione, media sui campioni rapidi

// usa 5.0 per un ADC da 5.0V

tensione di riferimento

// 5.015V è il calibrato

tensione di riferimento

tensione10 = ((float)somma10 /

(flottante)NUM_SAMPLES * 5.015) / 1024.0;

tensione9 = ((float)somma9/

(flottante)NUM_SAMPLES * 5.015) / 1024.0;

tensione7 = ((float)somma7 /

(flottante)NUM_SAMPLES * 5.015) / 1024.0;

tensione11 = ((float)somma11 /

(flottante)NUM_SAMPLES * 5.015) / 1024.0;

//Controlla se ogni sensore di flessione

è maggiore della soglia (soglia) - in tal caso, impostare il numero

//Mignolo

if (tensione10 > soglia)

{

//-5 per aumentare

altezza della voce di un'ottava

flex10 = -10;

}

altrimenti flex10 = 0;

//Anulare

se (tensione9 >

(soglia-0,4)) {

///5 per abbassare

altezza della voce di un'ottava

flessibile9 = 5;

}

altrimenti flex9 = 0;

//Dito medio

if (tensione7 > soglia) {

//1 per impostare

effetto riverbero

flex7 = 1;

}

altrimenti flex7 = 0;

//Indice

if (tensione11 > soglia)

{

//50 per impostare

cicli a 50

flessione11 = 93;

}

altrimenti flex11 = 0;

//Reimposta tutto il conteggio

variabile a 0 per il ciclo successivo

sample_count = 0;

somma10 = 0;

somma9 = 0;

somma7 = 0;

somma11 = 0;

A questo punto, la porta seriale dovrebbe mostrare i valori per l'orientamento dell'accelerometro e anche se ciascun sensore flessibile è piegato. Siamo pronti per far parlare il nostro codice Arduino con Max!

Passaggio 5: interfacciamento con Max

Interfacciamento con Max
Interfacciamento con Max

Ora che il codice esadecimale sta sputando molti numeri attraverso la porta seriale, abbiamo bisogno del software Max per leggere questi segnali. Il blocco di codice nella foto sopra fa proprio questo! Sei il benvenuto.

Nota importante: dopo aver caricato il codice su Hex, chiudere tutte le finestre della porta seriale, quindi modificare la lettera cerchiata nel codice Max in modo che corrisponda alla porta Hex. Se non sei sicuro di quale lettera impostare, premendo la parte "stampa" del codice Max verranno elencate tutte le porte collegate.

La riga stampata dalla porta seriale di Hex viene letta attraverso il blocco di codice Max e quindi divisa in base ai delimitatori di spazio. L'output alla fine del blocco Max ti consente di prendere ogni numero individualmente, quindi collegheremo il primo spazio di output a dove vogliamo che vada la direzione x dell'accelerometro, il secondo spazio sarà la direzione y, ecc. Per ora, collegali ai blocchi numerici per assicurarti che funzionino. Dovresti essere in grado di spostare l'accelerometro e i sensori di flessione e vedere i numeri cambiare nel software Max.

Passaggio 6: costruire il resto del codice massimo

Data la potenza del linguaggio Max, puoi davvero scatenare la tua immaginazione qui con tutti i modi in cui puoi alterare il segnale sonoro in arrivo con il tuo magico guanto del potere. Tuttavia, se sei a corto di idee, sopra c'è una carrellata di cosa fa il nostro codice Max e come funziona.

Per ogni parametro che stai cercando di modificare, probabilmente vorrai scherzare con l'intervallo di valori proveniente dal codice Arduino per ottenere la giusta sensibilità.

Alcuni altri suggerimenti per la risoluzione dei problemi di Max:

  • Se non senti il suono

    • assicurati che Max sia impostato per ricevere l'audio dal tuo microfono (Opzioni Audio Status Input Device)
    • assicurati che il cursore del volume principale in Max sia alzato e qualsiasi altro controllo del volume che potresti avere nel tuo codice
  • Se il codice sembra non fare nulla
    • assicurati che la tua patch sia bloccata (simbolo del lucchetto nell'angolo in basso a sinistra)
    • assicurati tramite le letture nella patch Max che la tua patch Max stia ancora ricevendo dati dalla porta seriale Arduino. In caso contrario, prova a reimpostare la porta seriale (come descritto nel passaggio 5) e/o controlla i collegamenti fisici del cablaggio.
  • Strani rumori di clipping quando si modificano i parametri

    questo ha a che fare con il funzionamento di ~tapin e ~tapout; in particolare che quando si modificano i loro valori, si ripristinano, causando il ritaglio. Data la nostra conoscenza limitata del programma, siamo quasi certi che ci sia un modo migliore per farlo in Max ed eliminare il problema…

Passaggio 7: mettere letteralmente tutto insieme

Mettendo letteralmente tutto insieme
Mettendo letteralmente tutto insieme
Mettendo letteralmente tutto insieme
Mettendo letteralmente tutto insieme
Mettendo letteralmente tutto insieme
Mettendo letteralmente tutto insieme
Mettendo letteralmente tutto insieme
Mettendo letteralmente tutto insieme

Tutto ciò che resta ora è collegare i nostri circuiti al nostro guanto. Prendi il tessuto aggiuntivo e ritaglia delle strisce leggermente più grandi dei sensori di flessione. Cucire il tessuto aggiuntivo al dito del guanto dove si piega la nocca, lasciando una sorta di manica per il sensore di flessione (non possiamo semplicemente incollare i sensori di flessione direttamente sul guanto perché il tessuto del guanto si allunga quando le dita si piegano). Una volta che la manica è per lo più cucita, fai scorrere il sensore di flessione e cuci con cura i cavi al guanto, fissando il sensore di flessione in posizione. Ripetere questa operazione per ogni sensore flessibile.

Quindi, usa la spilla da balia autoadesiva per attaccare l'esagono al retro del guanto (potresti voler mettere della colla a caldo sul perno per assicurarti che non si stacchi durante l'uso). Cucire l'accelerometro al polso del guanto. Infine, usa la magia delle fascette per ripulire magnificamente eventuali fili antiestetici.

Sei pronto per mettere alla prova la tua potenza canora definitiva! (Consigliamo vivamente "Harder Better Faster Stronger" dei Daft Punk per mostrare appieno le tue capacità di cambiare voce)

Consigliato: