Sisukord:

Automaatne häälestamine: 7 sammu
Automaatne häälestamine: 7 sammu

Video: Automaatne häälestamine: 7 sammu

Video: Automaatne häälestamine: 7 sammu
Video: Kuidas saada MATEMAATIKA EKSAMIL kõrged punktid? 🔥💯 2024, November
Anonim
Automaatne häälestamine
Automaatne häälestamine

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 koosneb ühest mikrofonist ja mikrofonist, võimaldab parfüümi ja hajutada FFT -d arvutiga. Selle seeria võimalikuks muutmiseks le son audio comme le volume et créer un écho.

C'est parti pour les explications !!

1. samm: kompositsioonide kasutamine

  • Carto DEO-Nano-SoC
  • Aku 2 väljund à 5V2A
  • Mikro
  • Haut Parleur 8 oomi
  • Regulaator: MAX660
  • Capteur IR: GP2Y0E02A
  • Helivõimendi: LM386N-1/NOPB
  • DAC: MCP4821-E/P
  • Diood: 1N4148
  • Transit: LND150N3-G / N-FET
  • 2 AOP: TL081C
  • Vastupidavused
  • Kondensaatorid
  • Wifi: ESP8266EX
  • 4 lülitit
  • 3 Leds de couleurs

2. samm: arhitektuur

Arhitektuur
Arhitektuur

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 and signal number, 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. Enfin, le signal modifié depuis la carte sera reconverti en un signal analogique et sera transmise à travers le haut parleur.

Samm 3: Partie Analogique

Partei Analogique
Partei Analogique
Analoogiline partei
Analoogiline partei
Analoogiline partei
Analoogiline partei

Partii analoog on kahe vooluahela kompositsioon:

Un premier circuit qui représentera partie micro, qui sera filiaal või CAN de la carte FPGA, composite d'un amplificateur de gain et d'un filter passif après avoir récupérer le signal.

Unuxieme circuit pakub partei haut parleur, qui sera filiaal à la sortie de la carte FPGA, DAC kompositsioon, pinge jagaja ja võimendav heli.

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

4. samm: PCB -de kuvamine

Impression Des PCB
Impression Des PCB
Impression Des PCB
Impression Des PCB
Impression Des PCB
Impression Des PCB

Hooldus, 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 PCB, c'est à dire la partie micro et haut parleur. Voici le saidi korrespondent või juhendaja Altium qui peut kindement vous aider!

5. samm: Partie Numérique

Partie Numérique
Partie Numérique

Après avoir imprimer vos PCBs, vous pouvez enfin brancher le tout à la carte FPGA!

Vala 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é, arvutusel la fft et on envoie le résultat par wifi. Ettetellimine on lubatud ralentissements sur la première partie.

Kasutades Qsys et quartus valage hargnemist HPS avec les différents komponendid. Kasutage notamment une IP SPI, mis sisaldab kommunikeerijat avec le dac et une IP UART kommuniquer avec la carte wifi kaudu.

6. samm: Le Code

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

Se koodi kasutamisel kasutage kalkulaatorit:

// 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));

jaoks (j = 0; j <NFFT; j ++) {Value = *h2p_lw_adc_addr; // recupère la valeur provenant du pcb du microin [j].r = Väärtus-2000,0; // pensionile jäädes l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // osale un temps bien précis pour avoir une fréquence d’échantillonnage connue}

// FFT depuis arvutamine 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 ++) {// vala piiraja la taille du buffer on limite la sortie de la fft à des valeurs entre 0 et 9 tmp_log = 20*(log (abs (välja (välja [t].r/1000.0)))*9;

tmp_log = tmp_log/50; kui (tmp_log <0) {tmp_log = 0; } kui (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 puhver par wifi

fonction send wifir:

tühine send_wifir (char* com_AT) {int number, z; for (z = 0; z <22000000; z ++) {} for (num = 0; num <(int) strlen (com_AT); num ++) { *(h2p_lw_rs232_addr) = com_AT [num]; }}

Kasutage initsialisti a la carte WiFi -d, kasutades selleks koodi:

send_wifi ("AT+RST / r / n"); // à la cartesleep (3); // osale qu'elle resetsend_wifi ("AT+CWMODE = 3 / n / r"); // valige le mode de la cartesend_wifi ("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); // osale la Connexionsend_wifi ("AT+CIPMODE = 1 / r / n"); // on se met en mode envoie en jatkuva une (3); send_wifi ("AT+CIPSEND / r / n"); // edastamise alustamisel

fonction send wifi:

tühine send_wifi (char * com_AT) {int number, z; for (num = 0; num <(int) strlen (com_AT); num ++) { * (h2p_lw_rs232_addr) = com_AT [number]; (z = 0; z <2500000; z ++) {}}}

Teenuse kood:

affichage de la fft:

int i, j, väärtus = 0; süsteem ("selge");

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

Soovitan: