Mục lục:

Autotune: 7 bước
Autotune: 7 bước

Video: Autotune: 7 bước

Video: Autotune: 7 bước
Video: Hướng Dẫn Đóng Tune Như MCK | Cách Dùng Plugin Autotune Access | Antares | Plugin.com.vn 2024, Tháng mười một
Anonim
Autotune
Autotune

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 Embqués).

Notre projet ince à émettre un son capter par un micro, émit par un haut parleur et afficher la FFT sur un écran PC. Il sera could de modifier le son audio com le volume et créer un écho.

C'est Part pour les explication !!

Bước 1: Chế phẩm Utilisés

  • Carte DEO-Nano-SoC
  • Đầu ra Batterie 2 à 5V2A
  • Vi mô
  • Haut Parleur 8 Ohm
  • Régulateur: MAX660
  • Capteur IR: GP2Y0E02A
  • Âm thanh khuếch đại: LM386N-1 / NOPB
  • DAC: MCP4821-E / P
  • Diode: 1N4148
  • Bộ chuyển đổi: LND150N3-G / N-FET
  • 2 AOP: TL081C
  • Résistances
  • Condensateurs
  • Wifi: ESP8266EX
  • 4 công tắc
  • 3 Leds de couleurs

Bước 2: Kiến trúc

Ngành kiến trúc
Ngành kiến trúc

Voici ci-tráng miệng 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 convertti 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 Reverti en un signal analogique et sera transmise à travers le haut parleur.

Bước 3: Partie Analogique

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

Notre partie analogie est composée de 2 mạch:

Un premier mạch 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 preferir récupérer le signal.

Mạch Un deuxieme qui repésentera la partie haut parleur, qui sera branché à la sortie de la carte FPGA, composé du DAC, d'un diviseur de căng et d'un amplificateur âm thanh.

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

Bước 4: Impression Des PCBs

Ấn tượng Des PCBs
Ấn tượng Des PCBs
Ấn tượng Des PCBs
Ấn tượng Des PCBs
Ấn tượng Des PCBs
Ấn tượng Des PCBs

Người bảo trì, nous allons créer nos PCB afin de les printmer et de les Reler!

A l'aide du logiciel Alitum, nous avons pu creer deux PCBs, c'est à dire la partie micro et haut parleur. Phóng viên trang web Voici le au tutoriel Altium qui peut certainement vous aider!

Bước 5: Partie Numérique

Partie Numérique
Partie Numérique

Tháng Tư, Ý tưởng, Vos PCBs, vous pouvez enfin brancher le tout à la carte FPGA!

Pour la partie numérique, nous avons créer un code C qui est séparé en deux en useisant un thread. D'un coté, trên récupère le signal trên le modifie et trên l'envoie vers le DAC en spi. D'un deuxième côté, trên calcule la fft et trên envoie le résultat par wifi. Cette sépilities permet d'éviter les ralentissements sur la première partie.

Sử dụng Qsys et quartus pour brancher le HPS avec les différents composants. Khi sử dụng notamment une IP SPI pour Communiquer avec le dac et une IP UART pour Communiquer avec la carte wifi.

Bước 6: Le Code

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

Khi sử dụng máy tính đổ mã se la fft:

// Création de la configuration et des buffers 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 ++) {Giá trị = * h2p_lw_adc_addr; // recupère la valeur Provenant du pcb du microin [j].r = Value-2000.0; // về hưu l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // tham dự un temps bien précis pour.

// Tính toán de la FFT depuis trong vers outkiss_fft (config, in, out); bzero (C_val, 110); // misst à 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 (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); // trên envoi le buffer par wifi

fonction gửi 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]; }}

Phát wifi khởi tạo la carte bằng cách sử dụng le code suivant:

send_wifi ("AT + RST / r / n"); // demande de reset à la cartesleep (3); // tham dự qu'elle resetsend_wifi ("AT + CWMODE = 3 / n / r"); // choisit le mode de la cartesend_wifi ("AT + CWJAP = \" wifiNom / ", \" MotDePasse / "\ r / n"); // on lui nhu cầu de se connecter au wifisleep (15); // khi tham dự qu'elle se connectesend_wifi ("AT + CIPSTART = \" UDP / ", \" 192.168.43.110 / ", 32003 / r / n"); // On lui nhu cầu de se connecter en udp avec le serveur ouvert sur un autre ordinateursleep (3); // tham dự la Connexionsend_wifi ("AT + CIPMODE = 1 / r / n"); // khi gặp en mode envoie en continueleep (3); send_wifi ("AT + CIPSEND / r / n"); // khi bắt đầu truyền

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

Code du serveur:

affichage de la fft:

int i, j, Giá trị = 0; hệ thống ("rõ ràng");

for (i = 0; i <41; i ++) {if (i <40) {for (j = 0; j <BUFSIZE; j ++) {if (table [j] * 4> (40 - i)) {if (table [j] * 4> 35) printf (RED "|" RESET); 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 "|" ĐẶT LẠI); } else printf (""); } printf ("\ n"); } else {printf ("0Hz 2,5Hz 5Hz 7,5kHz 10kHz / n"); / * cho (j = 0; j <(BUFSIZE / 2); j ++)

Đề xuất: