สารบัญ:

ออโต้จูน: 7 ขั้นตอน
ออโต้จูน: 7 ขั้นตอน

วีดีโอ: ออโต้จูน: 7 ขั้นตอน

วีดีโอ: ออโต้จูน: 7 ขั้นตอน
วีดีโอ: ออโต้จูนคืออะไร? สอนใช้ Auto-Tune | BADDAY 2024, พฤศจิกายน
Anonim
ออโต้จูน
ออโต้จูน

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

Notre projet ประกอบด้วย à é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 le volume และ créer un écho

C'est parti pour les explications !!

ขั้นตอนที่ 1: Composants Utilisés

  • Carte DEO-นาโน-SoC
  • เอาต์พุตแบตเตอรี่ 2 à 5V2A
  • ไมโคร
  • Haut Parleur 8 โอห์ม
  • ผู้ควบคุม: MAX660
  • แคปเตอร์ IR: GP2Y0E02A
  • เสียงแอมพลิฟายเออร์: LM386N-1/NOPB
  • DAC: MCP4821-E/P
  • ไดโอด: 1N4148
  • ทรานซิเตอร์: LND150N3-G / N-FET
  • 2 AOP: TL081C
  • ความต้านทาน
  • คอนเดนเสท
  • Wifi: ESP8266EX
  • 4 สวิตช์
  • 3 Leds de couleurs

ขั้นตอนที่ 2: สถาปัตยกรรม

สถาปัตยกรรม
สถาปัตยกรรม

Voici ci-dessus notre schéma bloc représentant l'architecture de notre projet ออโต้จูน

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 switchs. สวิตช์ Enfin, le signal modifié depuis la carte sera reconverti en un signal analogique et sera ส่งผ่าน le haut parleur.

ขั้นตอนที่ 3: ปาร์ตี้อะนาล็อก

พรรคอนาล็อก
พรรคอนาล็อก
พรรคอนาล็อก
พรรคอนาล็อก
พรรคอนาล็อก
พรรคอนาล็อก

Notre partie analogie est composée de 2 วงจร:

Un premier circuit qui représentera la partie micro, qui sera branché au CAN de la carte FPGA, ขยายเสียงจากเครื่องขยายเสียงและกรองสัญญาณ

Un deuxieme circuit qui repésentera la partie haut parleur, qui sera branché à la sortie de la carte FPGA, composé du DAC, การแบ่งแยกความตึงเครียด et d'un เครื่องขยายเสียง

Le troisième schéma est celui du régulateur produisant du -5V เทสารเติมแต่งลงในส่วนผสม

ขั้นตอนที่ 4: Impression Des PCBs

Impression Des PCBs
Impression Des PCBs
Impression Des PCBs
Impression Des PCBs
Impression Des PCBs
Impression Des PCBs

การบำรุงรักษา, 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 และ haut parleur. Voici le ไซต์ผู้สื่อข่าว au tutoriel Altium qui peut sureement vous aider !

ขั้นตอนที่ 5: พรรคนูเมริเก

พรรคนูเมริเก
พรรคนูเมริเก

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

เท la partie numérique, nous avons créer un code C qui est séparé en deux en utilisant un thread D'un coté บน récupère le signal บน le modifie et บน l'envoie vers le DAC en spi D'un deuxièmecôté, เกี่ยวกับการคำนวณ la fft et on envoie le résultat par wifi. Cette séparation permet d'éviter les ralentissements sur la première พรรค

ในการใช้งาน Qsys et quartus ให้ทำการแยกย่อย HPS avec les différents comosants ในการใช้งาน notamment une IP SPI สำหรับการสื่อสาร avec le dac et une IP UART สำหรับ communiquer avec la carte wifi

ขั้นตอนที่ 6: เลอโค้ด

Voici le lien où nous avons récuperé le code pour faire ลา fft

ในการใช้รหัส se เท calculer la fft:

// Création de la configuration และ des buffers ใน et out เท s (t) et S (f) const kiss_fft_cfg config = kiss_fft_alloc (NFFT, 0, NULL, NULL);

kiss_fft_cpx* ใน = (kiss_fft_cpx*)malloc(NFFT*sizeof(kiss_fft_cpx));kiss_fft_cpx* out = (kiss_fft_cpx*)malloc(NFFT*sizeof(kiss_fft_cpx));

สำหรับ (j = 0; j < NFFT; j++){Value = *h2p_lw_adc_addr; //recupère la valeur provenant du pcb du microin[j].r = ค่า-2000.0; // เมื่อเกษียณอายุ l'offset de cette valeurfor (i = 0; i < 2100; i++) {} // เข้าร่วมงานชั่วคราว bien précis pour avoir une fréquence d'échantillonnage connue}

// Calcul de la FFT depuis เทียบกับ outkiss_fft(config, in, out);bzero(C_val, 110); // เรียกคืน à ศูนย์ le tableau qui nous sert de buffer que l'on va envoyer par wififor (t=0;t< (NFFT/4);t++) {// เทตัวจำกัด la taille du บัฟเฟอร์บน limite la sortie de la fft à des valeurs entre 0 et 9 tmp_log=20*(log(abs(out[t].r/1000.0)))*9;

tmp_log=tmp_log/50; ถ้า(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

fonction ส่ง wifir:

เป็นโมฆะ send_wifir (ถ่าน * 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]; } }

เท initialiser la carte wifi บน use le code suivant:

send_wifi("AT+RST\r\n"); //demande de รีเซ็ต à la cartesleep(3); //เข้าร่วม qu'elle resetsend_wifi("AT+CWMODE=3\n\r"); //choisit le mode de la cartesend_wifi("AT+CWJAP=\"wifiNom\", \"MotDePasse\"\r\n"); // บน lui demande de se ตัวเชื่อมต่อ au wifisleep(15); // ในการเข้าร่วม qu'elle se connectesend_wifi("AT+CIPSTART=\"UDP\", \"192.168.43.110\", 32003\r\n"); //บน lui demande de se connecter en udp avec le serveur ouvert sur un autre ordinateursleep(3); //เข้าร่วม la connexionsend_wifi("AT+CIPMODE=1\r\n"); //เมื่อพบ en โหมด envoie en Continueleep(3);send_wifi("AT+CIPSEND\r\n"); //เมื่อเริ่มต้น la Transmission

fonction ส่ง wifi:

เป็นโมฆะ send_wifi (ถ่าน * com_AT) { int num, z;for (num = 0; num < (int)strlen (com_AT); num++) { *(h2p_lw_rs232_addr) = com_AT [num]; สำหรับ(z=0;z<2500000;z++) {} } }

รหัสดูเซิร์ฟเวอร์:

affichage เดอลา fft:

int i, j, ค่า=0; ระบบ("ชัดเจน");

for(i =0; i <41; i++) { if(i <40) { for(j = 0; j < BUFSIZE; j++) { if(table[j]*4 > (40 - i)) { if (ตาราง[j]*4 > 35) printf(RED "|" RESET); อื่น if(table[j]*4 > 28) printf(L_RED "|" RESET); อื่น if(table[j]*4 > 21) printf(YEL "|" RESET); อื่น if(table[j]*4 > 14) printf(L_YEL "|" RESET); อื่น if(table[j]*4 > 7) printf(L_GRN "|" RESET); อื่น printf(GRN "|" RESET); } อื่น ๆ printf(" "); } printf("\n"); } อื่น ๆ { printf("0Hz 2.5Hz 5Hz 7.5kHz 10kHz\n"); /*for(j = 0; j < (BUFSIZE/2); j++)

แนะนำ: