Cuprins:
- Pasul 1: Composants Utilisés
- Pasul 2: Arhitectură
- Pasul 3: Partie Analogique
- Pasul 4: Impression Des PCB-uri
- Pasul 5: Partie Numérique
- Pasul 6: Le Code
Video: Autotune: 7 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:46
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 systems embarqués).
Nostru proiect constă în emiterea unui captor pentru un micro, pentru un parțial înalt și mai bun la FFT pe un PC. Il sera possible de modificator le son audio comme le volume et créer un écho.
C'est parti pour les explications !!
Pasul 1: Composants Utilisés
- Carte DEO-Nano-SoC
- Baterie 2 ieșire à 5V2A
- Micro
- Haut Parleur 8 Ohm
- Régulateur: MAX660
- Capteur IR: GP2Y0E02A
- Ampli Audio: LM386N-1 / NOPB
- DAC: MCP4821-E / P
- Diodă: 1N4148
- Transitor: LND150N3-G / N-FET
- 2 AOP: TL081C
- Rezistențe
- Condensatori
- Wifi: ESP8266EX
- 4 comutatoare
- 3 Leds de couleurs
Pasul 2: Arhitectură
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 într-un signal numérique dont l'ADC est intégré dans la carte FPGA. Puis le signal sera modifié selon nos effets choisis à l'aide d'un capteur de proximité și des switchs. Enfin, le signal modifié depuis la carte sera reconverti într-un signal analogique și sera transmise à travers le haut parleur.
Pasul 3: Partie Analogique
Analiza noastră este compusă din 2 circuite:
Un premier circuit care reprezintă componenta micro, care va fi ramificată la CAN de la carte FPGA, compus dintr-un amplificator de câștig și dintr-un filtru pasiv după ce a recuperat semnalul.
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 și d'un amplificateur audio.
Le troisième schéma est celui du régulateur produisant du -5V pour alimenter tous les composants.
Pasul 4: Impression Des PCB-uri
Maintenant, nous allons create 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!
Pasul 5: Partie Numérique
După ce ați imprimat PCB-urile dvs., puteți să-l introduceți pe FPGA în toată cartea!
Pour la partie numérique, nous avons créé 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.
On use Qsys et quartus pour brancher the HPS with the different composants. On use special un IP SPI pour communiquer with the dac și une IP UART pour communiquer with la carte wifi.
Pasul 6: Le Code
Voici le lien où nous avons récupéré le code pour faire la fft.
La utilizarea codului se calculează pentru fft:
// Crearea configurării și a bufferelor în et out 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 * sizeof (kiss_fft_cpx)); kiss_fft_cpx * out = (kiss_fft_cpx *) malloc (NFFT * sizeof (kiss_fft_cpx));
for (j = 0; j <NFFT; j ++) {Value = * 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 bien précis 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 între 0 și 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); // adaugă la cea mai nouă valoare
} send_wifir (C_val); // on envoi le buffer par wifi
funcție trimite 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]; }}
Se introduce inițialistul la carte wifi pe utilizarea codului următor:
send_wifi ("AT + RST / r / n"); // demande de reset à la cartesleep (3); // attend qu'elle resetsend_wifi ("AT + CWMODE = 3 / n / r"); // alegeți modul de cărțiend_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); // participa la conexionsend_wifi ("AT + CIPMODE = 1 / r / n"); // on se met en mode envoie en continuesleep (3); send_wifi ("AT + CIPSEND / r / n"); // on start the transmission
funcție trimite 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]; pentru (z = 0; z <2500000; z ++) {}}}
Code du serveur:
affichage de la fft:
int i, j, Valoare = 0; sistem („clar”);
for (i = 0; i <41; i ++) {if (i <40) {for (j = 0; j <BUFSIZE; j ++) {if (tabel [j] * 4> (40 - i)) {if (tabelul [j] * 4> 35) printf (RED "|" RESET); altfel dacă (tabelul [j] * 4> 28) printf (L_RED "|" RESET); altfel dacă (tabelul [j] * 4> 21) printf (YEL "|" RESET); altfel dacă (tabelul [j] * 4> 14) printf (L_YEL "|" RESET); altfel dacă (tabelul [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"); / * pentru (j = 0; j <(BUFSIZE / 2); j ++)
Recomandat:
Cum să faci 4G LTE dublă antenă BiQuade Pași simpli: 3 pași
Cum să fac 4G LTE Double BiQuade Antenna Pași simpli: De cele mai multe ori mă confrunt, nu am o putere de semnal bună pentru lucrările mele de zi cu zi. Asa de. Căut și încerc diferite tipuri de antenă, dar nu funcționează. După un timp pierdut, am găsit o antenă pe care sper să o fac și să o testez, pentru că nu se bazează pe principiul
Design de joc în Flick în 5 pași: 5 pași
Designul jocului în Flick în 5 pași: Flick este un mod foarte simplu de a crea un joc, în special ceva de genul puzzle, roman vizual sau joc de aventură
Sistemul de alertă pentru parcarea inversă a autovehiculului Arduino - Pași cu pași: 4 pași
Sistemul de alertă pentru parcarea inversă a autovehiculului Arduino | Pași cu pas: în acest proiect, voi proiecta un senzor senzor de parcare inversă Arduino Car Circuit folosind senzorul cu ultrasunete Arduino UNO și HC-SR04. Acest sistem de avertizare auto bazat pe Arduino poate fi utilizat pentru navigație autonomă, autonomie robotică și alte r
Detectarea feței pe Raspberry Pi 4B în 3 pași: 3 pași
Detectarea feței pe Raspberry Pi 4B în 3 pași: În acest instructabil vom efectua detectarea feței pe Raspberry Pi 4 cu Shunya O / S folosind Biblioteca Shunyaface. Shunyaface este o bibliotecă de recunoaștere / detectare a feței. Proiectul își propune să obțină cea mai rapidă viteză de detectare și recunoaștere cu
Cum se face Autotune (gratuit!): 4 pași
Cum se face Autotune (gratuit!): Folosind garageband, aflați cum să creați cu ușurință acel efect de autotune pe care îl auziți atât de mult. ** EDITARE ** Link către un exemplu: http://limelinx.com/files/e7b32e25dda5c5a22ab1bfc8c0eb3acd