Kazalo:

Samodejna nastavitev: 7 korakov
Samodejna nastavitev: 7 korakov

Video: Samodejna nastavitev: 7 korakov

Video: Samodejna nastavitev: 7 korakov
Video: Быстрая укладка плитки на стены в санузле. ПЕРЕДЕЛКА ХРУЩЕВКИ от А до Я #27 2024, Julij
Anonim
Samodejna nastavitev
Samodejna nastavitev

Bienvenue dans notre projet Autotune

Notre équipe va vous présenter la réalisation de ce projet. Notre équipe est composée 3 élèves ingénieurs de Polytech Sorbonne in EISE4 (4ème année du cycle ingénieur en électronique informatique systèmes embarqués).

Notre projet consiste à émettre un son capter par un micro, émit par un haut parleur et afficher la FFT sur un écran PC. Il sera possible de modifier le son audio comme lem et créer un écho.

C'est parti pour les explications !!

1. korak: Sestavni deli Utilisés

  • Carte DEO-Nano-SoC
  • Izhod baterije 2 à 5V2A
  • Mikro
  • Visoki Parleur 8 Ohm
  • Regulator: MAX660
  • Kapital IR: GP2Y0E02A
  • Ampli Audio: LM386N-1/NOPB
  • DAC: MCP4821-E/P
  • Dioda: 1N4148
  • Transitor: LND150N3-G / N-FET
  • 2 AOP: TL081C
  • Odpornosti
  • Kondenzatorji
  • Wifi: ESP8266EX
  • 4 stikala
  • 3 Led de couleurs

2. korak: Arhitektura

Arhitektura
Arhitektura

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

3. korak: Partie Analogique

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

Notre partie analogie est coméée de 2 vezja:

Un premier circuit qui représentera la partie micro, qui sera branché au CAN de la carte FPGA, composé d'un amplificateur de gain et d'un filtre passif après avoir récupérer le signal.

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 voltage et d'un amplificateur audio.

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

Korak 4: Impression Des PCBs

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, nous avons pu creer deux PCBs, c'est à dire la partie micro et haut parleur. Poiščite dopisnika spletnega mesta au tutoriel Altium qui peut certainement vous aider!

5. korak: Partie Numérique

Partie Numérique
Partie Numérique

Après avoir imprimer v primerjavi s PCB -ji, ki vam bo omogočil enfinitarno razvejanost le -tega z a 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é, 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.

O uporabi Qsys et quartus pour Brancher le HPS avec les différents sestavin. Ko uporabljate notammente IP SPI za sporočilo avec le dac et une IP UART za comniquer avec la carte wifi.

6. korak: Le Code

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

Pri uporabi se kode za izračun kalkulatorja la fft:

// Création de la configuration et des puffers 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));

za (j = 0; j <NFFT; j ++) {Vrednost = *h2p_lw_adc_addr; // recupère la valeur provenant du pcb du microin [j].r = Vrednost-2000,0; // ob upokojitvi l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // se udeležim 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 entre 0 et 9 tmp_log = 20*(log (abs (ven [t].r/1000.0)))*9;

tmp_log = tmp_log/50; če (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); // na naslovu 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]; }}

Inicializator la carte wifi nalijte z uporabo le code suivant:

send_wifi ("AT+RST / r / n"); // zahteva de reset à la cartesleep (3); // udeležimo se qu'elle resetsend_wifi ("AT+CWMODE = 3 / n / r"); // izberite način de la cartesend_wifi ("AT+CWJAP = \" wifiNom / ", \" MotDePasse / "\ r / n"); // on lui demande de se connecter au wifisleep (15); // ob obisku 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); // obiskujte la connexionsend_wifi ("AT+CIPMODE = 1 / r / n"); // on se met en mode envoie en continueleep (3); send_wifi ("AT+CIPSEND / r / n"); // na začetku prenosa

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

Koda storitve:

affichage de la fft:

int i, j, vrednost = 0; sistem ("čist");

for (i = 0; i <41; i ++) {if (i <40) {for (j = 0; j <BUFSIZE; j ++) {if (tabela [j]*4> (40 - i)) {if (tabela [j]*4> 35) printf (RDEČA "|" RESET); else if (tabela [j]*4> 28) printf (L_RED "|" RESET); else if (tabela [j]*4> 21) printf (YEL "|" RESET); else if (tabela [j]*4> 14) printf (L_YEL "|" RESET); sicer, če (tabela [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"); /*za (j = 0; j <(BUFSIZE/2); j ++)

Priporočena: