Inhoudsopgave:

Automatisch afstemmen: 7 stappen
Automatisch afstemmen: 7 stappen

Video: Automatisch afstemmen: 7 stappen

Video: Automatisch afstemmen: 7 stappen
Video: Coros Apex 2 Pro im Test : Die bessere Garmin Fenix 7 ? 2024, November
Anonim
Automatisch afstemmen
Automatisch afstemmen

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 (4e année du cycle ingénieur en électronique informatique systèmes embarqués).

Ons project bestaat uit een eerste deel van een micro-, een uit een hoogstaand parleur en een vervolg op de FFT op een pc. Il sera possible de modifier le son audio comme le volume et creer un écho.

C'est parti pour les explications !!

Stap 1: Composants Utilisés

  • Kaart DEO-Nano-SoC
  • Batterij 2 uitgang à 5V2A
  • Micro
  • Haut Parleur 8 Ohm
  • Regelaar: MAX660
  • Capteur IR: GP2Y0E02A
  • Ampli-audio: LM386N-1/NOPB
  • DAC: MCP4821-E/P
  • Diode: 1N4148
  • Doorgang: LND150N3-G / N-FET
  • 2 AOP: TL081C
  • Weerstanden
  • condensateurs
  • Wifi: ESP8266EX
  • 4 schakelaars
  • 3 Leds de couleurs

Stap 2: Architectuur

architectuur
architectuur

Voici ci-dessus notre schéma bloc représentant l'architecture de notre projet Autotune.

Kom eens kijken naar de inhoud van het project dat u kunt gebruiken om een micro-signaal te geven dat u niet kunt zien als een signaal dat u kunt omzetten in een nummer dat niet is geïntegreerd in de kaart van de FPGA. Het signaal kan worden aangepast aan de keuze van de keuze voor de proximité en de schakelaars. Enfin, le signal modifié depuis la carte sera reconverti en un signal analogique et sera transmise à travers le haut parleur.

Stap 3: Partij analoog

Partij analoog
Partij analoog
Partij analoog
Partij analoog
Partij analoog
Partij analoog

Notre partie analogie est composée de 2 circuits:

Een eersteklas circuit met een vertegenwoordiger van de partij micro, een sera branché van CAN de la carte FPGA, een samengestelde versterker van gain en een filter dat passief is voor het recupereren van het signaal.

Een nieuw circuit dat bestaat uit een partij tussen twee partijen, een reeks verschillende takken van de FPGA, een compositie van DAC, een verdeeldheid van spanning en een versterkte audio.

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

Stap 4: Impressie Des PCB's

Impressie van printplaten
Impressie van printplaten
Impressie van printplaten
Impressie van printplaten
Impressie van printplaten
Impressie van printplaten

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

Een l'aide du logiciel Alitum, nous avons pu creer deux PCB's, c'est à dire la partie micro et haut parleur. Voici le site correspondant au tutorial Altium qui peut sureement vous aider !

Stap 5: Partie Numérique

Partie Numérique
Partie Numérique

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

Giet een partij 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é, op calcule la fft et op envoie le résultat par wifi. Cette séparation permet d'éviter les ralentissements sur la première party.

Gebruik Qsys et quartus pour brancher le HPS avec les différents composants. Bij gebruik van notament une IP SPI voor communiquer avec le dac et une IP UART voor communiquer avec la carte wifi.

Stap 6: Le Code

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

Gebruik se code pour calculer la fft:

// Creatie van de configuratie en buffers in en uit voor s (t) en 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++){Waarde = *h2p_lw_adc_addr; //recupère la valeur provenant van pcb du microin[j].r = Waarde-2000.0; //bij pensionering l'offset de cette valeurfor(i = 0; i < 2100; i++) {} //attend un temps bien précis pour avoir une fréquence d'échantillonnage connue}

// Bereken de 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 tussen 0 en 9 tmp_log=20*(log(abs(out[t].r/1000.0)))*9;

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

functie wifir verzenden:

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

Giet initialiser la carte wifi op use le code suivant:

send_wifi("AT+RST\r\n"); //demand de reset à la cartesleep (3); //bijwonen qu'elle resetsend_wifi("AT+CWMODE=3\n\r"); //choisit le mode de la cartesend_wifi("AT+CWJAP=\"wifiNom\", \"MotDePasse\"\r\n"); //op de vraag naar de verbinding met wifisleep (15); //on attend 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 server ouvert sur un autre ordinateursleep(3); //attend la connexionsend_wifi("AT+CIPMODE=1\r\n"); //on se met en mode envoie en continuesleep(3);send_wifi("AT+CIPSEND\r\n"); //op het begin van de uitzending

functie wifi verzenden:

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

Code van de server:

affichage de la fft:

int i, j, Waarde=0; systeem("wissen");

for(i =0; i < 41; i++) { if(i < 40) { for(j = 0; j < BUFSIZE; j++) { if(table[j]*4 > (40 - i)) { if (tabel[j]*4 > 35) printf(ROOD "|" 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"); /*for(j = 0; j < (BUFSIZE/2); j++)

Aanbevolen: