Përmbajtje:

Autotune: 7 hapa
Autotune: 7 hapa

Video: Autotune: 7 hapa

Video: Autotune: 7 hapa
Video: Noizy x Stresi - Medalioni (Official Video) 2024, Nëntor
Anonim
Autotune
Autotune

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 électronic informatique systèmes embargés).

Notre projet përbëhet nga një djalë që ka kapur një mikro, emri i të cilit është parleur dhe lidhja me FFT në një PC të jashtëm. Në mënyrë të mundshme mund të modifikoni le son audio comme le volume dhe créer un écho.

C'est parti pour les explications !!

Hapi 1: Përdoruesit e përbërësve

  • Carte DEO-Nano-SoC
  • Bateria 2 dalje à 5V2A
  • Mikro
  • Haut Parleur 8 Ohm
  • Rregullatori: MAX660
  • Capteur IR: GP2Y0E02A
  • Audio Ampli: LM386N-1/NOPB
  • DAC: MCP4821-E/F
  • Dioda: 1N4148
  • Transitor: LND150N3-G / N-FET
  • 2 AOP: TL081C
  • Rezistencat
  • Kondensatorët
  • Wi -Fi: ESP8266EX
  • 4 ndërprerës
  • 3 Leds de couleurs

Hapi 2: Arkitektura

Arkitekturë
Arkitekturë

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 analogical capté sera converti en un signal numérique dont l'ADC është i integruar në la carte FPGA. Puis le signal sera modifié selon nos effets choisis à l'aide d'un capteur de proximité et des switchs. Përfundimisht, modifikimi i sinjalit mund të bëhet për rikthimin e një sinjali analogjik dhe transmetimin e traumave nga traktet e tjera.

Hapi 3: Analogy Partie

Analogjia e Partisë
Analogjia e Partisë
Analogjia e Partisë
Analogjia e Partisë
Analogjia e Partisë
Analogjia e Partisë

Analogjia e partisë është e përbërë nga 2 qarqe:

Qarku kryesor që përfaqëson mikro, si një degë ose CAN de la carte FPGA, kompozon një përforcim të shtuar të fitimit dhe filtrit të kalimit duke përdorur avoir récupérer le sinjal.

Qarku deuxieme qui repesenta la partie haut parleur, se si degë sort la sortie de la carte FPGA, kompozim i DAC, ndarje tensioni dhe dëbim audio përforcuese.

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

Hapi 4: Impression Des PCB -të

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

Maintenant, nous allons créer nos PCB afin de les imprimer et de les relier!

A l'aide du logiciel Alitum, nuk ka avons për të krijuar PCB të dyfishta, ju nuk mund të shqetësoheni për mikro dhe për parleur. Voici le korrespondent i faqes au tutoriel Altium qui peut sureement vous aider!

Hapi 5: Partie Numérique

Partie Numérique
Partie Numérique

Prill avoir imprimer me PCB, ju mund të gjeni një degëzim të shpejtë në FPGA cart la carte!

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é, në récupère le signal në le modifie et on l'envoie vers vers DAC en spi. D'un deuxième côté, në llogaritjen e fft dhe në envoie le résultat par wifi. Cette séparation permet d'éviter les ralentissements sur la première partie.

Në përdorimin e përbërësve Qsys et quartus pour brancher le HPS avec les différents. Në përdorimin e notamment une IP SPI pour communiquer avec le dac et une IP UART pour communiquer avec la carte wifi.

Hapi 6: Le Code

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

Në përdorimin e kodit, përdorni llogaritësin në 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*out = (kiss_fft_cpx*) malloc (NFFT*sizeof (kiss_fft_cpx));

për (j = 0; j <NFFT; j ++) {Vlera = *h2p_lw_adc_addr; // recupère la valeur provenant du pcb du microin [j].r = Vlera-2000.0; // në pension l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // merrni pjesë në 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 entre 0 et 9 tmp_log = 20*(log (abs (jashtë [t].r/1000.0))))*9;

tmp_log = tmp_log/50; nëse (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 tampon la nouvelle valeur

} send_wifir (C_val); // on envoi le buffer par wifi

fonction send wifir:

void send_wifir (char* com_AT) {int num, z; për (z = 0; z <22000000; z ++) {} për (num = 0; num <(int) strlen (com_AT); num ++) { *(h2p_lw_rs232_addr) = com_AT [num]; }}

Hidhni inicializuesin la carte wifi në përdorimin e kodit suivant:

send_wifi ("AT+RST / r / n"); // kërko rivendosjen e leep la cartesleep (3); // merrni pjesë në qu'elle resetsend_wifi ("AT+CWMODE = 3 / n / r"); // zgjidhni mënyrën e kartesend_wifi ("AT+CWJAP = \" wifiNom / ", \" MotDePasse / "\ r / n"); // on lui demande de se lidhës ose wifisleep (15); // në frekuentimin e queelle 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); // merrni pjesë në la connexionsend_wifi ("AT+CIPMODE = 1 / r / n"); // në mënyrën se si i dërguari vazhdon të flejë (3); send_wifi ("AT+CIPSEND / r / n"); // në fillimin e transmetimit

fonction send wifi:

i pavlefshëm send_wifi (char * com_AT) {int num, z; për (num = 0; num <(int) strlen (com_AT); num ++) { * (h2p_lw_rs232_addr) = com_AT [num]; për (z = 0; z <2500000; z ++) {}}}

Kodi i shërbimit:

afichage de la fft:

int i, j, Vlera = 0; sistemi ("i qartë");

për (i = 0; i <41; i ++) {nëse (i <40) {për (j = 0; j <BUFSIZE; j ++) {if (tabela [j]*4> (40 - i)) {nëse (tabela [j]*4> 35) printf (KUQ "|" RESETO); përndryshe nëse (tabela [j]*4> 28) printf (L_RED "|" RESETO); përndryshe nëse (tabela [j]*4> 21) printf (YEL "|" RESETO); përndryshe nëse (tabela [j]*4> 14) printf (L_YEL "|" RESETO); përndryshe nëse (tabela [j]*4> 7) printf (L_GRN "|" RESETO); tjetër printf (GRN "|" RESETO); } else printf (""); } printf ("\ n"); } else {printf ("0Hz 2.5Hz 5Hz 7.5kHz 10kHz / n"); /*për (j = 0; j <(BUFSIZE/2); j ++)

Recommended: