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 promjena: 2024-01-30 09:37
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 embarqués).
Notre projet consiste à émettre un son capter par un micro, emit par un haut parleur et afficher la FFT sur un écran PC. Il sera possible de modifier le son audio comme le volume et créer un écho.
C'est parti pour les explications !!
Korak 1: Sastavni elementi Utilisés
- Karta DEO-Nano-SoC
- Izlaz baterije 2 à 5V2A
- Mikro
- Visoki Parleur 8 Ohma
- Regulator: MAX660
- Kapteri IR: GP2Y0E02A
- Pojačavač zvuka: 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 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 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. Enfin, le signal modifié depuis la carte sera reconverti en un signal analogique et 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 et d'un filtre passif après avoir récupérer le signal.
Un deuxieme circuit qui repésentera la partie haut parleur, qui sera branché à la sortie de la carte FPGA, composé du DAC, d'un diviseur de tension et d'un amplificateur audio.
Le troisième schéma est celui du régulateur produisant du -5V pour alimenter tous les composants.
Korak 4: Impresija na PCB -ovima
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 à dire la partie micro et haut parleur. Voici le dopisnik au tutoriel Altium qui peut certainement vous aider!
Korak 5: Partie Numérique
Après avoir imprimer u odnosu na PCB -ove, s pouz enfin grananje samo tout à 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é, on calcule la fft et on envoie le résultat par wifi. Cette séparation permet d'éviter les ralentissements sur la première partie.
O upotrebi Qsys et quartus za razgranavanje HPS -a sa različitim komponentama. O korištenju naziva IP SPI za komunikaciju avec le dac et une IP UART za komunikaciju avec la carte wifi.
Korak 6: Le Code
Voici le lien où nous avons récuperé le code pour faire la fft.
Kada koristite kod, sipajte kalkulator naprijed:
// 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));
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 mirovini l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // prisustvujete 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 (izlaz [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 num, z; for (z = 0; z <22000000; z ++) {} for (num = 0; num <(int) strlen (com_AT); num ++) { *(h2p_lw_rs232_addr) = com_AT [num]; }}
Sipajte inicijalizator la carte wifi na korištenje koda suivant:
send_wifi ("AT+RST / r / n"); // zahtijeva de reset à la cartesleep (3); // prisustvujemo qu'elle resetsend_wifi ("AT+CWMODE = 3 / n / r"); // choisit le mode de la cartesend_wifi ("AT+CWJAP = \" wifiNom / ", \" MotDePasse / "\ r / n"); // on lui demande de se connecter au 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 mode envoie en continueleep (3); send_wifi ("AT+CIPSEND / r / n"); // na početku la 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; sustav ("jasno");
za (i = 0; i <41; i ++) {if (i <40) {za (j = 0; j <BUFSIZE; j ++) {if (tablica [j]*4> (40 - i)) {ako (tablica [j]*4> 35) printf (CRVENO "|" RESET); else if (tablica [j]*4> 28) printf (L_RED "|" RESET); else if (tablica [j]*4> 21) printf (YEL "|" RESET); else if (tablica [j]*4> 14) printf (L_YEL "|" RESET); else if (tablica [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čeni:
Nema mokraće sada, uređaj za podešavanje ponašanja kućnih ljubimaca koji sprečava mačke da pišaju po 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škiti u moj krevet, provjerio sam sve što joj treba, a odveo sam je i veterinaru. Nakon što riješim sve što mogu misliti i poslušam liječničku riječ, shvaćam da se samo ponaša loše. Tako da
Sat, LCD zaslon, infracrveno podešavanje: 6 koraka
Sat, LCD zaslon, infracrveno podešavanje: Izgradite sat u stvarnom vremenu koji zadržava aktualno vrijeme unutar 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 Blynka: U ovom ćete vodiču naučiti kako postaviti svoju Arduino ploču s Blynkom i učiniti je da kad pritisnete gumb u Blynku zasvijetli LED (osobno to predlažem jer esp32 ima ugrađen Wi-Fi i Bluetooth- in, što mi čini dobro
Technics SL-1200/1210 Zamjena i podešavanje klizača visine koraka: 10 koraka
Technics SL-1200/1210 Zamjena i podešavanje klizača nagiba: Dakle, vaš klizač za nagib osjeća se kao da je pun pijeska? Vrijeme je da se to popravi. Ova instrukcija će pokazati kako zamijeniti dotrajali klizač na gramofonu Technics SL-1200/1210. Također će pokazati kako prilagoditi vrijednost +6% visine nagiba ako se pomaknula ili
Automatsko podešavanje (besplatno!): 4 koraka
Kako napraviti automatsko podešavanje (besplatno!): Pomoću garažnog pojasa naučite kako jednostavno stvoriti efekt automatskog podešavanja koji toliko čujete. ** UREDI ** Link do primjera: http://limelinx.com/files/e7b32e25dda5c5a22ab1bfc8c0eb3acd