Sadržaj:
- Korak 1: Sastavni elementi Utilisés
- Korak 2: Arhitektura
- Korak 3: Partie Analogique
- Korak 4: Impresija na PCB -ovima
- Korak 5: Partie Numérique
- Korak 6: Le Code
Video: Automatsko podešavanje: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
Bienvenue dans notre projet Autotune
Notre équipe va vous présenter la réalisation de ce projet. Notre équipe est coméee of 3 élèves ingénieurs of Polytech Sorbonne and EISE4 (4ème année du cycle ingénieur en électronique informatique systèmes embarqués).
Notre projet se sastoji od émettre un son capter par un micro, emit par un haut parleur et afficher la FFT sur un écran PC. Moguće je izmijeniti zvučni zapis za jačinu zvuka i crveni zvuk.
C'est parti pour les explications !!
Korak 1: Sastavni elementi Utilisés
- Karta DEO-Nano-SoC
- Izlaz baterije 2 à 5V2A
- Micro
- Haut Parleur 8 Ohm
- Regulator: MAX660
- Kapetarski IR: GP2Y0E02A
- Ampli Audio: LM386N-1/NOPB
- DAC: MCP4821-E/P
- Dioda: 1N4148
- Transitor: LND150N3-G / N-FET
- 2 AOP: TL081C
- Otpori
- Kondenzatori
- WiFi: ESP8266EX
- 4 prekidača
- 3 Led de couleurs
Korak 2: Arhitektura
Voici ci-dessus notre schéma bloc represesant l'architecture de notre projet Autotune.
Comme vous pouvez le voir, notre projet your pouvoir capter un son à a l'aide du micro dont le signal analogique capté sera converti en un numérique signal dont l'ADC est intégré la carte FPGA. Puis le signal sera modifyé selon no effets choisis à l'aide d'un capteur de proximité et des switchs. Enfin, le signal modifyé depuis la carte sera reconverti en un signal analogique and sera transmise à travers le haut parleur.
Korak 3: Partie Analogique
Notre partie analogie est composee de 2 circuit:
Un premier circuit 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 aprios avoir recuperer signal.
Un deuxieme circuit qui repésentera la partie haut parleur, qui sera branché à la sorte de la carte FPGA, composé du DAC, d'un dividee de tension et d'un amplificateur audio.
Le troisiema shema est celui du régulateur produisant du -5V pour alimenter tous les composants.
Korak 4: Impresija na PCB -ovima
Maintenant, nous allons crér no PCB a de imprimer et de les relier!
A l'aide du logiciel Alitum, nous avons pu creer deux PCBs, c'est à dire la partie micro et haut parleur. Molimo vas dopisnik web stranice au tutoriel Altium qui peut certainement vous aider!
Korak 5: Partie Numérique
Dozvolite imprimer za PCB -ove, koji će vam omogućiti neograničeni graničnik sa a 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 recupère le signal on le modifie et on l'envoie vers le DAC en spi. D'un deuxième côté, on Calcule la fft et onvoie le resultat par wifi. Cette séparation permet d'éviter les ralentissements sur la première partie.
Kada koristite Qsys et quartus za razgranavanje HPS -a sa različitim komponentama. Kada koristite oznaku IP SPI za komunikaciju putem avec le dac i ne IP UART za komunikaciju avec la carte wifi.
Korak 6: Le Code
Voici le lien o nous avons récuperé le code for faire la fft.
Kada koristite kod za kalkulator laft:
// Kreiranje de la konfiguracije i međuspremnika u izlazu s (t) i 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));
za (j = 0; j <NFFT; j ++) {Vrijednost = *h2p_lw_adc_addr; // recupère la valeur provenant du pcb du microin [j].r = Vrijednost-2000.0; // u penziji l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // pohađati teen 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 vavovorer par wififor (t = 0; t <(NFFT/4); t ++) {// sipajte limiter u rep du duffer na limite la sortie de la fft à des valeurs entre 0 et 9 tmp_log = 20*(log (abs (izlazi [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); // na adresi le buffer par wifi
fonction send wifir:
void send_wifir (char* com_AT) {int broj, z; za (z = 0; z <22000000; z ++) {} za (broj = 0; broj <(int) strlen (com_AT); broj ++) { *(h2p_lw_rs232_addr) = com_AT [num]; }}
Sipajte inicijalizator la carte wifi na korištenje koda suivant:
send_wifi ("AT+RST / r / n"); // zahtijevaju resetiranje a la cartesleep (3); // prisustvujemo qu'elle resetsend_wifi ("AT+CWMODE = 3 / n / r"); // bira način rada la cartesend_wifi ("AT+CWJAP = \" wifiNom / ", \" MotDePasse / "\ r / n"); // na zahtjev da se povežete na wifisleep (15); // na prisustvu 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); // prisustvujemo la connexionsend_wifi ("AT+CIPMODE = 1 / r / n"); // on se met en en mode envoie en continueleep (3); send_wifi ("AT+CIPSEND / r / n"); // na početku prijenosa
fonction send 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]; za (z = 0; z <2500000; z ++) {}}}
Servisni kod:
affichage de la fft:
int i, j, Vrijednost = 0; sistem ("jasno");
za (i = 0; i <41; i ++) {if (i <40) {za (j = 0; j <BUFSIZE; j ++) {if (tabela [j]*4> (40 - i)) {ako (tabela [j]*4> 35) printf (CRVENO "|" RESET); else if (tabela [j]*4> 28) printf (L_RED "|" RESET); else if (tabela [j]*4> 21) printf (YEL "|" RESET); else if (tabela [j]*4> 14) printf (L_YEL "|" RESET); else if (tabela [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"); /*za (j = 0; j <(BUFSIZE/2); j ++)
Preporučuje se:
Nema mokraće sada, uređaj za podešavanje ponašanja kućnih ljubimaca koji sprečava mačke da pišu u vašem domu: 4 koraka
Nema pišaka sada, uređaj za podešavanje ponašanja kućnih ljubimaca koji sprečava mačke da pišaju po vašem domu: toliko mi je smetala moja maca da voli pišati po mom krevetu, provjerio sam sve što joj je potrebno, a odveo sam je i veterinaru. Nakon što riješim sve što mogu misliti i poslušam doktorovu riječ, shvaćam da se samo ponaša loše. Tako da
Sat, LCD ekran, infracrveno podešavanje: 6 koraka
Sat, LCD ekran, infracrveno podešavanje: Izgradite sat u realnom vremenu koji održava aktivirano vreme u roku od nekoliko minuta godišnje. Kôd i komponente lako se mogu prenamijeniti u druge projekte. Ovaj projekt zahtijeva minimalnu količinu ožičenja i bez lemljenja. Čuvar vremena je DS3231 pravi ti
Podešavanje Blynk: 5 koraka
Postavljanje Blynk-a: U ovom vodiču ćete naučiti kako postaviti Arduino ploču s Blynkom i učiniti ga tako da kada pritisnete gumb u Blynku zasvijetli LED dioda (ovo osobno predlažem jer esp32 ima ugrađen Wi-Fi i Bluetooth u, što ga čini dobrim za mene
Technics SL-1200/1210 Zamjena i podešavanje klizača visine tona: 10 koraka
Technics SL-1200/1210 Zamjena i podešavanje klizača nagiba: Dakle, klizač za nagib se osjeća kao da je pun pijeska? Vreme je da se to popravi. Ovo uputstvo će pokazati kako zamijeniti dotrajali klizač na Technics SL-1200/1210 gramofonu. Pokazat će i kako prilagoditi vrijednost tona od +6% ako se pomaknula ili
Automatsko podešavanje (besplatno!): 4 koraka
Kako napraviti automatsko podešavanje (besplatno!): Pomoću garažnog pojasa naučite kako lako stvoriti efekat automatskog podešavanja koji toliko čujete. ** UREDI ** Link do primjera: http://limelinx.com/files/e7b32e25dda5c5a22ab1bfc8c0eb3acd