Sommario:

Casco Spartan Voice Changer: 14 passaggi (con immagini)
Casco Spartan Voice Changer: 14 passaggi (con immagini)

Video: Casco Spartan Voice Changer: 14 passaggi (con immagini)

Video: Casco Spartan Voice Changer: 14 passaggi (con immagini)
Video: LA Comic Con 2021 (ashtens_empire shooting w Armando UNEDITED) 2024, Dicembre
Anonim
Casco Spartan Voice Changer
Casco Spartan Voice Changer
Casco Spartan Voice Changer
Casco Spartan Voice Changer

Ciao! Siamo un team di 4 studenti del Politecnico della Sorbona:

  • Louis Buchert
  • Bilal Melehi
  • Bao Tinh Piot
  • Marco Longépé

Questo progetto è realizzato come parte dei nostri studi e mira a prendere in mano una serie di strumenti, oltre a dimostrare i nostri risultati teorici.

Il famoso oggetto assume le sembianze di un elmo che ricorda quello dell'eroe di un certo videogioco il cui nome andrà perso. Anche per il lato design abbiamo uno schermo che mostra la trasformata di Fourier del segnale audio in uscita dall'altoparlante. Lo scopo di questo auricolare è quello di cambiare la voce del vettore in tempo reale utilizzando una serie di effetti selezionabili.

Obiettivi educativi:

  • Cattura il suono da un microfono
  • Amplifica, filtra, digitalizza il segnale
  • Realizzare la FFT di un segnale
  • Mostra questa FFT su uno schermo
  • Sintesi del segnale
  • Estrarre un suono da un altoparlante
  • Realizza effetti sul suono audio (riverbero, eco, ecc…)

Ora che abbiamo messo le basi e presentato il progetto, è ora di metterci le mani sopra!

Passaggio 1: Requisiti 1/3 - Hardware

Requisiti 1/3 - Hardware
Requisiti 1/3 - Hardware

Per costruire con successo il tuo casco, avremo bisogno di hardware per far funzionare il dispositivo.

  • Scheda di sviluppo DE0-Nano-SoC di Terasic + schermo LCD TFT Adafruit (Arduino)
  • Accesso a una stampante 3D per realizzare il casco (Se sei uno studente universitario avvicinati alla tua università, alcuni hanno laboratori accessibili agli studenti)
  • Un computer con una connessione internet e un minimo di connettività (USB, Ethernet). Il tuo computer deve anche avere un potente processore poiché la compilazione di programmi su Qsys richiede molto tempo.
  • (Non richiesto) Una stampante che crea circuiti stampati (PCB) da file Gerber per ridurre le dimensioni del circuito + un saldatore per posizionare i componenti sul PCB.
  • (Fortemente consigliato): Un buon caffè per goderti il tuo lavoro con il nostro Instructable:)

Passaggio 2: Requisiti 2/3 - Componenti per il tuo circuito

Requisiti 2/3 - Componenti per il tuo circuito
Requisiti 2/3 - Componenti per il tuo circuito
Requisiti 2/3 - Componenti per il tuo circuito
Requisiti 2/3 - Componenti per il tuo circuito
Requisiti 2/3 - Componenti per il tuo circuito
Requisiti 2/3 - Componenti per il tuo circuito

Ecco i componenti necessari per il tuo circuito:

  • Amplificatore audio di classe AB Texas Instrument LM386
  • Tagliere
  • Set di cavi Maschio-Maschio, Maschio-Femmina
  • LM358P Convertitore digitale-analogico (DAC)
  • Altoparlante
  • Microfono piccolo utilizzato nel circuito analogico
  • Un set di resistenze da 1kOhm a 220kOhm
  • Condensatore 1.5nF
  • Condensatore 50nF
  • Condensatore 100nF
  • Condensatore 100uF
  • Condensatore 220uF
  • x4 Condensatori 10uF

Passaggio 3: Requisiti 3/3 - Software

Requisiti 3/3 - Software
Requisiti 3/3 - Software
Requisiti 3/3 - Software
Requisiti 3/3 - Software

Ultimo ma non meno importante, avrai bisogno di un software:

  • Quartus 15.1: versione Lite
  • Un compilatore C (gcc per esempio)
  • Altium per la progettazione di circuiti stampati
  • La suite embedded SoC di Altera per comunicare con la mappa SoC

  • mastice

Passaggio 4: circuito di ingresso

Circuito di ingresso
Circuito di ingresso
Circuito di ingresso
Circuito di ingresso
Circuito di ingresso
Circuito di ingresso
Circuito di ingresso
Circuito di ingresso

Costruiamo il circuito. Usa l'immagine sopra del circuito per assemblarlo sulla breadboard. Vedrai anche l'immagine del BreadBoard e del circuito all'interno per vedere come sono collegati i pin. L'intero circuito è alimentato con una corrente continua (DC) di 5V. Per questo, puoi utilizzare una batteria da 5 V con un convertitore USB-B o un generatore di funzioni.

Alcuni promemoria:

  • L'alimentazione a 5V e la terra sono collegate su linee orizzontali separate della breadboard
  • Se vuoi collegare 2 componenti in parallelo, mettili in una linea comune della breadboard
  • Se si vogliono collegare 2 componenti seriali, i componenti devono avere un solo pin in una linea comune della breadboard.

Non esitare a guardare un tutorial dedicato su come utilizzare una breadboard e costruirci sopra un circuito. Inoltre, non dimenticare di leggere attentamente la posizione dei pin dell'amplificatore audio LM358P (vedi immagine sopra)

Passaggio 5: circuito di uscita

Circuito di uscita
Circuito di uscita
Circuito di uscita
Circuito di uscita
Circuito di uscita
Circuito di uscita
Circuito di uscita
Circuito di uscita

Quasi le stesse istruzioni del passaggio 4. I quattro ingressi: SDI, non CS, SCK, non LDAC provengono dalla tua scheda DE0-Nano-Soc. Vedremo più avanti come generarli.

Non dimenticare di leggere attentamente le posizioni dei pin dell'amplificatore audio LM386 (vedi immagine sopra)

Passaggio 6: [FACOLTATIVO] Creazione di circuiti stampati e componenti di saldatura

[FACOLTATIVO] Creazione di circuiti stampati e componenti di saldatura
[FACOLTATIVO] Creazione di circuiti stampati e componenti di saldatura
[FACOLTATIVO] Creazione di circuiti stampati e componenti di saldatura
[FACOLTATIVO] Creazione di circuiti stampati e componenti di saldatura
[FACOLTATIVO] Creazione di circuiti stampati e componenti di saldatura
[FACOLTATIVO] Creazione di circuiti stampati e componenti di saldatura

Se sei abbastanza fortunato da possedere una stampante per circuiti stampati o in grado di usarne una, creeremo il nostro circuito stampato (PCB). Tieni presente che questo passaggio è facoltativo. Questo passaggio consiste solo nello spostare il circuito da una breadboard a un PCB.

Avrai bisogno di questi 2 file GERBER.

Questi file sono stati realizzati su Altium. Usali sul software della tua stampante PCB per stampare il tuo PCB. Una volta ottenuto il PCB, assicurati che sia pulito e che le tracce siano stampate correttamente.

Ora arriva il vero affare: la saldatura. Le 2 immagini sopra sono la mappa del circuito sul PCB. Ogni componente ha un nome (R6, C4, MK1 ecc.). Le immagini nei passaggi 4 e 5 mostrano i parametri dei componenti (resistenza, conduttanza…). Posiziona ogni componente dalla breadboard al PCB in base ai loro nomi.

Dopo aver saldato tutto con il saldatore, testare ogni componente con un voltmetro per verificare se ci sono cortocircuiti.

Passaggio 7: configurazione del SoC

Configurazione SoC
Configurazione SoC
Configurazione SoC
Configurazione SoC

Per quanto riguarda la configurazione del SoC, sarà necessario eseguire alcuni comandi e script inclusi nella suite integrata SoC all'interno di un terminale. Per fare ciò, dovrai aggiungere alcuni $PATH. PATH sono usati all'interno di un terminale per dire di cercare un file nelle directory fornite dal percorso quando si esegue un comando. Per farlo, digita la seguente riga di comando:

export PATH=/cygdrive/c/altera_lite/15.1/quartus/sopc_builder/bin:$PATH

Quindi digita la riga di comando per generare le intestazioni da un file sof. Ottieni il file sof compilando il tuo progetto su Quartus. Per farlo, digita:./generate_header.

Passaggio 8: programmazione C HPS

Programmazione C HPS
Programmazione C HPS

Dobbiamo realizzare 2 cose in questa parte, vale a dire leggere leggere il valore dell'ADC e scriverlo nell'SPI.

1. Leggi il valore dell'ADC

L'indirizzo della memoria in cui è contenuto l'ADC non è direttamente accessibile, infatti il sistema linux presente sulla scheda imposta un'astrazione della memoria. Per accedere realmente all'indirizzo ADC utilizzeremo la funzione mmap.

"h2p_lw_spi_addr=virtual_base + ((unsigned long)(ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (unsigned long)(HW_REGS_MASK));"

Questa istruzione permette di aggiungere un offset all'inizio dell'indirizzo base per raggiungere l'indirizzo della memoria allocata per l'ADC, e di eseguire sull'indirizzo risultante un AND logico per tenere conto del mascheramento.

Dopodiché, sarà solo necessario dereferenziare il puntatore nel programma per ottenere il suo valore.

2. Scrivi il valore dell'ADC nello SPI

La manipolazione è identica, questa volta diamo a mmap l'offset per atterrare sull'indirizzo assegnato dallo SPI. Durante la scrittura nello SPI, la documentazione tecnica specifica che è necessario scrivere all'indirizzo + 1 il valore dell'adc.

"*(h2p_lw_spi_addr+1) = ((0x1 << 12) | *h2p_lw_adc_addr);"

Questa istruzione consente di scrivere sull'SPI. Infatti il bit 4, quindi 1 << 12, è il bit che permette di attivare l'SPI. Con un OR logico, quindi, diamo allo SPI sia il bit di attivazione che il valore dell'ADC.

Passaggio 9: Acquisizione digitale dell'ADC dalla scheda

Acquisizione Digitale dell'ADC dalla Carta
Acquisizione Digitale dell'ADC dalla Carta
Acquisizione Digitale dell'ADC dalla Carta
Acquisizione Digitale dell'ADC dalla Carta
Acquisizione Digitale dell'ADC dalla Carta
Acquisizione Digitale dell'ADC dalla Carta
Acquisizione Digitale dell'ADC dalla Carta
Acquisizione Digitale dell'ADC dalla Carta

Prima di tutto, dovrai impostare l'indirizzo IP Ethernet del tuo computer tramite Pannello di controllo -> Rete -> Scheda Parmesals. Seleziona l'interfaccia ethernet della scheda, proprietà, indirizzo ipv4 e inserisci un IP fisso, una maschera ecc…

Quindi, collega la scheda dal lato del jack di alimentazione con il cavo micro USB. Apri il programmatore Quartus e avvia l'esportazione. Questa manipolazione verrà ripetuta dopo ogni spegnimento della scheda.

Cambia il cavo della presa micro USB, per collegarlo questa volta accanto al jack Ethernet. Ora con Putty sarà necessario collegarsi alla scheda tramite collegamento seriale. La configurazione è visibile nelle foto, l'idea è quella di sostituire COM5 con COM seguito dal numero che puoi trovare in gestione dispositivi (fai clic destro sul logo di Windows per aprirlo).

Premi invio, sei connesso.

Info per riavviare il progetto: - Fissare l'ip ethernet corrispondente alla scheda - Accendere la scheda, ogni volta che si accende, è necessario mettere con "programma" sotto quartus il progetto compilato nella scheda. Questo si fa tramite la porta micro-USB - Per poter visualizzare il risultato del programma usiamo più micro USB ma UART - Con mastice configurato per seriale COM5 (o 6 watch gestinnaire periph) Connettersi alla scheda. - Impostare una password (passwd) - Impostare l'indirizzo IP ifconfig ethxx IPchoice (IP non lontano da quello per eth del PC) - Generare l'intestazione secondo Qsys con il terminale integrato (export PATH) - make - scp l exec nel map - esegui sotto stucco il programma

Passaggio 10: calcolo FFT

Calcolo FFT
Calcolo FFT

Per ottenere la trasformata di Fourier veloce nel nostro programma C, utilizzeremo una libreria scritta da Mark Borgerding: Kiss FFT. Puoi scaricare la libreria qui: https://kissfft.sourceforge.net/. L'applicazione di una FFT su un segnale è necessaria per modificare e applicare gli effetti del segnale. Può anche servire per visualizzare lo spettro di un segnale.

Il primo passo nel tuo programma C consiste nell'allocare la memoria per memorizzare il risultato FFT. La dimensione della memoria dipende dal numero di punti utilizzati per calcolare la FFT. Più punti hai, più precisa sarà la FFT. Tuttavia, il programma verrà eseguito più lentamente e utilizzerà più memoria. Nota che otterrai due array dalla funzione kiss_fft: l'input e l'output della funzione (cx_in e cx_out)

Una volta che il nostro array è stato riempito con nuovi valori FFT, cioè quando r = Win - 1, stiamo elaborando la FFT. Per quanto riguarda il display, stiamo visualizzando solo la parte positiva dello spettro, in quanto c'è una simmetria tra la parte negativa e la parte positiva.

Per quanto riguarda l'asse orizzontale, stiamo riducendo i valori di picco di 100*altezza/(altezza²) per distinguere i picchi delle frequenze principali.

Stiamo utilizzando la chiamata di sistema usleep per definire una frequenza di lettura per i valori ADC. Questa frequenza è attualmente impostata su 1, 5 Hz.

Passaggio 11: visualizzazione della FFT

Visualizzazione della FFT
Visualizzazione della FFT
Visualizzazione della FFT
Visualizzazione della FFT

Sulla base di un esempio fornito sullo schermo LCD TFT Adafruit disponibile qui: https://www.terasic.com/downloads/cd-rom/de0-nano-s… abbiamo programmato il NIOS della nostra scheda in modo che sia in grado di leggere il valore dell'ADC.

Quindi il registro ADC è condiviso tra NIOS e HPS perché i valori ADC verranno utilizzati per visualizzare l'FFT sullo schermo NIOS e quegli stessi valori verranno scritti sull'SPI per essere emessi dalla scheda e infine convertiti dal DAC per ottenere un segnale analogico.

Passaggio 12: assemblaggio

Assemblea
Assemblea

Abbiamo quasi finito! Dovrai assemblare ogni parte del progetto (circuito di ingresso, circuito di uscita e scheda). Assicurarsi di collegare le parti ai pin corretti secondo il Progetto Quartus.

  1. Il circuito di ingresso invierà il segnale audio catturato dal microfono, amplificato, filtrato e sfalsato.
  2. Il programma C presente sulla scheda leggerà i valori dell'ADC come abbiamo visto in precedenza, e lo scriverà sullo SPI in modo da poter recuperare il valore sul GPIO della scheda.
  3. Quindi l'uscita GPIO dello SPI trasmetterà le informazioni che verranno decodificate dal nostro DAC e amplificate correndo per raggiungere l'altoparlante.

Passaggio 13: effetti sonori

Effetti sonori
Effetti sonori
Effetti sonori
Effetti sonori

L'unico passo rimasto sono gli effetti sonori.

Gli effetti disponibili sono:

  • Filtro ad alta frequenza
  • Filtro a bassa frequenza

Puoi passare da un effetto all'altro grazie a un pulsante. Questo pulsante cambierà una variabile nel nostro programma C, in modo che possa applicare l'effetto giusto.

Passaggio 14: [FACOLTATIVO] Realizzare il casco

[FACOLTATIVO] Realizzare il casco
[FACOLTATIVO] Realizzare il casco
[FACOLTATIVO] Realizzare il casco
[FACOLTATIVO] Realizzare il casco
[FACOLTATIVO] Realizzare il casco
[FACOLTATIVO] Realizzare il casco

Eccoci nella fase più manuale del progetto:

  1. Per prima cosa abbiamo incollato le diverse parti stampate in 3D del casco.
  2. Per riempire gli spazi tra i pezzi incollati abbiamo aggiunto una finitura utilizzando una penna 3D.
  3. Abbiamo lucidato gli interstizi riempiti con la penna e l'elmo più in generale in modo che il dipinto regga bene dopo.
  4. Abbiamo dipinto il casco con 2 strati: il primo in nero antracite, da vicino, e un secondo di verde primario da più lontano per dare sfumature di verde più scuro.
  5. Finalmente abbiamo stampato il logo della nostra scuola sul lato del Casco

Consigliato: