Բովանդակություն:
- Քայլ 1: Օգտագործող կոմպոզիտորներ
- Քայլ 2: Archարտարապետություն
- Քայլ 3. Partie Analogique
- Քայլ 4: Impression Des PCB- ներ
- Քայլ 5: Partie Numérique
- Քայլ 6: Le Code
Video: Autotune: 7 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
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 électronicque informatique systèmes embarkés):
Notre projet- ը բաղկացած է մի քանի երեխաներից, որոնք միավորում են միկրոավտոբուսը, թույլ են տալիս օգտագործել և օգտագործել մեր համակարգիչը FFT- ի միջոցով: Il sera հնարավոր de modifier le son audio comme le volume et créer un écho.
C'est parti pour les explications !!
Քայլ 1: Օգտագործող կոմպոզիտորներ
- Carte DEO-Nano-SoC
- Մարտկոցի 2 ելք à 5V2A
- Միկրո
- Haut Parleur 8 Օմ
- Կանոնակարգ ՝ MAX660
- Capteur IR ՝ GP2Y0E02A
- Ampli Audio: LM386N-1/NOPB
- DAC ՝ MCP4821-E/P
- Դիոդ ՝ 1N4148
- Անցում ՝ LND150N3-G / N-FET
- 2 AOP: TL081C
- Դիմադրություններ
- Կոնդենսատորներ
- Wi -Fi: ESP8266EX
- 4 անջատիչ
- 3 Leds de couleurs
Քայլ 2: Archարտարապետություն
Voici ci-dessus 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 analogical 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. Վերջապես, le signal modifié depuis la carte sera reconverti en un signal analogical and sera transmise à travers le haut parleur.
Քայլ 3. Partie Analogique
Notre partie analogie est composée de 2 սխեմաներ.
Un վարչապետը միացում qui représentera la partie micro, qui sera branché au CAN de la carte FPGA, composé d'un amplificateur de gain and d'un filtre passif après avoir récupérer le signal.
Անջատված միացում, որն ուղղված է մասնակի ընտրության, ինչպես նաև մասնաճյուղի PG la sortie de la carte FPGA, կազմված DAC, լարվածության և լարվածության բարձրացման ձայնի:
Le troisième schéma est celui du régulateur produisant du -5V pour alimenter tous les composants.
Քայլ 4: Impression Des PCB- ներ
Maintenant, 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 à hor part part micro and haut parleur. Voici le կայքի թղթակիցը կամ tutoriel Altium qui peut sureement vous aider!
Քայլ 5: Partie Numérique
Պաշտպանեք ձեր PCB- ները, ինչպես նաև ձեր մասնաճյուղում `PG la carte FPGA- ով:
Pour la partie numérique, nous avons créer un code C qui est séparé en deux en utilisant un thread: D'un coté, on récupère le signal on le modifie et on l'envoie vers le DAC en spi. D'un deuxième côté, la fft et calcule on envoie le résultat par wifi- ի վրա: Cette séparation permet d'éviter les ralentissements sur la première partie.
Օգտագործել Qsys et quartus pour brancher le HPS avec les différents կոմպոզիցիաներ: On use notamment une IP SPI pour communiquer avec le dac et une IP UART pour communiquer avec la carte wifi.
Քայլ 6: Le Code
Voici le lien où nous avons récuperé le code pour faire la fft.
Օգտագործելով 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));
համար (j = 0; j <NFFT; j ++) {արժեքը = *h2p_lw_adc_addr; // recupère la valeur provenant du pcb du microin [j].r = Արժեք -2000.0; // on pension l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // մասնակցել un temps bien précis pour avoir une fréquence d’échantillonnage connue}
// Calcul 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 ++) {// 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; եթե (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); // on Envoi le buffer par wifi
fonction ուղարկել wifir:
անվավեր send_wifir (char* com_AT) {int num, z; համար (z = 0; z <22000000; z ++) {} for (num = 0; num <(int) strlen (com_AT); num ++) { *(h2p_lw_rs232_addr) = com_AT [num]; }}
Լցնել նախաստորագրող la carte wifi կոդն օգտագործելու համար.
send_wifi ("AT+RST / r / n"); // demande de reset à la cartesleep (3); // հաճախել qu'elle resetsend_wifi ("AT+CWMODE = 3 / n / r"); // ընտրեք ռեժիմը la cartesend_wifi ("AT+CWJAP = \" wifiNom / ", \" MotDePasse / "\ r / n"); // lui demande de se connecter au wifisleep (15); // մասնակցելու qu'elle se 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); // հաճախել la connexionsend_wifi ("AT+CIPMODE = 1 / r / n"); // on se met en mode envoie en շարունակում է քնել (3); send_wifi ("AT+CIPSEND / r / n"); // սկսել փոխանցումը
fonction ուղարկեք wifi:
անվավեր send_wifi (char * 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 ++) {}}}
Duառայության ծածկագիր.
affichage de la fft:
int i, j, Արժեք = 0; համակարգ («հստակ»);
(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); այլապես, եթե (աղյուսակ [j]*4> 28) printf (L_RED "|" Վերականգնել); այլապես, եթե (աղյուսակ [j]*4> 21) printf (YEL "|" RESET); այլապես, եթե (աղյուսակ [j]*4> 14) printf (L_YEL "|" Վերականգնել); այլապես, եթե (աղյուսակ [j]*4> 7) printf (L_GRN "|" Վերականգնել); else printf (GRN "|" Վերականգնել); } else printf (""); } printf ("\ n"); } else {printf ("0Hz 2.5Hz 5Hz 7.5kHz 10kHz / n"); /*համար (j = 0; j <(BUFSIZE/2); j ++)
Խորհուրդ ենք տալիս:
Arduino մեքենայի հետադարձ կայանման ահազանգման համակարգ - Քայլ առ քայլ: 4 քայլ
Arduino մեքենայի հետադարձ կայանման ահազանգման համակարգ | Քայլ առ քայլ. Այս նախագծում ես նախագծելու եմ մի պարզ Arduino մեքենայի հետադարձ կայանման սենսորային միացում ՝ օգտագործելով Arduino UNO և HC-SR04 ուլտրաձայնային տվիչ: Այս Arduino- ի վրա հիմնված Car Reverse ազդանշանային համակարգը կարող է օգտագործվել ինքնավար նավարկության, ռոբոտների ռանգի և այլ տեսականու համար
Քայլ առ քայլ համակարգչային շենք. 9 քայլ
Քայլ առ քայլ համակարգչի կառուցում. Պարագաներ. Սարքավորումներ. Մայրական համակարգիչ CPU coolerPSU (Էներգամատակարարման միավոր) Պահեստավորում (HDD/SSD) RAMGPU (պարտադիր չէ) Գործ CaseTools: Պտուտակահան ESD ապարանջան/matsthermal paste w/aplikator
Երեք բարձրախոս շղթա -- Քայլ առ քայլ ձեռնարկ ՝ 3 քայլ
Երեք բարձրախոս շղթա || Քայլ առ քայլ ձեռնարկ. Բարձրախոսների սխեման ուժեղացնում է շրջակա միջավայրից ստացված աուդիո ազդանշանները MIC- ում և այն ուղարկում է խոսնակին, որտեղից արտադրվում է ուժեղացված ձայնը:
Ձայնային թռիչք Arduino Uno- ի հետ Քայլ առ քայլ (8 քայլ) `8 քայլ
Ձայնային թռիչք Arduino Uno- ի հետ Քայլ առ քայլ (8 քայլ). Ուլտրաձայնային ձայնային փոխարկիչներ L298N Dc կանացի ադապտեր էներգիայի մատակարարում արական dc pin Arduino UNOBreadboard և անալոգային նավահանգիստներ ՝ կոդը փոխարկելու համար (C ++)
Ինչպես անել Autotune (անվճար): 4 քայլ
Ինչպես անել ավտոտուն (անվճար)