Mundarija:

Avtomatik sozlash: 7 qadam
Avtomatik sozlash: 7 qadam

Video: Avtomatik sozlash: 7 qadam

Video: Avtomatik sozlash: 7 qadam
Video: Avtomat o'chirgich ulashdagi 7ta xato | bularni bilmasdan avtomat ulamang!! 2024, Noyabr
Anonim
Avtomatik sozlash
Avtomatik sozlash

Avtoto'natish loyihasi yo'q

Notre équipe va vous présenter la réalisation de ce projet. Polytech Sorbonne va EISE4 (4 elektron anjomlar uchun elektron axborot tizimlari embarqués) ni yaratish.

Notre proje compute à émettre un son capter un micro, émit par un haut parleur va afficher la FFT sur un écran PC. Mumkin bo'lgan ovozni o'zgartirish va ovozni o'zgartirish mumkin.

Clicest part pour les explications !!

1 -qadam: Kompozitorlardan foydalanish

  • Karta DEO-Nano-SoC
  • Batareya 2 chiqishi 5V2A
  • Mikro
  • Haut Parleur 8 Ohm
  • Tartibga soluvchi: MAX660
  • Ijrochi kapitali: GP2Y0E02A
  • Ampli audio: LM386N-1/NOPB
  • DAC: MCP4821-E/P
  • Diyot: 1N4148
  • Transitor: LND150N3-G / N-FET
  • 2 ta AOP: TL081C
  • Qarshiliklar
  • Kondensatorlar
  • Wi -Fi: ESP8266EX
  • 4 ta kalit
  • 3 Led de couleurs

2 -qadam: Arxitektura

Arxitektura
Arxitektura

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

Quvvatni kuchaytirish, notre projet va pouvoir capter un son aà làide du micro dont le signal analoge capture sera converti en un signal numérique dont l'ADC est intégré dans la carte FPGA. O'zgartirishlar va signallarni o'zgartirish mumkin emas. Shunday qilib, signalni modifikatsiya qilish, signalni taqqoslash va transmise à travers le haut parleur.

3 -qadam: Analogiya partiyasi

Analogiya partiyasi
Analogiya partiyasi
Analogiya partiyasi
Analogiya partiyasi
Analogiya partiyasi
Analogiya partiyasi

Notre partie analogie by compesee 2 circuits:

Boshlang'ich elektron tarmoqqa ulangan bo'lsa, u holda FPGA CAN de la carte filiallari, shuningdek, signalni kuchaytirish va filtrni uzatish orqali signallarni uzatish mumkin.

O'chirib tashlanmagan bo'lsa, FPGA, DAC va boshqa bo'limlar, shuningdek, kuchlanish va boshqalarning ovozini kuchaytiradi.

-5V uchun kompozitsiyalarni yig'ib oling.

4 -qadam: PCB taassurotlari

PCB taassurotlari
PCB taassurotlari
PCB taassurotlari
PCB taassurotlari
PCB taassurotlari
PCB taassurotlari

Ta'kidlash joizki, tenglikni tenglashtirish uchun hech narsa kerak emas!

A'lo logicel Alitum, PCB -lar, kompyuterlar, kompyuterlar va boshqa mikrofonlar. Voici saytining muxbiri yoki o'qituvchisi Altium qui peut certainement vous aider!

5 -qadam: Partie Numérique

Partiya Numérique
Partiya Numérique

Bu tenglikni tenglashtirish kartalari, shuningdek, FPGA alakart kartochkalari orqali amalga oshiriladi!

Partial numérique, no code avone créer un code C qui est séparé en deux en utilisant un thread. Qachonki, signalni o'chirish va o'zgartirish haqida DAC en spi. Difi deuxième côté, wifi hisobini ochish uchun. Bosh sahifa partiya déviter les ralentissements.

Qsys et quartus dan foydalaning, kompozitsionlar HPS avec les différents. IP -spi -ni ishlatishdan keyin IP -UART -ga Wi -Fi orqali xabar yuboring.

6 -qadam: Le Code

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

Kodni ishlatganda, la fft hisoblagichi quyiladi:

// Konfiguratsiya va buferlarni ajratish s (t) va 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));

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

// Hisob 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 ++) {// limiter la taille du buffer on limite la sortie de la fft à des valeurs 0 va 9 tmp_log = 20*(log (abs (tashqarida [t].r/1000.0)))*9;

tmp_log = tmp_log/50; agar (tmp_log <0) {tmp_log = 0; } agar (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); // Wi -Fi tarmog'ida

wifir yuborish funktsiyasi:

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

Kodni ishlatish uchun la carte Wi -Fi -ni boshlang:

send_wifi ("AT+RST / r / n"); // demande de reset a la cartesleep (3); // ishtirok etish resetsend_wifi ("AT+CWMODE = 3 / n / r"); // rejimni tanlash la cartesend_wifi ("AT+CWJAP = \" wifiNom / ", \" MotDePasse / "\ r / n"); // on lui demande de se connecter au wifisleep (15); // ishtirok etish uchun 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); // ishtirok la connexionsend_wifi ("AT+CIPMODE = 1 / r / n"); // on se met en rejimida envoie davom etmoqda (3); send_wifi ("AT+CIPSEND / r / n"); // uzatishni boshlash haqida

wifi yuborish funktsiyasi:

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

Xizmat kodi:

affichage de la fft:

int i, j, Qiymat = 0; tizim ("aniq");

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

Tavsiya: