Inhoudsopgave:
- Stap 1: Composants Utilisés
- Stap 2: Architectuur
- Stap 3: Partij analoog
- Stap 4: Impressie Des PCB's
- Stap 5: Partie Numérique
- Stap 6: Le Code
Video: Automatisch afstemmen: 7 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
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 (4e année du cycle ingénieur en électronique informatique systèmes embarqués).
Ons project bestaat uit een eerste deel van een micro-, een uit een hoogstaand parleur en een vervolg op de FFT op een pc. Il sera possible de modifier le son audio comme le volume et creer un écho.
C'est parti pour les explications !!
Stap 1: Composants Utilisés
- Kaart DEO-Nano-SoC
- Batterij 2 uitgang à 5V2A
- Micro
- Haut Parleur 8 Ohm
- Regelaar: MAX660
- Capteur IR: GP2Y0E02A
- Ampli-audio: LM386N-1/NOPB
- DAC: MCP4821-E/P
- Diode: 1N4148
- Doorgang: LND150N3-G / N-FET
- 2 AOP: TL081C
- Weerstanden
- condensateurs
- Wifi: ESP8266EX
- 4 schakelaars
- 3 Leds de couleurs
Stap 2: Architectuur
Voici ci-dessus notre schéma bloc représentant l'architecture de notre projet Autotune.
Kom eens kijken naar de inhoud van het project dat u kunt gebruiken om een micro-signaal te geven dat u niet kunt zien als een signaal dat u kunt omzetten in een nummer dat niet is geïntegreerd in de kaart van de FPGA. Het signaal kan worden aangepast aan de keuze van de keuze voor de proximité en de schakelaars. Enfin, le signal modifié depuis la carte sera reconverti en un signal analogique et sera transmise à travers le haut parleur.
Stap 3: Partij analoog
Notre partie analogie est composée de 2 circuits:
Een eersteklas circuit met een vertegenwoordiger van de partij micro, een sera branché van CAN de la carte FPGA, een samengestelde versterker van gain en een filter dat passief is voor het recupereren van het signaal.
Een nieuw circuit dat bestaat uit een partij tussen twee partijen, een reeks verschillende takken van de FPGA, een compositie van DAC, een verdeeldheid van spanning en een versterkte audio.
De troisième schéma est celui du régulateur produisant du -5V pour alimenter tous les composants.
Stap 4: Impressie Des PCB's
Maintenant, nous allons créer nos PCB afin de les imprimer et de les relier !
Een l'aide du logiciel Alitum, nous avons pu creer deux PCB's, c'est à dire la partie micro et haut parleur. Voici le site correspondant au tutorial Altium qui peut sureement vous aider !
Stap 5: Partie Numérique
Après avoir imprimer vos PCBs, vous pouvez enfin brancher le tout à la carte FPGA !
Giet een partij 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é, op calcule la fft et op envoie le résultat par wifi. Cette séparation permet d'éviter les ralentissements sur la première party.
Gebruik Qsys et quartus pour brancher le HPS avec les différents composants. Bij gebruik van notament une IP SPI voor communiquer avec le dac et une IP UART voor communiquer avec la carte wifi.
Stap 6: Le Code
Voici le lien où nous avons récuperé le code pour faire la fft.
Gebruik se code pour calculer la fft:
// Creatie van de configuratie en buffers in en uit voor s (t) en 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++){Waarde = *h2p_lw_adc_addr; //recupère la valeur provenant van pcb du microin[j].r = Waarde-2000.0; //bij pensionering l'offset de cette valeurfor(i = 0; i < 2100; i++) {} //attend un temps bien précis pour avoir une fréquence d'échantillonnage connue}
// Bereken de 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 envoyer par wififor(t=0;t< (NFFT/4);t++) { //pour limiter la taille du buffer on limite la sortie de la fft à des valeurs tussen 0 en 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); //op envoi le buffer par wifi
functie wifir verzenden:
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]; } }
Giet initialiser la carte wifi op use le code suivant:
send_wifi("AT+RST\r\n"); //demand de reset à la cartesleep (3); //bijwonen qu'elle resetsend_wifi("AT+CWMODE=3\n\r"); //choisit le mode de la cartesend_wifi("AT+CWJAP=\"wifiNom\", \"MotDePasse\"\r\n"); //op de vraag naar de verbinding met 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 server ouvert sur un autre ordinateursleep(3); //attend la connexionsend_wifi("AT+CIPMODE=1\r\n"); //on se met en mode envoie en continuesleep(3);send_wifi("AT+CIPSEND\r\n"); //op het begin van de uitzending
functie wifi verzenden:
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]; for(z=0;z<2500000;z++) {} } }
Code van de server:
affichage de la fft:
int i, j, Waarde=0; systeem("wissen");
for(i =0; i < 41; i++) { if(i < 40) { for(j = 0; j < BUFSIZE; j++) { if(table[j]*4 > (40 - i)) { if (tabel[j]*4 > 35) printf(ROOD "|" RESET); else if(tabel[j]*4 > 28) printf(L_RED "|" RESET); else if(tabel[j]*4 > 21) printf(YEL "|" RESET); else if(tabel[j]*4 > 14) printf(L_YEL "|" RESET); else if(tabel[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"); /*for(j = 0; j < (BUFSIZE/2); j++)
Aanbevolen:
Automatisch volledig opladen mobiel uitschakelen: 20 stappen
Auto-off voor volledig opladen van mobiele telefoons: het opladen van de mobiele telefoon wordt automatisch uitgeschakeld wanneer deze volledig is opgeladen. U hoeft zich geen zorgen te maken over de levensduur van de batterij, zelfs niet als u deze 's nachts hebt achtergelaten. Mobiele telefoons werken op batterijen. Hoewel batterijen handig in gebruik zijn, zijn er ook voorzorgsmaatregelen nodig. Een ma
Automatisch dagalarm: 3 stappen
Automatisch dagalarm: Dit is een automatisch dagalarm. wanneer zonlicht op de LDR valt, wordt het alarm ingeschakeld. het is super makkelijk om te maken
Automatisch een programma starten bij het aansluiten van een laptop op een dockingstation: 5 stappen
Een programma automatisch starten wanneer u een laptop op een dockingstation aansluit: deze instructie gaat over het uitvoeren van een programma of een toepassing wanneer u uw laptop op een dockingstation aansluit. In dit voorbeeld gebruik ik Lenovo T480 Windows 10
De GiggleBot-lijnvolger afstemmen - Geavanceerd - Ajarnpa
De GiggleBot-lijnvolger afstemmen - gevorderd: in deze zeer korte Instructables ga je je eigen GiggleBot afstemmen om een zwarte lijn te volgen. In deze andere tutorial GiggleBot Line Follower hebben we de afstemmingswaarden hard gecodeerd om volgens dat scenario te werken. Misschien wil je ervoor zorgen dat het zich gedraagt
Roterend afstemmen met de Pi TV HAT: 3 stappen
Rotary Tuning met de Pi TV HAT: In deze Instructable laat ik je zien hoe je wat analoge controle naar je digitale tv kunt brengen, door een draaischakelaar te gebruiken om van kanaal te veranderen op een Raspberry Pi-aangedreven vintage tv. Het TV HAT-accessoire is onlangs uitgebracht en met mijn liefde voor converti