Turinys:

Automatinis derinimas: 7 žingsniai
Automatinis derinimas: 7 žingsniai

Video: Automatinis derinimas: 7 žingsniai

Video: Automatinis derinimas: 7 žingsniai
Video: 20 - Automatinis derinimas programoje KME NEVO SKY. Su Lietuviškais subtitrais (LT) 2024, Liepa
Anonim
Automatinis derinimas
Automatinis derinimas

„Bienvenue dans notrerejet Autotune“

Notre équipe va vous présenter la réalisation de ce projet. Notre équipe est composée of 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).

Projektas yra suderinamas su mikrofonu ir sūnaus valdikliu, kuris yra paruoštas ir suderinamas su FFT kompiuteriu. Yra keletas galimų modifikatorių, leidžiančių įgarsinti garso tomą ir garsą.

C'est parti pour les explications !!

1 žingsnis: kompozicijų naudojimas

  • Įrašas DEO-Nano-SoC
  • Baterijos 2 išėjimas - 5V2A
  • Mikro
  • Haut Parleur 8 omai
  • Reguliatorius: MAX660
  • „Capteur IR“: GP2Y0E02A
  • „Ampli Audio“: LM386N-1/NOPB
  • DAC: MCP4821-E/P
  • Diodas: 1N4148
  • Perkelėjas: LND150N3-G / N-FET
  • 2 AOP: TL081C
  • Rezistencijos
  • Kondensatoriai
  • „Wi -Fi“: ESP8266EX
  • 4 jungikliai
  • 3 „Leds de couleurs“

2 žingsnis: architektūra

Architektūra
Architektūra

Voici ci-dessus notre schéma bloc representant 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 and 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é et des switchs. Galų gale, le signalo modifikavimas depuis la carte sera reconverti en un signal analogique et sera transmise à travers le haut parleur.

3 žingsnis: „Partie Analogique“

Analoginė partija
Analoginė partija
Analoginė partija
Analoginė partija
Analoginė partija
Analoginė partija

Partijos analogija yra dviejų grandinių kompozicija:

Pirminė grandinė, skirta mikro partijoms, atšakoms ar CAN de la carte FPGA, stiprintuvų stiprinimui ir filtravimui, paso aprėpimui ir pašalinimui.

Unuxieme circuit qui repésentera la partie haut parleur, qui sera branchà à la sortie de la carte FPGA, composite du DAC, d'un diviseur de feszülts and d'un amplificateur audio.

Le troisième schéma est celui du régulateur produisant du -5V pour alimenter tous les composants.

4 žingsnis: PCB spausdinimas

Įspūdžiai apie PCB
Įspūdžiai apie PCB
Įspūdžių spausdinimo plokštės
Įspūdžių spausdinimo plokštės
Įspūdžių spausdinimo plokštės
Įspūdžių spausdinimo plokštės

Techninė priežiūra, ištisiniai komentarai, pagaminti iš spausdintinių plokštelių ir reljefo!

A l'aide du logiciel Alitum, nous avons pu creer deux PCB, c'est à dire la partie micro et haut parleur. Svetainės korespondentas ar mokytojas Altium qui peut kindement vous aider!

5 žingsnis: Partie Numérique

Partie Numérique
Partie Numérique

Negalima atsispausdinti tik PCB, o tai galima padaryti pagal FPGA pasirinkimą!

Supilkite la partie numérique, nous avons créer ir code C qui est séparé en deux en utilisant un thread. D'un coté, recupère le signal on le modifie et on l'envoie vers le DAC en spi. „D'un deuxième côté“, apskaičiuodama fft ir „envoie le résultat par wifi“. Išskirtinis renginys pasiekia ralentissements sur la premier partie.

Naudojant Qsys ir quartus supilkite šakotoją iš HPS avec les différents kompozitorių. Naudodami notamment une IP SPI, įkelkite komunikatą ir paspauskite, ir gaukite IP UART komunikatą, kuriame yra „wifi“.

6 žingsnis: „Le Code“

Voici le lien où nous avons récuperé le code pour faire la fft.

Naudodami kodą, įpilkite skaičiuoklę:

// Création de la configuration et des buffers in 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; // recupère la valeur provenant du pcb du microin [j].r = Value-2000.0; // išeinant į pensiją l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // dalyvauti un temps bien précis pour avoir une fréquence d’échantillonnage connue}

// FFT depuis apskaičiavimas 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 (out [t).r/1000.0)))*9;

tmp_log = tmp_log/50; jei (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); // „envoi le buffer par wifi“

fonction send 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]; }}

Įjunkite pradinį „la carte“belaidį internetą naudodami kodą:

send_wifi („AT+RST / r / n“); // demande de reset à la cartesleep (3); // dalyvauti qu'elle resetsend_wifi ("AT+CWMODE = 3 / n / r"); // pasirenkame „cartesend_wifi“režimą ("AT+CWJAP = \" wifiNom / ", \" MotDePasse / "\ r / n"); // on lui demande de se connecter au wifisleep (15); // on visit 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); // dalyvauti la connectxionsend_wifi ("AT+CIPMODE = 1 / r / n"); // on se met en mode envoie en stillleepleep (3); send_wifi ("AT+CIPSEND / r / n"); // pradedant transliaciją

fonction siųsti 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]; (z = 0; z <2500000; z ++) {}}}

Servo kodas:

affichage de la fft:

int i, j, Reikšmė = 0; sistema („aišku“);

(i = 0; i <41; i ++) {if (i <40) {for (j = 0; j <BUFSIZE; j ++) {if (table [j]*4> (40 - i)) {if (lentelė [j]*4> 35) printf (RED "|" RESET); else if (lentelė [j]*4> 28) printf (L_RED "|" RESET); else if (lentelė [j]*4> 21) printf (YEL "|" RESET); else if (lentelė [j]*4> 14) printf (L_YEL "|" RESET); else if (lentelė [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"); /*(j = 0; j <(BUFSIZE/2); j ++)

Rekomenduojamas: