Orodha ya maudhui:

Autotune: Hatua 7
Autotune: Hatua 7

Video: Autotune: Hatua 7

Video: Autotune: Hatua 7
Video: Мальчик спел ту самую песню из Пятого элемента – Україна має талант 2021 – Выпуск 2 2024, Novemba
Anonim
Autotune
Autotune

Bienvenue haijashughulikiwa na Autotune

Notre équipe va vous présenter la réalisation de ce projet. Noté équipe is 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).

Maelezo zaidi ni pamoja na kuwa na habari zaidi juu ya habari ndogo ndogo, tafadhali wasiliana na washirika wa FFT kwenye PC. Na uwezekano wa kubadilisha muundo wa sauti na sauti na sauti zaidi.

C'est parti pour les explications !!

Hatua ya 1: Watunzi Matumizi

  • Carte DEO-Nano-SoC
  • Pato la Batterie 2 kwa 5V2A
  • Ndogo
  • Haut Parleur 8 Ohm
  • Msajili: MAX660
  • Capteur IR: GP2Y0E02A
  • Sauti ya Ampli: LM386N-1 / NOPB
  • DAC: MCP4821-E / P
  • Diode: 1N4148
  • Transitor: LND150N3-G / N-FET
  • 2 AOP: TL081C
  • Kujiunga tena
  • Wafanyabiashara
  • Wifi: ESP8266EX
  • 4 mabadiliko
  • 3 Leds de couleurs

Hatua ya 2: Usanifu

Usanifu
Usanifu

Voici ci-dessus notre schéma bloc représentant kwa muundo wa ujenzi wa 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 sign numérique dont l'ADC is intégré dans la carte FPGA. Kuweka ishara ya mabadiliko ya sheria na huduma za siku moja kwa moja kwa wahusika kutoka kwa swichi. Enfin, le signal modifié depuis la carte sera reconverti en un signal analogique and sera transmise to travers le haut parleur.

Hatua ya 3: Partie Analogique

Partie Analogique
Partie Analogique
Partie Analogique
Partie Analogique
Partie Analogique
Partie Analogique

Notre partie analogie est composée de 2 nyaya:

Waziri Mkuu anazunguka kwa sehemu ndogo, ikiwa ni pamoja na tawi la FPGA, inaweza kutunzwa kwa kupata faida na kutoa maoni juu ya ishara.

Un deuxieme circuit quésentera la partie haut parleur, qui sera branché to la sortie de la carte FPGA, composé du DAC, d'un diviseur de tension and d'un amplificationur audio.

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

Hatua ya 4: Maonyesho ya PCB za Des

Ishara za PCB
Ishara za PCB
Ishara za PCB
Ishara za PCB
Ishara za PCB
Ishara za PCB

Kudumisha, nous allons créer nos PCB kwa sababu ya imprimer na de les relier!

L'aide du logiciel Alitum, nous avons pu creer deux PCBs, c'est à dire la partie micro et haut parleur. Mtangazaji wa tovuti hii au mwalimu wa Altium ni nani anayeweza kusaidia!

Hatua ya 5: Partie Numérique

Nambari ya Partie
Nambari ya Partie

Après avoir imprimer vos PCBs, wewe pouvez enfin brancher na 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é, juu ya kumbukumbu na ishara juu ya modifie et on lenvoie vers le DAC en spi. D'un deuxième côté, kwenye hesabu ya fft et kwenye envoie le résultat par wifi. Cette separation permet d'éviter les ralentissements sur la première partie.

Kwenye matumizi ya Qsys na quartus pour brancher na HPS inajumuisha watunzi tofauti. Katika kutumia notamment une IP SPI pour communiquer avec le dac et une IP UART pour communiquer avec la carte wifi.

Hatua ya 6: Le Code

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

Tumia se code ya kumwaga calculer la fft:

// 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 * nje = (kiss_fft_cpx *) malloc (ukubwa wa NFFT * (kiss_fft_cpx));

kwa (j = 0; j <NFFT; j ++) {Thamani = * h2p_lw_adc_addr; // recupère la valeur provenant du pcb du microin [j].r = Thamani-2000.0; // kwa kustaafu l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // kuhudhuria kwa muda mfupi hatua ya kumwaga kwa sababu ya hali ya juu}

// Calcul de la FFT depuis in vers outkiss_fft (usanidi, ndani, nje); 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 * (logi (abs (nje [t].r / 1000.0))) * 9;

tmp_log = tmp_log / 50; ikiwa (tmp_log <0) {tmp_log = 0; } ikiwa (tmp_log> 9) {tmp_log = 9; } sprintf (tmp_val, "% d", tmp_log); strcat (C_val, tmp_val); // ajoute au buffer ya mpya ya valeur

} tuma_wifir (C_val); // kwenye envoi le buffer par wifi

fonction tuma wifir:

batili send_wifir (char * com_AT) {int num, z; kwa (z = 0; z <22000000; z ++) {} kwa (num = 0; num <(int) strlen (com_AT); num ++) {* (h2p_lw_rs232_addr) = com_AT [num]; }}

Mimina kitambulisho cha kwanza cha wifi kwenye matumizi ya nambari inayofaa:

tuma_wifi ("AT + RST / r / n"); // demande de reset à la cartesleep (3); // kuhudhuria qu'elle resetsend_wifi ("AT + CWMODE = 3 / n / r"); // chagua le mode de la cartesend_wifi ("AT + CWJAP = \" wifiNom / ", \" MotDePasse / "\ r / n"); // kwenye kiunganishi cha lui demande de se au kulala (15); // kwa kuhudhuria qu'elle se connectesend_wifi ("AT + CIPSTART = \" UDP / ", \" 192.168.43.110 / ", 32003 / r / n"); // Kwenye kiunganishi cha kiungo kwenye udp avec le serviceur tovert sur un autre ordinateurs sleep (3); // kuhudhuria la connexionsend_wifi ("AT + CIPMODE = 1 / r / n"); // juu ya kukutana na hali ya mjumbe en anaendelea kulala (3); send_wifi ("AT + CIPSEND / r / n"); // kwa kuanza kwa maambukizi

fonction tuma wifi:

batili send_wifi (char * com_AT) {int num, z; for (num = 0; num <(int) strlen (com_AT); num ++) {* (h2p_lw_rs232_addr) = com_AT [num]; ya (z = 0; z <2500000; z ++) {}}}

Kanuni za kumtumikia:

ushirika wa la fft:

int i, j, Thamani = 0; mfumo ("wazi");

kwa (i = 0; i <41; i ++) {if (i <40) {for (j = 0; j <BUFSIZE; j ++) {if (meza [j] * 4> (40 - i)) {if ((jedwali [j] * 4> 35) printf (RED "|" RESET); vinginevyo ikiwa (jedwali [j] * 4> 28) printf (L_RED "|" RESET); vinginevyo ikiwa (jedwali [j] * 4> 21) printf (YEL "|" Rudisha upya); vinginevyo ikiwa (jedwali [j] * 4> 14) printf (L_YEL "|" RESET); vinginevyo ikiwa (jedwali [j] * 4> 7) printf (L_GRN "|" RESET); kingine printf (GRN "|" Rudisha upya); } mwingine printf (""); } chapa ("\ n"); } mwingine {printf ("0Hz 2.5Hz 5Hz 7.5kHz 10kHz / n"); / * kwa (j = 0; j <(BUFSIZE / 2); j ++)

Ilipendekeza: