Sommario:
- Passaggio 1: Requisiti 1/3 - Hardware
- Passaggio 2: Requisiti 2/3 - Componenti per il tuo circuito
- Passaggio 3: Requisiti 3/3 - Software
- Passaggio 4: circuito di ingresso
- Passaggio 5: circuito di uscita
- Passaggio 6: [FACOLTATIVO] Creazione di circuiti stampati e componenti di saldatura
- Passaggio 7: configurazione del SoC
- Passaggio 8: programmazione C HPS
- Passaggio 9: Acquisizione digitale dell'ADC dalla scheda
- Passaggio 10: calcolo FFT
- Passaggio 11: visualizzazione della FFT
- Passaggio 12: assemblaggio
- Passaggio 13: effetti sonori
- Passaggio 14: [FACOLTATIVO] Realizzare il casco
Video: Casco Spartan Voice Changer: 14 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 09:59
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
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
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
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
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
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
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
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
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
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
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
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
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.
- Il circuito di ingresso invierà il segnale audio catturato dal microfono, amplificato, filtrato e sfalsato.
- 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.
- 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
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
Eccoci nella fase più manuale del progetto:
- Per prima cosa abbiamo incollato le diverse parti stampate in 3D del casco.
- Per riempire gli spazi tra i pezzi incollati abbiamo aggiunto una finitura utilizzando una penna 3D.
- Abbiamo lucidato gli interstizi riempiti con la penna e l'elmo più in generale in modo che il dipinto regga bene dopo.
- 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.
- Finalmente abbiamo stampato il logo della nostra scuola sul lato del Casco
Consigliato:
Casco di sicurezza Covid Parte 1: un'introduzione ai circuiti di Tinkercad!: 20 passaggi (con immagini)
Casco di sicurezza Covid Parte 1: un'introduzione ai circuiti di Tinkercad!: Ciao, amico! In questa serie in due parti, impareremo come usare i circuiti di Tinkercad: uno strumento divertente, potente ed educativo per imparare come funzionano i circuiti! Uno dei modi migliori per imparare è fare. Quindi, prima disegneremo il nostro progetto personale: th
Casco da discoteca stampabile in 3D!: 11 passaggi (con immagini)
Casco da discoteca stampabile in 3D!: ispirato al classico casco "Thomas" dei Daft Punk. Illumina la stanza e sii l'invidia di tutti i tuoi amici con questo fantastico casco da discoteca alimentato da Arduino! Avrai bisogno di accedere a una stampante 3D e a un saldatore per completare questo progetto. Se vuoi
Casco da bici LED: 6 passaggi (con immagini)
Casco da bici LED: ecco come aggiungere LED di sicurezza al casco da bici utilizzando vernice conduttiva. Perdevo sempre quelle luci che attacchi alla tua bici, e non sono economiche o di buona qualità. Materiali: vernice conduttiva epossidica conduttiva epossidica da 5 minuti (colla a caldo per
Casco da bicicletta con aria condizionata (realizzato con computer riciclati): 5 passaggi (con immagini)
Casco da bicicletta con aria condizionata (realizzato con computer riciclati): questo casco con le ventole sui fori aspira l'aria dalla testa e puoi sentirla salire sul viso e lungo i lati della testa! Ottimo per andare in bicicletta nelle giornate di sole quando fa molto caldo. I LED aiutano anche con la bicicletta notturna! Le parti tutte
Voice Changer Hack per sintetizzatori fai-da-te: 9 passaggi (con immagini)
Voice Changer Hack per sintetizzatori fai-da-te: per coloro che hanno seguito i miei ultimi "bles", saprai che ultimamente ho costruito alcuni sintetizzatori timer 555. Di recente, durante un viaggio al mio deposito di riciclaggio locale, ho trovato un cambia voce per bambini. È il tipo in cui parli in un microfono