Turinys:
- 1 žingsnis: kompozicijų naudojimas
- 2 žingsnis: architektūra
- 3 žingsnis: „Partie Analogique“
- 4 žingsnis: PCB spausdinimas
- 5 žingsnis: Partie Numérique
- 6 žingsnis: „Le Code“
Video: Automatinis derinimas: 7 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
„Bienvenue dans notrerejet Autotune“
Notre équipe va vous présenter la réalisation de ce projet. Notre équipe est composée of 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).
Projektas yra suderinamas su mikrofonu ir sūnaus valdikliu, kuris yra paruoštas ir suderinamas su FFT kompiuteriu. Yra keletas galimų modifikatorių, leidžiančių įgarsinti garso tomą ir garsą.
C'est parti pour les explications !!
1 žingsnis: kompozicijų naudojimas
- Įrašas DEO-Nano-SoC
- Baterijos 2 išėjimas - 5V2A
- Mikro
- Haut Parleur 8 omai
- Reguliatorius: MAX660
- „Capteur IR“: GP2Y0E02A
- „Ampli Audio“: LM386N-1/NOPB
- DAC: MCP4821-E/P
- Diodas: 1N4148
- Perkelėjas: LND150N3-G / N-FET
- 2 AOP: TL081C
- Rezistencijos
- Kondensatoriai
- „Wi -Fi“: ESP8266EX
- 4 jungikliai
- 3 „Leds de couleurs“
2 žingsnis: architektūra
Voici ci-dessus notre schéma bloc representant 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 converti en and 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. Galų gale, le signalo modifikavimas depuis la carte sera reconverti en un signal analogique et sera transmise à travers le haut parleur.
3 žingsnis: „Partie Analogique“
Partijos analogija yra dviejų grandinių kompozicija:
Pirminė grandinė, skirta mikro partijoms, atšakoms ar CAN de la carte FPGA, stiprintuvų stiprinimui ir filtravimui, paso aprėpimui ir pašalinimui.
Unuxieme circuit qui repésentera la partie haut parleur, qui sera branchà à la sortie de la carte FPGA, composite du DAC, d'un diviseur de feszülts and d'un amplificateur audio.
Le troisième schéma est celui du régulateur produisant du -5V pour alimenter tous les composants.
4 žingsnis: PCB spausdinimas
Techninė priežiūra, ištisiniai komentarai, pagaminti iš spausdintinių plokštelių ir reljefo!
A l'aide du logiciel Alitum, nous avons pu creer deux PCB, c'est à dire la partie micro et haut parleur. Svetainės korespondentas ar mokytojas Altium qui peut kindement vous aider!
5 žingsnis: Partie Numérique
Negalima atsispausdinti tik PCB, o tai galima padaryti pagal FPGA pasirinkimą!
Supilkite la partie numérique, nous avons créer ir code C qui est séparé en deux en utilisant un thread. D'un coté, recupère le signal on le modifie et on l'envoie vers le DAC en spi. „D'un deuxième côté“, apskaičiuodama fft ir „envoie le résultat par wifi“. Išskirtinis renginys pasiekia ralentissements sur la premier partie.
Naudojant Qsys ir quartus supilkite šakotoją iš HPS avec les différents kompozitorių. Naudodami notamment une IP SPI, įkelkite komunikatą ir paspauskite, ir gaukite IP UART komunikatą, kuriame yra „wifi“.
6 žingsnis: „Le Code“
Voici le lien où nous avons récuperé le code pour faire la fft.
Naudodami kodą, įpilkite skaičiuoklę:
// 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 ++) {Value = *h2p_lw_adc_addr; // recupère la valeur provenant du pcb du microin [j].r = Value-2000.0; // išeinant į pensiją l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // dalyvauti un temps bien précis pour avoir une fréquence d’échantillonnage connue}
// FFT depuis apskaičiavimas 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 (out [t).r/1000.0)))*9;
tmp_log = tmp_log/50; jei (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 send 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]; }}
Įjunkite pradinį „la carte“belaidį internetą naudodami kodą:
send_wifi („AT+RST / r / n“); // demande de reset à la cartesleep (3); // dalyvauti qu'elle resetsend_wifi ("AT+CWMODE = 3 / n / r"); // pasirenkame „cartesend_wifi“režimą ("AT+CWJAP = \" wifiNom / ", \" MotDePasse / "\ r / n"); // on lui demande de se connecter au wifisleep (15); // on visit 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); // dalyvauti la connectxionsend_wifi ("AT+CIPMODE = 1 / r / n"); // on se met en mode envoie en stillleepleep (3); send_wifi ("AT+CIPSEND / r / n"); // pradedant transliaciją
fonction siųsti 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]; (z = 0; z <2500000; z ++) {}}}
Servo kodas:
affichage de la fft:
int i, j, Reikšmė = 0; sistema („aišku“);
(i = 0; i <41; i ++) {if (i <40) {for (j = 0; j <BUFSIZE; j ++) {if (table [j]*4> (40 - i)) {if (lentelė [j]*4> 35) printf (RED "|" RESET); else if (lentelė [j]*4> 28) printf (L_RED "|" RESET); else if (lentelė [j]*4> 21) printf (YEL "|" RESET); else if (lentelė [j]*4> 14) printf (L_YEL "|" RESET); else if (lentelė [j]*4> 7) printf (L_GRN "|" RESET); else printf (GRN "|" RESET); } else printf (""); } printf ("\ n"); } else {printf ("0Hz 2.5Hz 5Hz 7.5kHz 10kHz / n"); /*(j = 0; j <(BUFSIZE/2); j ++)
Rekomenduojamas:
„HackerBox 0049“: derinimas: 8 žingsniai
„HackerBox 0049“: derinimas: sveikinimai „HackerBox“įsilaužėliams visame pasaulyje! „HackerBox 0049“eksperimentuojame su skaitmeninių mikrovaldiklių sistemų derinimu, konfigūruojame „LOLIN32 ESP-32 WiFi“„Bluetooth“platformą „Arduino IDE“, taikydami „FastLED“animaciją L
„GiggleBot“linijos sekėjo derinimas - išplėstinis: 7 žingsniai
„GiggleBot“linijos stebėtojo derinimas - Išplėstinė: Šioje labai trumpoje instrukcijoje jūs sureguliuosite savo „GiggleBot“, kad būtų laikomasi juodos linijos. Šioje kitoje pamokoje „GiggleBot Line Follower“mes sunkiai kodavome derinimo vertes, kad jos veiktų pagal tą scenarijų. Galbūt norėsite priversti tai elgtis taip
Rotacinis derinimas naudojant „Pi TV HAT“: 3 žingsniai
Rotacinis derinimas naudojant „Pi TV“skrybėlę: Šioje instrukcijoje aš jums parodysiu, kaip į skaitmeninę televiziją perkelti analoginį valdymą, naudojant sukamąjį jungiklį, kad būtų galima pakeisti kanalus „Raspberry Pi“varomame senoviniame televizoriuje. TV HAT priedas buvo išleistas neseniai ir man labai patinka konvertuoti
Pagrindinis „Java“derinimas: 9 žingsniai
Pagrindinis „Java“derinimas: Šiame instrukcijų vadove pateikiamas pagrindinis žingsnis po žingsnio tikrinamas „Java“klaidų tvarkymas. Šiame vadove nesuteikiama pagalba nustatant „Java“programavimo programinę įrangą ir tikimasi, kad šią užduotį jau atlikote anksčiau. Dėl geriausio
Apsaugos sistemos derinimas su „Phidges“ir „Twitter“, kad būtų nuostabu: 8 žingsniai
Apsaugos sistemos derinimas su „Phidges“ir „Twitter“nuostabumui: Aš gyvenu bute, kuris yra prijungtas prie apsaugos sistemos. Nenoriu pirkti namų telefono linijos, o vietos stebėjimo paslaugoms trūksta nuostabumo. Noriu žinoti, ar kas nors ateina į mano butą, kol manęs nėra. Galėčiau naudoti judesio jutiklį, bet