İçindekiler:

Otomatik Ayar: 7 Adım
Otomatik Ayar: 7 Adım

Video: Otomatik Ayar: 7 Adım

Video: Otomatik Ayar: 7 Adım
Video: 5 Dakikada Otomatik Vites Araba Nasıl Kullanılır? | 5 Dakikada Otomatik Araba Kullanmayı Öğrenelim 2024, Kasım
Anonim
otomatik ayar
otomatik ayar

Otomatik Ayarlama

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 ve EISE4 (4ème année du cycle in électronique informatique systèmes embarqués).

Notre projesi, PC'nin yanı sıra FFT'nin yanı sıra mikro, üst düzey bir bilgisayar için de geçerlidir. Il sera olası de- ğiştirici le son ses comme le hacmi ve créer un écho.

C'est parti les açıklamaları dökün !!

Adım 1: Composants Utilisés

  • Kart DEO-Nano-SoC
  • Pil 2 çıkışı à 5V2A
  • Mikro
  • Haut Parleur 8 Ohm
  • Düzenleyici: MAX660
  • Yakalayıcı IR: GP2Y0E02A
  • Ampli Ses: LM386N-1/NOPB
  • DAC: MCP4821-E/P
  • diyot: 1N4148
  • Transistör: LND150N3-G / N-FET
  • 2 AOP: TL081C
  • Dirençler
  • kondensatörler
  • Wi-Fi: ESP8266EX
  • 4 anahtar
  • 3 Led de couleur

2. Adım: Mimarlık

Mimari
Mimari

Sesli ci-dessus notre şema bloğu temsili l'mimari de notre projet Autotune.

Comme vous pouvez le voir, notre projet va pouvoir capter un son à l'aide du micro don le sinyal analog capté sera converti en un sinyal numérique don l'ADC est entégré dans la carte FPGA. En iyi sinyal sera modifié selon nos effets choisis à l'aide d'un capteur de proximité et des anahtarları. Enfin, le sinyal modifié depuis la carte sera reconverti en un sinyal analoğu ve sera iletmek à travers le haut parleur.

Adım 3: Parti Analogu

parti analoğu
parti analoğu
parti analoğu
parti analoğu
Parti Analogu
Parti Analogu

Notre party analogie est composée de 2 devreleri:

Birincil devre, parti mikro, küçük sera dalları ve CAN de la carte FPGA, oluşturma ve kazanç ve filtre geçişlerini önleme sinyali.

Un-deuxieme devresi tekrar tekrar partie özel salon, qui sera dalı à la carte FPGA, composé du DAC, d'un diviseur de tansiyon et d'un amplificateur audio.

Daha fazla bilgi için bkz. -5V.

Adım 4: Gösterim Des PCB'leri

Gösterim Tasarımları PCB'leri
Gösterim Tasarımları PCB'leri
Gösterim Tasarımları PCB'leri
Gösterim Tasarımları PCB'leri
Gösterim Tasarımları PCB'leri
Gösterim Tasarımları PCB'leri

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

A l'aide du logiciel Alitum, nous avons pu creer deux PCB'ler, en kötü partiye mikro et haut parleur. Sesli site muhabiri veya tutoriel Altium qui peut kesinlik vous aider !

Adım 5: Partie Numerique

Parti Sayısı
Parti Sayısı

PCB'ler ve FPGA'dan daha fazla kaçın!

Özel numaralar, nous avons créer un code C qui en est séparé en deux en utilisant un thread'i dökün. D'un cote, récupère le sinyali üzerinde le modifie ve l'envoie vers le DAC en spi'de. D'un deuxième côté, envoie le résultat par wifi hesabında la fft et. Partinin prömiyeri için ayrılma izni.

Kullanımda Qsys et quartus dallandırıcı le HPS avec les différents komposantları dökün. Notamment une IP SPI'yi kullanırken, IP UART'ı, avec la carte wifi ile iletişim kurun.

Adım 6: Le Kodu

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

Se kodunu kullanırken hesaplayıcıyı la fft dökün:

// Yapılandırma de la konfigürasyon ve des arabellekleri 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));

for(j = 0; j < NFFT; j++){Değer = *h2p_lw_adc_addr; //recupère la valeur provenant du pcb du microin[j].r = Değer-2000.0; //emeklilik üzerine l'offset de cette valeurfor(i = 0; i < 2100; i++) {} //un temps bien précis pour avoir une fréquence d'échantillonnage connue}

// verss outkiss_fft(config, in, out);bzero(C_val, 110); // envoyer par wififor(t=0;t< (NFFT/4);t++) { //sınırlayıcıyı bir sınırlayıcıya boşaltın. fft à des valeurs entre 0 ve 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); // envoi le buffer par wifi üzerinde

işlev wifir gönder:

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

Başlatıcı la carte wifi'yi uygun kullanım koduna dökün:

send_wifi("AT+RST\r\n"); //kart uykuda sıfırlama talebi(3); // qu'elle resetsend_wifi("AT+CWMODE=3\n\r"); // cartesend_wifi seçim modu("AT+CWJAP=\"wifiNom\", \"MotDePasse\"\r\n"); //wifisleep(15); //katılıyor qu'elle se connectesend_wifi("AT+CIPSTART=\"UDP\", \"192.168.43.110\", 32003\r\n"); //Uykudan bağımsız olarak, isteğe bağlı bir bağlantıda, en üst düzey sunucuda(3); //connexionsend_wifi("AT+CIPMODE=1\r\n"); // yüz yüze görüşme modunda envoie en sürekli uyku(3);send_wifi("AT+CIPSEND\r\n"); // iletimin başlangıcında

işlev wifi gönder:

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

Sunucu kodu:

afficage de la fft:

int i, j, Değer=0; sistem ("temizle");

for(i =0; i < 41; i++) { if(i < 40) { for(j = 0; j < BUFSIZE; j++) { if(table[j]*4 > (40 - i)) { if (tablo[j]*4 > 35) printf(KIRMIZI "|" SIFIRLAMA); else if(table[j]*4 > 28) printf(L_RED "|" RESET); else if(table[j]*4 > 21) printf(YEL "|" RESET); else if(table[j]*4 > 14) printf(L_YEL "|" RESET); else if(table[j]*4 > 7) printf(L_GRN "|" RESET); else printf(GRN "|" RESET); } başka printf(" "); } printf("\n"); } else { printf("0Hz 2.5Hz 5Hz 7.5kHz 10kHz\n"); /*for(j = 0; j < (BUFSIZE/2); j++)

Önerilen: