תוכן עניינים:
- שלב 1: Composants Utilisés
- שלב 2: אדריכלות
- שלב 3: מסיבה אנלוגית
- שלב 4: Impression Des PCBs
- שלב 5: מסיבה נומריקה
- שלב 6: Le Code
וִידֵאוֹ: כוונון אוטומטי: 7 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:17
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, émit par un haut parleur et afficher la FFT sur un écran PC. אפשר לשנות את השינוי של הקול באודיו והנפח.
C'est parti pour les explications !!
שלב 1: Composants Utilisés
- Carte DEO-Nano-SoC
- סוללה 2 פלט à 5V2A
- מיקרו
- Haut Parleur 8 אוהם
- רגולטור: MAX660
- קפטור IR: GP2Y0E02A
- שמע Ampli: LM386N-1/NOPB
- DAC: MCP4821-E/P
- דיודה: 1N4148
- מוביל: LND150N3-G / N-FET
- 2 AOP: TL081C
- התנגדות
- מעבים
- Wifi: ESP8266EX
- 4 מתגים
- 3 Leds de couleurs
שלב 2: אדריכלות
Voici ci-dessus notre schéma block 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 signal analogique and sera transmise à travers le haut parleur.
שלב 3: מסיבה אנלוגית
Notre partie analogie est composée de 2 מעגלים:
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 שמע.
Le troisième schéma est celui du régulateur produisant du -5V pour alimenter tous les composants.
שלב 4: Impression Des PCBs
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 au tutoriel Altium qui peut sureement vous aider!
שלב 5: מסיבה נומריקה
Après avoir imprimer vos PCBs, vous pouvez enfin brancher le tout à la carte FPGA!
Pour la partie numérique, nous avons créer un code C qui est séparé en deux en utililisant 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.
על השימוש Qsys et quartus pour brancher le HPS avec les différents composants. על שימוש בתצורה של IP SPI עבור קומוניקטור של כל אחד ואחת מ- IP UART של קומוניקטר של wifi.
שלב 6: Le Code
Voici le lien où nous avons récuperé le code pour faire la fft.
על לנצל קוד se pour מחשבון la fft:
// 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));
עבור (j = 0; j <NFFT; j ++) {Value = *h2p_lw_adc_addr; // recupère la valeur provenant du pcb du microin [j].r = Value-2000.0; // on pension l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // attend 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 gesant 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; אם (tmp_log <0) {tmp_log = 0; } אם (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); // on envoi le buffer par wifi
fonction שלח wifir:
void send_wifir (char* com_AT) {int num, z; עבור (z = 0; z <22000000; z ++) {} עבור (num = 0; num <(int) strlen (com_AT); num ++) { *(h2p_lw_rs232_addr) = com_AT [num]; }}
שפוך אתחול ה- Wi -Fi לאתחול ב- utilize le code suivant:
send_wifi ("AT+RST / r / n"); // demande de reset à la cartesleep (3); // השתתפו ב- 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); // 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 ordinateursleep (3); // השתתפו ב- la connexionsend_wifi ("AT+CIPMODE = 1 / r / n"); // on se met en mode envoie en continuleep (3); send_wifi ("AT+CIPSEND / r / n"); // על תחילת השידור
fonction שלח 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]; עבור (z = 0; z <2500000; z ++) {}}}
קוד du servur:
affichage de la fft:
int i, j, ערך = 0; מערכת ("ברור");
עבור (i = 0; i <41; i ++) {if (i <40) {עבור (j = 0; j <BUFSIZE; j ++) {if (טבלה [j]*4> (40 - i)) {if (טבלה [j]*4> 35) printf (אדום "|" איפוס); אחרת אם (טבלה [j]*4> 28) printf (L_RED "|" RESET); אחרת אם (טבלה [j]*4> 21) printf (YEL "|" RESET); אחרת אם (טבלה [j]*4> 14) printf (L_YEL "|" RESET); אחרת אם (טבלה [j]*4> 7) printf (L_GRN "|" RESET); else printf (GRN "|" RESET); } אחר printf (""); } printf ("\ n"); } אחר {printf ("0Hz 2.5Hz 5Hz 7.5kHz 10kHz / n"); /*עבור (j = 0; j <(BUFSIZE/2); j ++)
מוּמלָץ:
Bluetooth אוטומטי אוטומטי: 4 שלבים
אוטומטי מכשיר Bluetooth: נהיגה אוטומטית שמאפשרת ניהול באמצעות Bluetooth. האוטו מבוסס על מכונית קיימת ועכשיו היא נפתחת על ארדואינו
מתנד מזלג כוונון: 3 שלבים (עם תמונות)
מתנד מזלג: זה משהו שרציתי להכין הרבה זמן. מתנד עם מזלג כוונון במקום LC, RC, קריסטל או מהוד אחר. אין לי (וגם לא יכול לחשוב על) יישום מעשי עבורו. אני בונה את זה רק בשביל הכיף. נכשלתי כמה פעמים
כוונון עוקב קו GiggleBot - מתקדם: 7 שלבים
כוונון עוקב הקו של GiggleBot - מתקדם: במדריך קצר מאוד זה אתה הולך לכוון את GiggleBot שלך לעקוב אחר קו שחור. במדריך אחר של GiggleBot Line Follower, קישדנו קשה את ערכי הכוונון לעבודה בהתאם לתרחיש זה. אולי תרצה לגרום לזה להתנהג כך
כוונון רוטרי עם כובע הטלוויזיה של Pi: 3 שלבים
כוונון רוטרי עם כובע ה- Pi TV: במדריך זה אני אראה לך כיצד להביא קצת שליטה אנלוגית לטלוויזיה הדיגיטלית שלך, באמצעות מתג סיבובי להחלפת ערוצים בטלוויזיה וינטאג 'המופעלת באמצעות פטל. אביזר HAT TV שוחרר לאחרונה ועם אהבתי להמיר
כיצד לבצע כוונון אוטומטי (בחינם!): 4 שלבים
כיצד לבצע כוונון אוטומטי (בחינם!): בעזרת פס חשיפה, למד כיצד ליצור בקלות את האפקט של שידור אוטומטי שאתה שומע כל כך הרבה. ** ערוך ** קישור לדוגמא: http://limelinx.com/files/e7b32e25dda5c5a22ab1bfc8c0eb3acd