Cov txheej txheem:
- Kauj Ruam 1: Kev Siv Tus Kheej
- Kauj ruam 2: Architecture
- Kauj ruam 3: Partie Analogique
- Kauj Ruam 4: Impression Des PCBs
- Kauj ruam 5: Partie Numérique
- Kauj Ruam 6: Le Code
Video: Autotune: 7 Kauj ruam
2024 Tus sau: John Day | [email protected]. Kawg hloov kho: 2024-01-30 09:29
Bienvenue dans notre projet Autotune
Notre équipe thiab 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 suav nrog émettre un son capter par un micro, émit par un haut parleur et afficher la FFT sur un écran PC. Il sera ua tau ntawm tus hloov pauv nrog tus tub lub suab comme le ntim thiab créer un écho.
C'est parti pour les explication !!
Kauj Ruam 1: Kev Siv Tus Kheej
- Carte DEO-Nano-SoC
- Roj teeb 2 tso zis: 5V2A
- Micro
- Haut Parleur 8 Ohm
- Tus Qauv Zauv: MAX660
- Capteur IR: GP2Y0E02A
- Ampli Suab: LM386N-1/NOPB
- DAC: MCP4821-E/P.
- Diode: 1N4148
- Tus xa tawm: LND150N3-G / N-FET
- 2 AOP: TL081C
- Kev Ruaj Ntseg
- Condensateurs
- Wifi: ESP8266EX
- 4 hloov
- 3 Leds de couleurs
Kauj ruam 2: Architecture
Voici ci-dessus notre schéma bloc représentant l'architecture de notre projet Autotune.
Ua tsaug rau koj li voir, notre projet va pouvoir capter un son à l'aide du micro dont le teeb liab analogique capté sera converti en un teeb liab 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 teeb tsa kev hloov pauv xa tawm la carte sera reconverti en un teeb liab analogique thiab sera transmise à travers le haut parleur.
Kauj ruam 3: Partie Analogique
Notre partie analogie est composée de 2 circuits:
Un premier circuit qui représentera la partie micro, qui sera branché au CAN de la carte FPGA, sib xyaw ua ke ntawm ib qho kev ua kom muaj txiaj ntsig thiab kev ua yeeb yaj kiab passif après avoir récupérer le teeb liab.
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.
Kauj Ruam 4: Impression Des PCBs
Kev saib xyuas tsis tu ncua, tsis muaj kev cuam tshuam rau peb li 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 qhov chaw sib tham au tus pab qhia ntawv Altium qui peut kev lees paub tias koj yog tus pab!
Kauj ruam 5: Partie Numérique
Lub Plaub Hlis avoir imprimer vos PCBs, koj tuaj yeem ua tus brancher nrog tout la la carte FPGA!
Pour la partie numérique, nous avons créer un code C qui est séparé en deux en utilisant un xov. D'un coté, ntawm récupère le teeb liab ntawm kev hloov pauv thiab ntawm l'envoie vers le DAC en spi. D'un deuxième côté, ntawm calcule la fft thiab ntawm envoie le résultat par wifi. Cette séparation permet d'éviter les ralentissements sur la première partie.
Ntawm kev siv Qsys thiab quartus ncuav brancher le HPS avec les différents composers. Ntawm kev siv cov lus ceeb toom tsis yog IP SPI rau kev sib txuas lus avec le dac thiab une IP UART rau kev sib txuas lus avec la carte wifi.
Kauj Ruam 6: Le Code
Voici le lien où nous avons récuperé le code pour faire la fft.
Ntawm kev siv se code rau lub laij lej la fft:
// Création de la configuration et des buffers hauv et tawm ncuav s (t) et S (f) const kiss_fft_cfg teeb tsa = kiss_fft_alloc (NFFT, 0, NULL, NULL);
kiss_fft_cpx*in = (kiss_fft_cpx*) malloc (NFFT*sizeof (kiss_fft_cpx)); kiss_fft_cpx*tawm = (kiss_fft_cpx*) malloc (NFFT*sizeof (kiss_fft_cpx)));
rau (j = 0; j <NFFT; j ++) {Tus nqi = *h2p_lw_adc_addr; // recupère la valeur provenant du pcb du microin [j].r = Tus nqi-2000.0; // ntawm kev so haujlwm l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // tuaj koom lub sijhawm tsis txaus ntseeg précis pour avoir une fréquence d'échantillonnage connue}
// Xeem de la FFT depuis hauv nqe outkiss_fft (teeb tsa, hauv, tawm); 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 thiab 9 tmp_log = 20*(log (abs (tawm [t].r/1000.0))))*9;
tmp_log = tmp_log/50; yog (tmp_log <0) {tmp_log = 0; } yog (tmp_log> 9) {tmp_log = 9; } sprintf (tmp_val, "%d", tmp_log); strcat (C_val, tmp_val); // ajoute au tsis la nouvelle valeur
} xa_wifir (C_val); // on envoi le buffer par wifi
fonction xa wifir:
void xa_wifir (char* com_AT) {int num, z; rau (z = 0; z <22000000; z ++) {} rau (num = 0; num <(int) strlen (com_AT); num ++) { *(h2p_lw_rs232_addr) = com_AT [num]; }}
Pour initialiser la carte wifi ntawm kev siv le chaws suivant:
xa_wifi ("AT+RST / r / n"); // demande de reset à la cartesleep (3); // koom nrog 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 txuas txuas lossis wifis pw (15); // on attend 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 ordinateurs pw tsaug zog (3); // koom la connexionsend_wifi ("AT+CIPMODE = 1 / r / n"); // ntawm se tau ntsib en hom envoie en tseem tsaug zog (3); xa_wifi ("AT+CIPSEND / r / n"); // thaum pib la kis
fonction xa 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]; rau (z = 0; z <2500000; z ++) {}}}
Code du siv:
ua haujlwm ntawm lub fft:
int i, j, Tus nqi = 0; system ("meej");
rau (i = 0; i <41; i ++) {if (i <40) {for (j = 0; j <BUFSIZE; j ++) {if (table [j]*4> (40 - i)) {if (rooj [j]*4> 35) printf (RED "|" RESET); lwm yog (rooj [j]*4> 28) printf (L_RED "|" RESET); lwm yog (rooj [j]*4> 21) printf (YEL "|" RESET); lwm yog (rooj [j]*4> 14) printf (L_YEL "|" RESET); lwm yog (rooj [j]*4> 7) printf (L_GRN "|" RESET); lwm printf (GRN "|" RESET); } lwm printf (""); } printf ("\ n"); } lwm {printf ("0Hz 2.5Hz 5Hz 7.5kHz 10kHz / n"); /*rau (j = 0; j <(BUFSIZE/2); j ++)
Pom zoo:
Arduino Tsheb Rov Qab Chaw Nres Tsheb Ceeb Toom - Cov Kauj Ruam ntawm Kauj Ruam: 4 Kauj Ruam
Arduino Tsheb Rov Qab Chaw Nres Tsheb Ceeb Toom | Cov kauj ruam ib kauj ruam: Hauv txoj haujlwm no, kuv yuav tsim qhov yooj yim Arduino Tsheb Rov Qab Tsheb Nres Tsheb Nres Sensor Siv Arduino UNO thiab HC-SR04 Ultrasonic Sensor. Qhov no Arduino raws Lub Tsheb Rov Qab ceeb toom tuaj yeem siv rau Kev Tshawb Fawb Txog Tus Kheej, Robot Ranging thiab lwm yam
Tsev Automation Kauj Ruam ntawm Kauj Ruam Siv Wemos D1 Mini Nrog PCB Tsim: 4 Kauj Ruam
Tsev Automation Kauj Ruam Ib Leeg Siv Wemos D1 Mini Nrog PCB Tsim: Tsev Automation Kauj Ruam los ntawm Kauj Ruam siv Wemos D1 Mini nrog PCB Tsim cov tub ntxhais kawm ntawv qib siab. Tom qab ntawd ib tus ntawm peb cov tswv cuab tuaj
RC Taug Qab Neeg Hlau Siv Arduino - Kauj Ruam Ib kauj ruam: 3 Kauj Ruam
RC Tracked Robot Siv Arduino - Kauj Ruam Ib Nrab: Hav guys, Kuv rov qab los nrog lwm tus neeg hlau txias chassis los ntawm BangGood. Vam tias koj tau dhau los ntawm peb cov phiaj xwm yav dhau los - Spinel Crux V1 - Tus Cwj Pwm Tswj Tus Neeg Hlau, Spinel Crux L2 - Arduino Xaiv thiab Muab Neeg Hlau nrog Robotic caj npab thiab Badland Braw
Kawm Yuav Ua Li Cas Kos Tus Tswm Ciab - Kauj Ruam Ib Kauj Ruam: 6 Kauj Ruam
Kawm Yuav Ua Li Cas Thiaj Li Tswmciab - Kauj Ruam Ib kauj ruam: Cov tswm ciab no siv sijhawm 10 feeb los kos yog tias koj ua raws kuv cov kauj ruam ua tib zoo
Yuav Ua Li Cas Autotune (dawb!): 4 Kauj Ruam
Yuav Ua Li Cas Autotune (pub dawb!): Siv garageband, kawm paub yuav ua li cas yooj yim tsim qhov cuam tshuam autotune uas koj hnov ntau heev. ** Kho ** txuas rau qhov piv txwv: http://limelinx.com/files/e7b32e25dda5c5a22ab1bfc8c0eb3acd