Isi kandungan:
- Langkah 1: Penggunaan Komposen
- Langkah 2: Senibina
- Langkah 3: Partie Analogique
- Langkah 4: Impression Des PCB
- Langkah 5: Partie Numérique
- Langkah 6: Le Code
Video: Autotune: 7 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:12
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 terdiri daripada émettre un son capter par un micro, émit par un haut parleur et afficher la FFT sur un rancran PC. Il sera mungkin de modifier le son audio comme le volume et créer un écho.
C'est parti tuangkan penjelasan !!
Langkah 1: Penggunaan Komposen
- Carte DEO-Nano-SoC
- Output bateri 2 à 5V2A
- Mikro
- Haut Parleur 8 Ohm
- Régulateur: MAX660
- Capteur IR: GP2Y0E02A
- Ampli Audio: LM386N-1 / NOPB
- DAC: MCP4821-E / P
- Diod: 1N4148
- Pemindah: LND150N3-G / N-FET
- 2 AOP: TL081C
- Keberangkatan
- Condensateurs
- Wifi: ESP8266EX
- 4 suis
- 3 Leds de couleurs
Langkah 2: Senibina
Voici ci-dessus notre schéma bloc représentant l'architecture de notre projet Autotune.
Kome 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.
Langkah 3: Partie Analogique
Litar notre partie analogie est synthée de 2:
Litar perdana qui représentera la partie micro, qui sera branché au CAN de la carte FPGA, komposisi 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, komposit 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 tuangkan komposisi alimenter tous les.
Langkah 4: Impression Des PCB
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 PCB, c'est à dire la partie micro et haut parleur. Voici le site wartawan au tutoriel Altium qui peut sureement vous aider!
Langkah 5: Partie Numérique
Après avoir imprimer vos PCB, vous pouvez enfin brancher le tout à la carte FPGA!
Tuang 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.
Semasa menggunakan komposisi Qsys et quartus tuangkan komposer le HPS avec les différents. Semasa menggunakan notament une IP SPI pour communiquer avec le dac et une IP UART pour communiquer avec la carte wifi.
Langkah 6: Le Code
Voici le lien leous avons récuperé le code pour faire la fft.
Semasa menggunakan kod tuangkan kalkulator la fft:
// Création de la konfigurasi et des buffer dalam 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));
untuk (j = 0; j <NFFT; j ++) {Nilai = * h2p_lw_adc_addr; // recupère la valeur provant du pcb du microin [j].r = Nilai-2000.0; // on retire l'offset de cette valeurfor (i = 0; i <2100; i ++) {} // menghadiri 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 zero le tableau quo nous sert de buffer que l'on va envoyer par wififor (t = 0; t <(NFFT / 4); t ++) {// tuangkan limiter la taille du buffer pada limite la sortie de la fft à des valeurs entre 0 et 9 tmp_log = 20 * (log (abs (keluar [t].r / 1000.0))) * 9;
tmp_log = tmp_log / 50; jika (tmp_log <0) {tmp_log = 0; } jika (tmp_log> 9) {tmp_log = 9; } sprintf (tmp_val, "% d", tmp_log); strcat (C_val, tmp_val); // ajoute au buffer la nouvelle valeur
} hantar_wifir (C_val); // pada envoi le buffer par wifi
fonction hantar wifir:
batal send_wifir (char * com_AT) {int num, z; untuk (z = 0; z <22000000; z ++) {} untuk (num = 0; num <(int) strlen (com_AT); num ++) {* (h2p_lw_rs232_addr) = com_AT [num]; }}
Tuangkan wifi inisialisasi a la carte untuk menggunakan le code suivant:
send_wifi ("AT + RST / r / n"); // demande de reset à la cartesleep (3); // hadiri qu'elle resetsend_wifi ("AT + CWMODE = 3 / n / r"); // pilih le mode de la cartesend_wifi ("AT + CWJAP = \" wifiNom / ", \" MotDePasse / "\ r / n"); // on lui demande de se connecter au wifisleep (15); // on menghadiri 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); // hadiri la connexionsend_wifi ("AT + CIPMODE = 1 / r / n"); // on se met en mode envoie en terus tidur (3); send_wifi ("AT + CIPSEND / r / n"); // pada permulaan penghantaran
fonction hantar wifi:
batal send_wifi (char * com_AT) {int num, z; untuk (num = 0; num <(int) strlen (com_AT); num ++) {* (h2p_lw_rs232_addr) = com_AT [num]; untuk (z = 0; z <2500000; z ++) {}}}
Code du serveur:
afichage de la fft:
int i, j, Nilai = 0; sistem ("jelas");
untuk (i = 0; i <41; i ++) {if (i <40) {untuk (j = 0; j <BUFSIZE; j ++) {if (jadual [j] * 4> (40 - i)) {jika (jadual [j] * 4> 35) printf (MERAH "|" RESET); lain jika (jadual [j] * 4> 28) printf (L_RED "|" RESET); lain jika (jadual [j] * 4> 21) printf (YEL "|" RESET); lain jika (jadual [j] * 4> 14) printf (L_YEL "|" RESET); lain jika (jadual [j] * 4> 7) printf (L_GRN "|" RESET); printf lain (GRN "|" RESET); } lain printf (""); } printf ("\ n"); } lain {printf ("0Hz 2.5Hz 5Hz 7.5kHz 10kHz / n"); / * untuk (j = 0; j <(BUFSIZE / 2); j ++)
Disyorkan:
Sistem Makluman Tempat Letak Balik Kereta Arduino - Langkah demi Langkah: 4 Langkah
Sistem Makluman Tempat Letak Balik Kereta Arduino | Langkah demi Langkah: Dalam projek ini, saya akan merancang Litar Sensor Tempat Letak Kereta Berbalik Arduino yang ringkas menggunakan Sensor Ultrasonik Arduino UNO dan HC-SR04. Sistem amaran Car Reverse berasaskan Arduino ini dapat digunakan untuk Navigasi Autonomi, Robot Ranging dan rangkaian lain
Langkah demi Langkah Pembinaan PC: 9 Langkah
Langkah demi Langkah Pembinaan PC: Persediaan: Perkakasan: MotherboardCPU & CPU cooler PSU (Unit bekalan kuasa) Penyimpanan (HDD / SSD) RAMGPU (tidak diperlukan) Alat kes: Pemutar skru Gelang ESD / tampal matsthermal dengan aplikator
Tiga Litar Pembesar Suara -- Tutorial Langkah demi Langkah: 3 Langkah
Tiga Litar Pembesar Suara || Tutorial Langkah-demi-Langkah: Loudspeaker Circuit menguatkan isyarat audio yang diterima dari persekitaran ke MIC dan menghantarnya ke Speaker dari tempat audio diperkuat dihasilkan. Di sini, saya akan menunjukkan kepada anda tiga cara berbeza untuk membuat Loudspeaker Circuit ini menggunakan:
Pengangkatan Akustik Dengan Arduino Uno Langkah demi Langkah (8-langkah): 8 Langkah
Acoustic Levitation With Arduino Uno Step-by Step (8-step): transduser suara ultrasonik L298N Dc power adaptor wanita dengan pin dc lelaki Arduino UNOBreadboardBagaimana ini berfungsi: Pertama, anda memuat naik kod ke Arduino Uno (ia adalah mikrokontroler yang dilengkapi dengan digital dan port analog untuk menukar kod (C ++)
Cara Melakukan Autotune (Percuma!): 4 Langkah
Cara Melakukan Autotune (Percuma!): Menggunakan garageband, pelajari cara membuat kesan automatik yang anda dengar dengan banyak. ** EDIT ** Pautan ke contoh: http://limelinx.com/files/e7b32e25dda5c5a22ab1bfc8c0eb3acd