Spisu treści:
- Krok 1: Utylizacja składników
- Krok 2: Architektura
- Krok 3: Partie Analogique
- Krok 4: Impresja Des PCB
- Krok 5: Partia Numeryczna
- Krok 6: Le Code
Wideo: Automatyczne dostrajanie: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
Bienvenue dans notre projet Autotune
Notre équipe va vous présenter la réalisation de ce projet. Notre équipe est composée trzech najlepszych inżynierów z Polytech Sorbonne en EISE4 (4 lata inżynierów cyklicznych w embarques électronique informatique systemów).
Notre projekt składa się z émettre un son capter dla mikro, emit par un haut parleur i afficher la FFT sur un écran PC. Il sera possible de modifier le son audio comme le volume et créer un écho.
C'est parti pour les explications !!
Krok 1: Utylizacja składników
- Karta DEO-Nano-SoC
- Baterie 2 wyjście à 5V2A
- Mikro
- Haut Parleur 8 Ohm
- Regulator: MAX660
- Rejestrator podczerwieni: GP2Y0E02A
- Wzmacniacz audio: LM386N-1/NOPB
- DAC: MCP4821-E/P
- Dioda: 1N4148
- Tranzyt: LND150N3-G / N-FET
- 2 AOP: TL081C
- Opór
- Kondensatory
- Wifi: ESP8266EX
- 4 przełączniki
- 3 diody couleurs
Krok 2: Architektura
Voici ci-dessus notre schéma bloc reprezentant 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 nie 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.
Krok 3: Partie Analogique
Notre partie analogie est composée de 2 circuits:
Najlepszy obwód, który reprezentuje partie mikro, qui sera branche w CAN karty FPGA, skomponowany wzmacniacz wzmocnienia i filtr, który przepuszcza sygnał.
Najlepszy obwód, który reprezentuje partie haut parleur, ten sera oddziału karty FPGA, skomponowany DAC, dzielnik napięcia i wzmacniacz dźwięku.
Le troisième schéma est celui du régulateur produisant du -5V wlać alimenter tous les composants.
Krok 4: Impresja Des PCB
Maintenant, wszystkie nowe płytki 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 korespondent au tutoriel Altium qui peut sureement vous aider !
Krok 5: Partia Numeryczna
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 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é, na obliczeniach la fft i na envoie le résultat par wifi. Cette séparation permet d'éviter les ralentissements sur la premiere partie.
W celu wykorzystania Qsys et quartus pour brancher le HPS avec les différents composants. W przypadku korzystania z notammentu IP SPI w celu przekazania komunikatu z karty sieciowej i w przypadku korzystania z protokołu IP UART.
Krok 6: Le Code
Voici le lien om nous avons récuperé le code pour faire la fft.
Po użyciu se kod wlać kalkulator la fft:
// Tworzenie konfiguracji i buforów in i 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++){Wartość = *h2p_lw_adc_addr; //recupère la valeur progressive du pcb du microin[j].r = wartość-2000,0; //na emeryturze l'offset de cette valeurfor(i = 0; i < 2100; i++) {} //attend un temps bien precis pour avoir une fréquence d’échantillonnage connue}
// Oblicz depuis FFT 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 i 9 tmp_log=20*(log(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); //na envoi le buffer par wifi
Funkcja wysyłania wifi:
void send_wifir(char* com_AT){ int num, z; for(z=0;z<22000000;z++) {} for(num = 0; num < (int)strlen(com_AT); num++) { *(h2p_lw_rs232_addr) = com_AT[num]; } }
Wlać inicjator la carte wifi na wykorzystanie odpowiedniego kodu:
send_wifi("AT+RST\r\n"); //żądanie resetu à la cartesleep(3); //attend qu'elle resetsend_wifi("AT+CWMODE=3\n\r"); //wybierz tryb cartesend_wifi("AT+CWJAP=\"wifiNom\", \"MotDePasse\"\r\n"); //on lui demande de se connecter au wifisleep(15); //na uczestnictwo w 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 server ouvert sur un autre ordinateursleep(3); //uczestniczyć w la connexionsend_wifi("AT+CIPMODE=1\r\n"); //po spotkaniu w trybie envoie en Continueleep(3);send_wifi("AT+CIPSEND\r\n"); //na rozpoczęcie transmisji
Funkcja wysyłania 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]; dla(z=0;z<2500000;z++) {} } }
Kod serwera:
affichage de la fft:
int i, j, Wartość=0; system("wyczyść");
for(i =0; i < 41; i++) { if(i < 40) { for(j = 0; j < BUFSIZE; j++) { if(table[j]*4 > (40 - i)) { if (tabela[j]*4 > 35) printf(RED "|" RESET); else if(tabela[j]*4 > 28) printf(L_RED "|" RESET); else if(table[j]*4 > 21) printf(YEL "|" RESET); else if(table[j]*4 > 14) printf(L_YEL "|" RESET); else if(tabela[j]*4 > 7) printf(L_GRN "|" RESET); w przeciwnym razie printf(GRN "|" RESET); } else printf(" "); } printf("\n"); } else { printf("0Hz 2,5Hz 5Hz 7,5kHz 10kHz\n"); /*for(j = 0; j < (ROZMIAR ROZMIARU/2); j++)
Zalecana:
Mobilne automatyczne wyłączanie pełnego naładowania: 20 kroków
Mobile Full Charge Autooff: Automatyczne odcięcie ładowania telefonu komórkowego po pełnym naładowaniu. Nie martw się o żywotność baterii, nawet jeśli zostawiłeś ją na noc. Telefony komórkowe są zasilane bateriami. Chociaż baterie są poręczne w użyciu, ich użycie wymaga również pewnych środków ostrożności. Mam
DIY automatyczne muzyczne lampki świąteczne (MSGEQ7 + Arduino): 6 kroków (ze zdjęciami)
DIY Automatic Musical Christmas Lights (MSGEQ7 + Arduino): Każdego roku mówię, że zamierzam to zrobić i nigdy się nie zajmę, ponieważ dużo zwlekam. 2020 to rok zmian, więc mówię, że to jest rok, aby to zrobić. Więc miej nadzieję, że Ci się spodoba i stwórz własne muzyczne świąteczne lampki. To będzie s
Automatyczne oświetlenie łóżka: 5 kroków (ze zdjęciami)
Automatyczne oświetlenie łóżka: Czy śpisz też w nocy? Czy też nic nie widzisz w ciemności? Czy w nocy w pokoju jest też ciemno? Jeśli tak, to to urządzenie jest dla Ciebie! Myślę, że większość z nas lubi trochę zostać dłużej wieczorami. Powody mogą być różne – Netflix, YouTube
Dostrajanie obserwatora linii GiggleBot - zaawansowane: 7 kroków
Dostrajanie GiggleBot Line Follower - Advanced: W tych bardzo krótkich Instruktażach dostroisz swojego GiggleBot, aby podążał za czarną linią. W tym innym samouczku GiggleBot Line Follower zakodowaliśmy na stałe wartości dostrajania, aby działały zgodnie z tym scenariuszem. Możesz chcieć, aby zachowywał się
Jak wykonać automatyczne dostrajanie (za darmo!): 4 kroki
Jak wykonać automatyczne dostrajanie (za darmo!): Używając garagebandu, dowiedz się, jak łatwo stworzyć efekt autodostrajania, który tak często słyszysz.**EDYTUJ** Link do przykładu: http://limelinx.com/files/e7b32e25dda5c5a22ab1bfc8c0eb3acd