Tartalomjegyzék:
- 1. lépés: Komponensek hasznosítása
- 2. lépés: Építészet
- 3. lépés: Partie Analogique
- 4. lépés: A PCB -k megjelenítése
- 5. lépés: Partie Numérique
- 6. lépés: Le Code
Videó: Automatikus hangolás: 7 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
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).
A Notre Projet tartalmaz egy mikrofont és egy mikrokapcsoló készüléket, egy párosítást és egy hauter parleur et afficher la FFT sur unive PC -t. Lehetőség van a módosító le son audio comme le volume et créer un écho.
C'est parti pour les explications !!
1. lépés: Komponensek hasznosítása
- Carte DEO-Nano-SoC
- Akkumulátor 2 kimenet à 5V2A
- Micro
- Haut Parleur 8 Ohm
- Szabályozó: MAX660
- Capteur IR: GP2Y0E02A
- Ampli audió: LM386N-1/NOPB
- DAC: MCP4821-E/P
- Dióda: 1N4148
- Átmenő: LND150N3-G / N-FET
- 2 AOP: TL081C
- Ellenállások
- Kondenzátorok
- Wifi: ESP8266EX
- 4 kapcsoló
- 3 Leds de couleurs
2. lépés: Építészet
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 numberé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.
3. lépés: Partie Analogique
Notre partie analogie est computese de 2 áramkörök:
Az elsődleges áramkör a mikro, a széria ága vagy a CAN de la carte FPGA, a kompozíciós erősítés és a szűrés passif après avoir récupérer le signal.
A deuxieme circuit for qui repésentera la partie haut parleur, qui sera branchà à la sortie de la carte FPGA, composite du DAC, d'un diviseur defesz et d'un amplificateur audio.
Le troisième schéma est celui du régulateur produisant du -5V pour alimenter tous les composants.
4. lépés: A PCB -k megjelenítése
Karbantartás, 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 PCB, c'est à dire la partie micro et haut parleur. A webhely tudósítója vagy oktatója Altium qui peut kindement vous aider!
5. lépés: Partie Numérique
Après avoir imprimer vos PCBs, vous pouvez enfin brancher le tout à la carte FPGA!
Pour 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 premier partie.
Használja a Qsys et quartus pour brancher le HPS avec les différents kompozánsokat. Használja a notamment une IP SPI kommunikációs szolgáltatását avec le dac et une IP UART kommuniquer avec la carte wifi segítségével.
6. lépés: Le Code
Voici le lien où nous avons récuperé le code pour faire la fft.
Használja a kódot, és töltse be a kalkulátort:
// 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; // nyugdíjba vonuláskor l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // résztvevő un temps bien précis pour avoir une fréquence d’échantillonnage connue}
// FFT depuis kiszámítása 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 (abs (out [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); // envoi le buffer par wifi
fonction send wifir:
void send_wifir (char* com_AT) {int szám, z; for (z = 0; z <22000000; z ++) {} for (num = 0; num <(int) strlen (com_AT); num ++) { *(h2p_lw_rs232_addr) = com_AT [szám]; }}
Töltse le az inicializáló la carte wifit a le kód használatával:
send_wifi ("AT+RST / r / n"); // demande de reset à la cartesleep (3); // részvétel qu'elle resetsend_wifi ("AT+CWMODE = 3 / n / r"); // válassza a cartesend_wifi módot ("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); // részvétel la connectxionsend_wifi ("AT+CIPMODE = 1 / r / n"); // on se met en mode envoie en jatkaa alvást (3); send_wifi ("AT+CIPSEND / r / n"); // az átvitel megkezdésekor
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 [szám]; (z = 0; z <2500000; z ++) {}}}
A kiszolgáló kódja:
affichage de la fft:
int i, j, Érték = 0; rendszer ("tiszta");
for (i = 0; i <41; i ++) {if (i <40) {for (j = 0; j <BUFSIZE; j ++) {if ([j]*4> (40 - i)) {if (táblázat [j]*4> 35) printf (RED "|" RESET); else if (táblázat [j]*4> 28) printf (L_RED "|" RESET); else if (táblázat [j]*4> 21) printf (YEL "|" RESET); else if (táblázat [j]*4> 14) printf (L_YEL "|" RESET); else if (táblázat [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"); /*esetén (j = 0; j <(BUFSIZE/2); j ++)
Ajánlott:
Automatikus kézfertőtlenítő: 8 lépés
Automatikus kézfertőtlenítő: A COVID-19 világjárvány olyan dolog lett, amelyet a nyilvánosság nagyon gyakran hallott 2020 folyamán. Minden polgár, aki hallja a „COVID-19” szót, azonnal a „Veszélyes”, „Halálos”, „Tiszta maradjon” szóra fog gondolni”, És más szavakkal. Ez a COVID-19 is
DIY automatikus kézfertőtlenítő adagoló: 6 lépés
DIY automatikus kézfertőtlenítő adagoló: Ebben a projektben egy automatikus kézfertőtlenítő adagolót építünk. Ez a projekt Arduino -t, ultrahangos érzékelőt, vízpumpát és kézfertőtlenítőt fog használni. Ultrahangos érzékelőt használnak a kezek jelenlétének ellenőrzésére a fertőtlenítő gép kimenete alatt
WiFi automatikus növényadagoló tározóval - beltéri/kültéri művelési beállítás - automatikus vízi növények távoli megfigyeléssel: 21 lépés
WiFi automatikus növényadagoló tározóval - beltéri/kültéri művelési beállítások - Automatikus vízi növények távoli felügyelettel: Ebben az oktatóanyagban bemutatjuk, hogyan kell beállítani egy egyéni beltéri/kültéri növényadagoló rendszert, amely automatikusan öntözi a növényeket, és távolról felügyelhető az Adosia platform használatával
Rotációs hangolás a Pi TV kalapjával: 3 lépés
Rotációs hangolás a Pi TV kalapjával: Ebben az utasításban megmutatom, hogyan hozhat analóg vezérlést a digitális TV-hez egy forgókapcsoló segítségével, hogy csatornát váltson a Raspberry Pi-vel működő szüreti TV-n. A TV HAT tartozék nemrég jelent meg, és szeretem a konvertit
Az automatikus hangolás (ingyenes!): 4 lépés
Hogyan kell csinálni az automatikus hangolást (ingyen!): A garageband segítségével tanulja meg, hogyan hozhatja létre egyszerűen az általad hallott automatikus hangolást. ** EDIT ** Link egy példára: http://limelinx.com/files/e7b32e25dda5c5a22ab1bfc8c0eb3acd