Tabla de contenido:
- Paso 1: Composants Utilisés
- Paso 2: Arquitectura
- Paso 3: Partie Analogique
- Paso 4: Impression Des PCB
- Paso 5: Partie Numérique
- Paso 6: Le Code
Video: Autotune: 7 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:44
Bienvenue dans notre projet Autotune
Notre équipe va vous présenter la réalisation de ce projet. Notre équipe est composée de 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 projet consiste à émettre un son capter par un micro, émit par un haut parleur et afficher la FFT sur un écran PC. Il sera posible de modifier le son audio comme le volume et créer un écho.
C'est parti pour les explications !!
Paso 1: Composants Utilisés
- Carte DEO-Nano-SoC
- Batería 2 salidas à 5V2A
- Micro
- Haut Parleur 8 ohmios
- Regulador: MAX660
- Capteur IR: GP2Y0E02A
- Ampli Audio: LM386N-1 / NOPB
- DAC: MCP4821-E / P
- Diodo: 1N4148
- Transitor: LND150N3-G / N-FET
- 2 AOP: TL081C
- Resistencias
- Condensadores
- Wifi: ESP8266EX
- 4 interruptores
- 3 leds de couleurs
Paso 2: Arquitectura
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 está integrado en la 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.
Paso 3: Partie Analogique
Notre partie analogie est composée de 2 circuits:
Un circuito premier qui représentera la partie micro, qui sera branché au CAN de la carte FPGA, composé d'un amplificateur de gain et d'un filtre passif après avoir récupérer le signal.
Un deuxieme circuit qui repésentera la partie haut parleur, qui sera branché à la sortie de la carte FPGA, composé du DAC, d'un diviseur de tension et d'un amplificateur audio.
Le troisième schéma est celui du régulateur produisant du -5V pour alimenter tous les composants.
Paso 4: Impression Des PCB
Maintenant, nous allons créer nos 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 correspondant au tutoriel Altium qui peut certainement vous aider!
Paso 5: Partie Numérique
¡Après avoir imprimer vos PCBs, vous pouvez enfin brancher le tout à la carte FPGA!
Pour la partie numérique, nous avons créer 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é, en calcule la fft et en envoie le résultat par wifi. Cette separación permet d'éviter les ralentissements sur la première partie.
Utilice Qsys et quartus pour brancher le HPS avec les différents composants. Utilice notamment une IP SPI para comunicador con la fecha y una IP UART para comunicador con wifi a la carta.
Paso 6: Le Code
Voici le lien où nous avons récuperé le code pour faire la fft.
Utilice el código se pour calculer la fft:
// Creación de la configuración y los búferes de entrada y salida pour s (t) et S (f) const kiss_fft_cfg config = kiss_fft_alloc (NFFT, 0, NULL, NULL);
kiss_fft_cpx * in = (kiss_fft_cpx *) malloc (NFFT * tamaño de (kiss_fft_cpx)); kiss_fft_cpx * out = (kiss_fft_cpx *) malloc (NFFT * tamaño de (kiss_fft_cpx));
para (j = 0; j <NFFT; j ++) {Valor = * h2p_lw_adc_addr; // recupère la valeur provenant du pcb du microin [j].r = Value-2000.0; // al retirar l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // asistir a un temps bien précis pour avoir une fréquence d’échantillonnage connue}
// Calculo 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; si (tmp_log <0) {tmp_log = 0; } si (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); // en envoi le buffer par wifi
función enviar wifir:
void send_wifir (char * com_AT) {int num, z; para (z = 0; z <22000000; z ++) {} para (num = 0; num <(int) strlen (com_AT); num ++) {* (h2p_lw_rs232_addr) = com_AT [num]; }}
Vierta el wifi a la carta del initialiser en el uso del código le suivant:
enviar_wifi ("AT + RST / r / n"); // demande de reset à la cartesleep (3); // asistir a qu'elle resetsend_wifi ("AT + CWMODE = 3 / n / r"); // elegir el modo de la cartesend_wifi ("AT + CWJAP = \" wifiNom / ", \" MotDePasse / "\ r / n"); // en lui demande de se connecter au wifisleep (15); // al asistir a qu'elle se connectesend_wifi ("AT + CIPSTART = \" UDP / ", \" 192.168.43.110 / ", 32003 / r / n"); // En lui demande de se connecter en udp avec le serveur ouvert sur un autre ordinateursleep (3); // asistir a la connexionsend_wifi ("AT + CIPMODE = 1 / r / n"); // en se reunió en modo envoie en continueleep (3); send_wifi ("AT + CIPSEND / r / n"); // al comenzar la transmisión
función 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]; para (z = 0; z <2500000; z ++) {}}}
Code du serveur:
affichage de la fft:
int i, j, Valor = 0; sistema ("claro");
para (i = 0; i <41; i ++) {if (i <40) {para (j = 0; j <BUFSIZE; j ++) {if (tabla [j] * 4> (40 - i)) {si (tabla [j] * 4> 35) printf (RED "|" RESET); else if (tabla [j] * 4> 28) printf (L_RED "|" RESET); else if (tabla [j] * 4> 21) printf (YEL "|" RESET); else if (tabla [j] * 4> 14) printf (L_YEL "|" RESET); else if (tabla [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"); / * para (j = 0; j <(BUFSIZE / 2); j ++)
Recomendado:
Cómo hacer una antena 4G LTE Doble BiQuade Pasos sencillos: 3 pasos
Cómo hacer una antena 4G LTE Doble BiQuade Pasos sencillos: La mayoría de las veces que me enfrenté, no tengo una buena intensidad de señal para mis trabajos diarios. Entonces. Busco y pruebo diferentes tipos de antena pero no trabajo. Después de perder el tiempo, encontré una antena que espero hacer y probar, porque es un principio de construcción, no
Diseño de juegos en Flick en 5 pasos: 5 pasos
Diseño de juegos en Flick en 5 pasos: Flick es una forma realmente sencilla de hacer un juego, especialmente algo como un rompecabezas, una novela visual o un juego de aventuras
Detección facial en Raspberry Pi 4B en 3 pasos: 3 pasos
Detección de rostros en Raspberry Pi 4B en 3 pasos: En este Instructable vamos a realizar la detección de rostros en Raspberry Pi 4 con Shunya O / S usando la Biblioteca Shunyaface. Shunyaface es una biblioteca de reconocimiento / detección de rostros. El proyecto tiene como objetivo lograr la velocidad de detección y reconocimiento más rápida con
¿Cómo hacer un contador de pasos ?: 3 pasos (con imágenes)
¿Cómo hacer un contador de pasos ?: Solía desempeñarme bien en muchos deportes: caminar, correr, andar en bicicleta, jugar al bádminton, etc. Me encanta andar en bicicleta para viajar en poco tiempo. Bueno, mira mi corpulento vientre … Bueno, de todos modos, decido volver a hacer ejercicio. ¿Qué equipo debo preparar?
Espejo de tocador de bricolaje en sencillos pasos (usando tiras de luces LED): 4 pasos
Espejo de tocador de bricolaje en sencillos pasos (usando tiras de luces LED): En esta publicación, hice un espejo de tocador de bricolaje con la ayuda de las tiras de LED. Es realmente genial y debes probarlos también