Taula de continguts:
- Pas 1: Composants Utilisés
- Pas 2: Arquitectura
- Pas 3: Partie Analogique
- Pas 4: Impressió Des PCB
- Pas 5: Partie Numérique
- Pas 6: Le Code
Vídeo: Autotune: 7 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
Bienvenue dans notre projet Autotune
Notre équipe va presentar la realització d’aquest projecte. La nostra equipació està composta per 3 elements tècnics de Polytech Sorbonne a EISE4 (4ème any du cycle ingénieur en électronique informatique systems embarqués).
El nostre projecte consisteix en emetre un son capter per un micro, emetre per un alt parell i aficher la FFT en un PC. Il sera possible de modificar el seu àudio com el volum i crear un ressò.
C'est parti pour les explications !!
Pas 1: Composants Utilisés
- Carta DEO-Nano-SoC
- Bateria 2 sortida a 5V2A
- Micro
- Haut Parleur 8 Ohm
- Régulateur: MAX660
- Capteur IR: GP2Y0E02A
- Ampli Audio: LM386N-1 / NOPB
- DAC: MCP4821-E / P
- Díode: 1N4148
- Transitor: LND150N3-G / N-FET
- 2 AOP: TL081C
- Resistències
- Condensadors
- Wifi: ESP8266EX
- 4 interruptors
- 3 llums de colors
Pas 2: Arquitectura
Voici ci-dessus notre schéma bloc representant l'arquitectura del nostre projecte Autotune.
Com es pot veure, el nostre projecte va poder captar un son a l’ajuda del micro no es pot convertir el senyal analògic en un senyal numèric no l’ADC està integrat a la carta FPGA. Puis le signal sera modifié selon nos effets choisis à l'aide d'un capteur de proximité i des switchs. Enfin, el senyal modificat des de la carta serà reconvertit en un senyal analògic i es transmetrà a través de l’alt parell.
Pas 3: Partie Analogique
La nostra analogia està composta per 2 circuits:
Un premier circuit qui representa la part micro, qui sera branché a CAN de la carta FPGA, compost d’un amplificador de guany i d’un filtre passiu després d’haver recuperat el senyal.
Un deuxieme circuit qui repés la part més alta, que serà ramificat a la sortida de la carta FPGA, compost del DAC, d’un divisor de tensió i d’un àudio amplificador.
Le troisième schéma est celui du régulateur produisant du -5V pour alimenter tous les composants.
Pas 4: Impressió Des PCB
Maintenant, nous allons create us PCB afin of the 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 correspondant au tutoriel Altium qui peut certainement vous aider!
Pas 5: Partie Numérique
Després d’haver imprimit els vostres PCBs, podeu incloure’ls a la carta FPGA!
Pour la partie numérique, nous avons créer un code C qui és separat en dos en utilitzar 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 avaluar els ralentissements sobre la primera part.
Utilitzeu Qsys i quarts per a brancher HPS amb els diferents composants. Utilitzeu especialment una IP SPI per a comunicats amb el dac i una IP UART per a comunicats amb wifi a la carta.
Pas 6: Le Code
Voici le lien où nous avons récuperé le code pour faire la fft.
Si utilitzeu el codi per a la calculadora:
// Creació de la configuració i des de memòria intermèdia per a fora (s) i 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));
per a (j = 0; j <NFFT; j ++) {Valor = * h2p_lw_adc_addr; // recupere la valeur provenant du pcb du microin [j].r = Value-2000.0; // on retire l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // attend un temps bé precis pour avoir une fréquence 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 limite 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
} enviar_wifir (C_val); // on envoi le buffer par wifi
funció enviar 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]; }}
Feu servir la inicialització wifi a la carta per utilitzar el codi següent:
send_wifi ("AT + RST / r / n"); // demande de reset à la cartesleep (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); // assistir a la connexionsend_wifi ("AT + CIPMODE = 1 / r / n"); // on se met en mode envoie en continuesleep (3); send_wifi ("AT + CIPSEND / r / n"); // on commence la transmission
funció enviar 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]; per a (z = 0; z <2500000; z ++) {}}}
Code du serveur:
affichage de la fft:
int i, j, Valor = 0; sistema ("clar");
for (i = 0; i <41; i ++) {if (i <40) {for (j = 0; j <BUFSIZE; j ++) {if (taula [j] * 4> (40 - i)) {if (taula [j] * 4> 35) printf (RED "|" RESET); else if (taula [j] * 4> 28) printf (L_RED "|" RESET); else if (taula [j] * 4> 21) printf (YEL "|" RESET); else if (taula [j] * 4> 14) printf (L_YEL "|" RESET); else if (taula [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"); / * per a (j = 0; j <(BUFSIZE / 2); j ++)
Recomanat:
Disseny de jocs en Flick en 5 passos: 5 passos
Disseny de jocs en Flick en 5 passos: Flick és una manera molt senzilla de fer un joc, sobretot com un trencaclosques, una novel·la visual o un joc d’aventures
Detecció de cares a Raspberry Pi 4B en 3 passos: 3 passos
Detecció de cares a Raspberry Pi 4B en 3 passos: en aquest manual, farem la detecció de cares a Raspberry Pi 4 amb Shunya O / S mitjançant la biblioteca Shunyaface. Shunyaface és una biblioteca de reconeixement / detecció de cares. El projecte té com a objectiu aconseguir una velocitat de detecció i reconeixement més ràpida amb
Com fer un comptador de passos ?: 3 passos (amb imatges)
Com fer un comptador de passos ?: Jo solia tenir un bon rendiment en molts esports: caminar, córrer, anar en bicicleta, jugar a bàdminton, etc. M’encanta viatjar poc després. Bé, mireu el meu ventre corpulent … Bé, de totes maneres, decideixo tornar a començar a fer exercici. Quin equip he de preparar?
Mirall de vanitat de bricolatge en passos senzills (amb llums de tira LED): 4 passos
Mirall de vanitat de bricolatge en passos senzills (amb llums de tires LED): en aquest post vaig crear un mirall de vanitat de bricolatge amb l'ajut de les tires LED. És molt genial i també heu de provar-les
Arduino Halloween Edition: pantalla emergent de zombis (passos amb imatges): 6 passos
Arduino Halloween Edition: pantalla emergent de zombis (passos amb imatges): voleu espantar els vostres amics i fer soroll a Halloween? O simplement voleu fer una bona broma? Aquesta pantalla emergent de Zombies ho pot fer! En aquest instructiu us ensenyaré a fer zombis fàcilment amb Arduino. L'HC-SR0