Mục lục:
- Bước 1: Chế phẩm Utilisés
- Bước 2: Kiến trúc
- Bước 3: Partie Analogique
- Bước 4: Impression Des PCBs
- Bước 5: Partie Numérique
- Bước 6: Le Code
Video: Autotune: 7 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:35
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
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
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
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
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:
Động cơ bước Điều khiển động cơ bước Không cần vi điều khiển !: 6 bước
Động cơ bước Điều khiển động cơ bước Không cần vi điều khiển !: Trong phần Hướng dẫn nhanh này, chúng tôi sẽ tạo một bộ điều khiển động cơ bước đơn giản bằng cách sử dụng động cơ bước. Dự án này không yêu cầu mạch phức tạp hoặc vi điều khiển. Vì vậy, không cần thêm ado, chúng ta hãy bắt đầu
Động cơ bước được điều khiển Động cơ bước không có vi điều khiển (V2): 9 bước (có hình ảnh)
Động cơ bước được điều khiển bằng động cơ bước Không cần vi điều khiển (V2): Trong một trong những Hướng dẫn trước đây của tôi, tôi đã chỉ cho bạn cách điều khiển động cơ bước bằng cách sử dụng động cơ bước mà không cần vi điều khiển. Đó là một dự án nhanh chóng và thú vị nhưng nó đi kèm với hai vấn đề sẽ được giải quyết trong Có thể hướng dẫn này. Vì vậy, hóm hỉnh
Đầu máy mô hình điều khiển động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Đầu máy mô hình điều khiển động cơ bước | Động cơ bước làm bộ mã hóa quay: Trong một trong những phần Hướng dẫn trước, chúng ta đã học cách sử dụng động cơ bước làm bộ mã hóa quay. Trong dự án này, bây giờ chúng ta sẽ sử dụng bộ mã hóa quay động cơ bước đó để điều khiển đầu máy mô hình bằng vi điều khiển Arduino. Vì vậy, không có fu
Động cơ bước Điều khiển động cơ bước Động cơ bước - Động cơ bước như một bộ mã hóa quay: 11 bước (có hình ảnh)
Động cơ bước Điều khiển động cơ bước Động cơ bước | Động cơ bước như một bộ mã hóa quay: Có một vài động cơ bước nằm xung quanh và muốn làm điều gì đó? Trong Có thể hướng dẫn này, hãy sử dụng động cơ bước làm bộ mã hóa quay để điều khiển vị trí của động cơ bước khác bằng vi điều khiển Arduino. Vì vậy, không cần phải quảng cáo thêm, chúng ta hãy
Cách thực hiện Autotune (miễn phí!): 4 bước
Cách thực hiện Autotune (miễn phí!): Sử dụng garaband, tìm hiểu cách dễ dàng tạo hiệu ứng autotune mà bạn nghe thấy rất nhiều. ** CHỈNH SỬA ** Liên kết đến ví dụ: http://limelinx.com/files/e7b32e25dda5c5a22ab1bfc8c0eb3acd