Sommario:
- Passaggio 1: componenti utilizzati
- Passaggio 2: architettura
- Passaggio 3: parti analogiche
- Passaggio 4: stampa dei PCB
- Passaggio 5: festa numerica
- Passaggio 6: Le Code
Video: Autotune: 7 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Bienvenue dans notre projet Autotune
Notre équipe va vous présenter la réalisation de ce projet. Notre équipe è composta da 3 élèves ingénieurs de Polytech Sorbonne en EISE4 (4ème année du cycle ingénieur en électronique informatique systèmes embarqués).
Notre project consiste in un son capter par un micro, emit par un haut parleur et afficher la FFT su un écran PC. Il sera possible de modifier le son audio comme le volume et créer un écho.
C'est parti per le spiegazioni !!
Passaggio 1: componenti utilizzati
- Carta DEO-Nano-SoC
- Batterie 2 uscite a 5V2A
- micro
- Alto Parleur 8 Ohm
- Regolatore: MAX660
- Sensore IR: GP2Y0E02A
- Amplificatore audio: LM386N-1/NOPB
- DAC: MCP4821-E/P
- Diodo: 1N4148
- Transitore: LND150N3-G / N-FET
- 2 AOP: TL081C
- resistenze
- Condensatori
- Wi-Fi: ESP8266EX
- 4 interruttori
- 3 Led di colore
Passaggio 2: architettura
Voici ci-dessus notre schéma bloc représentant l'architecture de notre projet Autotune.
Comme vous pouvez le voir, notre projet va pouvoir capter un son à l'aide du micro dont le signal analogique capté sera converti en un signal numérique dont l'ADC è integrato nella carta FPGA. Puis le signal sera modifié selon nos effets choisis à l'aide d'un capteur de proximité et des switchs. Enfin, le signal modifié depuis la carte sera reconverti en un signal analogique et sera transmise à travers le haut parleur.
Passaggio 3: parti analogiche
Notre partie analogie est composée de 2 circuiti:
Un circuito premier che rappresenta la partie micro, che si ramifica al CAN de la carte FPGA, compone un amplificatore di guadagno e un filtro passivo dopo aver recuperato il segnale.
Un secondo circuito qui repésentera la partie haut parleur, qui sera branché à la sortie de la carte FPGA, composé du DAC, d'un divisore de tension et d'un amplificateur audio.
Le troisième schema est celui du régulateur produisant du -5V pour alimenter tous les composants.
Passaggio 4: stampa dei PCB
Mantenimento, tutti i nostri prodotti PCB afin de les imprimer et de les relier !
A l'aide du logiciel Alitum, nous avons pu creer deux PCBs, c'est à dire la partie micro et haut parleur. Voici le site corrispondenti au tutoriel Altium qui peut Certainement vous aider !
Passaggio 5: festa numerica
Après avoir imprimer vos PCBs, vous pouvez enfin brancher le tout à la carte FPGA!
Pour la partie numérique, nous avons creer un code C qui est séparé en deux en utilisant un thread. D'un coté, on récupère le signal on le modifie et on l'envoie vers le DAC en spi. D'un deuxième côté, on calcule la fft et on envoie le résultat par wifi. Cette séparation permet d'éviter les ralentissements sur la première partie.
Su utilizzare Qsys et quartus pour brancher le HPS avec les différents composants. On use notamment une IP SPI pour communiquer avec le dac et une IP UART pour communiquer avec la carte wifi.
Passaggio 6: Le Code
Voici le lien où nous avons récuperé le code pour faire la fft.
Su utilizzare se codice per calcolare la fft:
// Creazione della configurazione e dei buffer in entrata e in uscita per s(t) e S(f) const kiss_fft_cfg config = kiss_fft_alloc(NFFT, 0, NULL, NULL);
kiss_fft_cpx* in = (kiss_fft_cpx*)malloc(NFFT*sizeof(kiss_fft_cpx));kiss_fft_cpx* out = (kiss_fft_cpx*)malloc(NFFT*sizeof(kiss_fft_cpx));
for(j = 0; j < NFFT; j++){Valore = *h2p_lw_adc_addr; //recupera la valeur provenant du pcb du microin[j].r = Value-2000.0; //on ritira l'offset de cette valeurfor(i = 0; i < 2100; i++) {} //attend un temps bien précis pour avoir une frequence d'échantillonnage connue}
// Calcul de la FFT depuis in vers outkiss_fft(config, in, out);bzero(C_val, 110); //remet à zero le tableau qui nous sert de buffer que l'on va envoyer par wififor(t=0;t< (NFFT/4);t++) { //pour limiter la taille du buffer on limit la sortie de la fft à des valeurs entre 0 et 9 tmp_log=20*(log(abs(out[t].r/1000.0)))*9;
tmp_log=tmp_log/50; if(tmp_log<0){ tmp_log=0; } if(tmp_log>9){ tmp_log=9; } sprintf(tmp_val, "%d", tmp_log); strcat(C_val, tmp_val); //ajoute au buffer la nouvelle valeur
}send_wifir(C_val); //sul buffer del pacchetto per wifi
funzione invia wifir:
void send_wifir(char* com_AT){ int num, z; for(z=0;z<22000000;z++) {} for(num = 0; num < (int)strlen(com_AT); num++) { *(h2p_lw_rs232_addr) = com_AT[num]; } }
Per inizializzare la carta wifi su utilizzare il codice suivant:
send_wifi("AT+RST\r\n"); //richiede di resettare alla carta il sonno(3); //attend qu'elle resetsend_wifi("AT+CWMODE=3\n\r"); //choisit le mode de la cartesend_wifi("AT+CWJAP=\"wifiNom\", \"MotDePasse\"\r\n"); //on lui demande de se connecter au wifisleep(15); //on attend qu'elle se connectesend_wifi("AT+CIPSTART=\"UDP\", \"192.168.43.110\", 32003\r\n"); //On lui demande de se connecter en udp avec le serveur ouvert sur un autre ordinateursleep(3); //attend la connexionsend_wifi("AT+CIPMODE=1\r\n"); //on se met en mode envoie en continueleep(3);send_wifi("AT+CIPSEND\r\n"); //all'inizio della trasmissione
funzione invia wifi:
void send_wifi(char* com_AT){ int num, z;for(num = 0; num < (int)strlen(com_AT); num++) { *(h2p_lw_rs232_addr) = com_AT[num]; for(z=0;z<2500000;z++) {} } }
Codice del server:
affichage de la fft:
int i, j, Valore=0; sistema("cancella");
for(i =0; i < 41; i++) { if(i < 40) { for(j = 0; j < BUFSIZE; j++) { if(tabella[j]*4 > (40 - i)) { if (tabella[j]*4 > 35) printf(RED "|" RESET); else if(table[j]*4 > 28) printf(L_RED "|" RESET); else if(tabella[j]*4 > 21) printf(YEL "|" RESET); else if(table[j]*4 > 14) printf(L_YEL "|" RESET); else if(tabella[j]*4 > 7) printf(L_GRN "|" RESET); else printf(GRN "|" RESET); } else printf(" "); } printf("\n"); } else { printf("0Hz 2.5Hz 5Hz 7.5kHz 10kHz\n"); /*for(j = 0; j < (BUFSIZE/2); j++)
Consigliato:
Come realizzare un'antenna doppia biQuade 4G LTE Semplici passaggi: 3 passaggi
Come realizzare un'antenna doppia biQuade 4G LTE Semplici passaggi: La maggior parte delle volte che ho affrontato, non ho una buona potenza del segnale per i miei lavori quotidiani. Così. Cerco e provo diversi tipi di antenna ma non funziona. Dopo aver perso tempo ho trovato un'antenna che spero di realizzare e testare, perché è principio costruttivo non
Rilevamento del volto su Raspberry Pi 4B in 3 passaggi: 3 passaggi
Rilevamento del volto su Raspberry Pi 4B in 3 passaggi: In questo Instructable eseguiremo il rilevamento del volto su Raspberry Pi 4 con Shunya O/S utilizzando la libreria Shunyaface. Shunyaface è una libreria di riconoscimento/rilevamento facciale. Il progetto mira a raggiungere la massima velocità di rilevamento e riconoscimento con
Specchio per il trucco fai-da-te in semplici passaggi (usando le strisce luminose a LED): 4 passaggi
Specchio per il trucco fai-da-te in semplici passaggi (usando le strisce luminose a LED): in questo post, ho realizzato uno specchio per il trucco fai-da-te con l'aiuto delle strisce LED. Sono davvero fantastici e devi provarli anche tu
Gioca a Doom sul tuo iPod in 5 semplici passaggi!: 5 passaggi
Gioca a Doom sul tuo iPod in 5 semplici passaggi!: una guida passo passo su come eseguire il dual-boot di Rockbox sul tuo iPod per giocare a Doom e a dozzine di altri giochi. È qualcosa di veramente facile da fare, ma molte persone rimangono stupite quando mi vedono giocare a doom sul mio iPod e si confondono con le istruzioni
Come eseguire l'autotune (gratuitamente!): 4 passaggi
Come eseguire l'autotune (gratuitamente!): Usando garageband, scopri come creare facilmente quell'effetto di autotune che senti così tanto.**EDIT** Link a un esempio: http://limelinx.com/files/e7b32e25dda5c5a22ab1bfc8c0eb3acd