INHOUDSOPGAWE:
- Stap 1: Composants Utilisés
- Stap 2: Argitektuur
- Stap 3: Partie Analogique
- Stap 4: Impression Des PCB's
- Stap 5: Partie Numérique
- Stap 6: Le Code
Video: Autotune: 7 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
Bienvenue dans notre projet Autotune
Ons bied 'n herontwikkeling van die herontwikkeling aan. 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).
Ons kan 'n volledige e -posadres vir 'n mikro -rekenaar of vir 'n rekenaar op ons rekenaar bied. Dit is moontlik om die wysiger van die klank en volume te verander.
C'est parti pour les explications !!
Stap 1: Composants Utilisés
- Kaart DEO-Nano-SoC
- Uitgang 2 battery à 5V2A
- Mikro
- Haut Parleur 8 Ohm
- Reguleerder: MAX660
- Kapteur IR: GP2Y0E02A
- Ampli Audio: LM386N-1/NOPB
- DAC: MCP4821-E/P
- Diode: 1N4148
- Sender: LND150N3-G / N-FET
- 2 AOP: TL081C
- Weerstands
- Kondensateurs
- Wifi: ESP8266EX
- 4 skakelaars
- 3 Leds de couleurs
Stap 2: Argitektuur
Voici ci-dessus notre schéma bloc représentant l'architecture de notre projet Autotune.
U kan ook hierdie funksie gebruik, maar u kan ook nie 'n sein op 'n ander manier as 'n ander analoog van die FPGA doen nie. Ons kan die sein verander deur selon effets choises à l'aide d'un capteur de proximité et des switchs. Ons kan die sein verander na die herontwikkeling van 'n sein en die analise van die sein en die versending daarvan na die huidige parleur.
Stap 3: Partie Analogique
Notre partie analogie est composée of 2 circuits:
'N Eerste kring met 'n partytjie -mikro, 'n filiaal van FPGA, 'n vermenigvuldiging van 'n wins en 'n filtreer wat passief is na 'n seinreël.
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 spanning et d'un amplificateur audio.
Le troisième schéma est celui du régulateur produisant du -5V pour alimenter tous les composants.
Stap 4: Impression Des PCB's
Onderhoud, 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 site correspondant au tutoriel Altium qui peut sureement vous aider!
Stap 5: Partie Numérique
Après avoir imprimer met PCB's, en u kan ook FPGA la carte gebruik!
Gee la partie numérique, nous avons créer un code C qui est séparé en deux en utilizing un thread. D'un coté, on récupère le signal on le modifie et on l'envoie vers le DAC en spi. Daar is 'n deuxième côté, met die berekening van die fft et en envoie le résultat par wifi. Cette séparation permet d'éviter les ralentissements sur la première partie.
Gebruik Qsys et quartus pour brancher vir die HPS avec les différents komponiste. Gebruik die kennisgewing van 'n IP SPI vir 'n kommunikeerder of 'n IP -adres vir 'n gemeenskaplike wifi.
Stap 6: Le Code
Voici le lien où nous avons récuperé le code pour faire la fft.
Gebruik die kode vir die sakrekenaar:
// Création de la configuration en 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));
vir (j = 0; j <NFFT; j ++) {Waarde = *h2p_lw_adc_addr; // recupère la valeur provenant du pcb du microin [j].r = Waarde-2000.0; // op pensioen l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // bywoon un temps bien précis pour avoir une fréquence d'échantillonnage connue}
// Bereken die FFT -weergawe 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; as (tmp_log <0) {tmp_log = 0; } as (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); // op buffer van wifi
funksie stuur wifir:
void send_wifir (char* com_AT) {int num, z; vir (z = 0; z <22000000; z ++) {} vir (num = 0; num <(int) strlen (com_AT); num ++) { *(h2p_lw_rs232_addr) = com_AT [num]; }}
Skakel initialiser la carte wifi in met behulp van die volgende kode:
send_wifi ("AT+RST / r / n"); // demande de reset à la cartesleep (3); // woon qu'elle resetsend_wifi by ("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); // op bywoning qu'elle se connectesend_wifi ("AT+CIPSTART = \" UDP / ", \" 192.168.43.110 / ", 32003 / r / n"); // On lui demande de se connectecter en udp avec le serveur ouvert sur un autre ordinateursleep (3); // woon die connexionsend_wifi by ("AT+CIPMODE = 1 / r / n"); // on se met en mode envoie en continueleep (3); send_wifi ("AT+CIPSEND / r / n"); // begin met oordrag
funksie stuur 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]; vir (z = 0; z <2500000; z ++) {}}}
Kode vir diens:
affichage de la fft:
int i, j, Waarde = 0; stelsel ("duidelik");
vir (i = 0; i <41; i ++) {if (i <40) {vir (j = 0; j <BUFSIZE; j ++) {if (tabel [j]*4> (40 - i)) {if (tabel [j]*4> 35) printf (ROOI "|" RESET); anders as (tabel [j]*4> 28) printf (L_RED "|" RESET); anders as (tabel [j]*4> 21) printf (YEL "|" RESET); anders as (tabel [j]*4> 14) printf (L_YEL "|" RESET); anders as (tabel [j]*4> 7) printf (L_GRN "|" RESET); anders printf (GRN "|" RESET); } anders printf (""); } printf ("\ n"); } anders {printf ("0Hz 2.5Hz 5Hz 7.5kHz 10kHz / n"); /*vir (j = 0; j <(BUFSIZE/2); j ++)
Aanbeveel:
Spelontwerp in vyf stappe: 5 stappe
Spelontwerp in fliek in 5 stappe: Flick is 'n baie eenvoudige manier om 'n speletjie te maak, veral iets soos 'n legkaart, visuele roman of avontuurlike spel
Gesigsopsporing op Raspberry Pi 4B in 3 stappe: 3 stappe
Gesigsopsporing op Raspberry Pi 4B in 3 stappe: in hierdie instruksies gaan ons gesigsopsporing uitvoer op Raspberry Pi 4 met Shunya O/S met behulp van die Shunyaface-biblioteek. Shunyaface is 'n biblioteek vir gesigherkenning/opsporing. Die projek het ten doel om die vinnigste opsporing en herkenningssnelheid te bereik met
DIY Vanity Mirror in eenvoudige stappe (met LED -strookligte): 4 stappe
DIY Vanity Mirror in eenvoudige stappe (met behulp van LED Strip Lights): In hierdie pos het ek 'n DIY Vanity Mirror gemaak met behulp van die LED strips. Dit is regtig cool, en u moet dit ook probeer
Arduino Halloween Edition - Zombies pop -out skerm (stappe met foto's): 6 stappe
Arduino Halloween Edition - Zombies pop -out skerm (stappe met foto's): wil u u vriende skrik en 'n skreeu geraas maak tydens Halloween? Of wil u net 'n goeie grap maak? Hierdie pop-up skerm van Zombies kan dit doen! In hierdie instruksies sal ek u leer hoe u maklik Zombies kan spring deur Arduino te gebruik. Die HC-SR0
Speel Doom op u iPod in 5 maklike stappe !: 5 stappe
Speel Doom op u iPod in 5 maklike stappe !: 'n Stap-vir-stap gids oor hoe u Rockbox op u iPod kan dubbellaai om Doom en tientalle ander speletjies te speel. Dit is iets baie maklik om te doen, maar baie mense staan nog steeds verbaas as hulle sien hoe ek op my iPod doom speel en deurmekaar raak met die instruksies