Inhoudsopgave:
- Stap 1: Vereisten 1/3 - Hardware
- Stap 2: Vereisten 2/3 - Componenten voor uw circuit
- Stap 3: Vereisten 3/3 - Software
- Stap 4: Ingangscircuit
- Stap 5: Uitgangscircuit
- Stap 6: [OPTIONEEL] Borad- en soldeercomponenten voor printplaten maken
- Stap 7: SoC-configuratie
- Stap 8: Programmeren C HPS
- Stap 9: Digitale overname van de ADC van de kaart
- Stap 10: FFT-berekening
- Stap 11: De FFT weergeven
- Stap 12: Montage
- Stap 13: Geluidseffecten
- Stap 14: [OPTIONEEL] De helm maken
Video: Spartan Voice Changer-helm: 14 stappen (met afbeeldingen)
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
Hallo! Wij zijn een team van 4 studenten van de Polytechnische school van de Sorbonne University:
- Louis Buchert
- Bilal Melehi
- Bao Tinh Piot
- Marco Longépe
Dit project wordt gerealiseerd als onderdeel van onze studies en heeft tot doel een aantal tools in handen te nemen en onze theoretische prestaties aan te tonen.
Het beroemde object krijgt het uiterlijk van een helm die lijkt op die van de held van een bepaald videospel waarvan de naam verloren zal gaan. Voor de ontwerpkant hebben we ook een scherm dat de Fourier-transformatie weergeeft van het audiosignaal dat uit de luidspreker komt. Het doel van deze headset is om de stem van de koerier in realtime te veranderen met behulp van een aantal selecteerbare effecten.
Educatieve doelen:
- Leg het geluid van een microfoon vast
- Versterk, filter, digitaliseer het signaal
- Realiseer de FFT van een signaal
- Toon deze FFT op een scherm
- Signaalsynthese:
- Haal een geluid uit een luidspreker
- Realiseer effecten op het audiogeluid (galm, echo, enz …)
Nu we de achtergrond hebben gelegd en het project hebben gepresenteerd, is het tijd om het in handen te krijgen!
Stap 1: Vereisten 1/3 - Hardware
Om uw helm met succes te bouwen, hebben we wat hardware nodig om het apparaat te laten werken.
- DE0-Nano-SoC Development Board door Terasic + Adafruit TFT LCD-scherm (Arduino)
- Toegang tot een 3D-printer om de helm te maken (als je een universiteitsstudent bent, ga dan dichter naar je universiteit, sommige hebben laboratoria die toegankelijk zijn voor studenten)
- Een computer met een internetverbinding en een minimum aan connectiviteit (USB, Ethernet). Uw computer moet ook een sterke processor hebben, aangezien het compileren van programma's op Qsys veel tijd kost.
- (Niet vereist) Een printer die Printed Circuit Boards (PCB) maakt van Gerber-bestanden om de circuitgrootte te verkleinen + een soldeerbout om de componenten op de PCB te plaatsen.
- (Sterk aanbevolen): een goede koffie om van je werk te genieten met onze Instructable:)
Stap 2: Vereisten 2/3 - Componenten voor uw circuit
Dit zijn de componenten die nodig zijn voor uw circuit:
- Texas Instrument LM386 AB-klasse audioversterker
- Broodplank
- Set mannelijk-mannelijk, mannelijk-vrouwelijk kabels
- LM358P Digitaal-naar-analoog-omzetter (DAC)
- Spreker
- Kleine microfoon gebruikt in analoge schakeling
- Een spelset van weerstanden van 1kOhm tot 220kOhm
- Condensator 1.5nF
- Condensator 50nF
- Condensator 100nF
- Condensator 100uF
- Condensator 220uF
- x4 condensatoren 10uF
Stap 3: Vereisten 3/3 - Software
Last but not least heeft u software nodig:
- Quartus 15.1: Lite-versie
- Een C-compiler (gcc bijvoorbeeld)
- Altium voor PCB-ontwerp
-
Altera's SoC embedded suite om te communiceren met de SoC-kaart
- Stopverf
Stap 4: Ingangscircuit
Laten we het circuit bouwen. Gebruik de bovenstaande afbeelding van het circuit om het op uw breadboard te monteren. Je zult ook de afbeelding van het BreadBoard en het circuit binnenin zien om te zien hoe pinnen zijn aangesloten. Het hele circuit wordt gevoed met een 5V gelijkstroom (DC). Hiervoor kun je een 5V batterij met een USB-B converter of een functiegenerator gebruiken.
Enkele herinneringen:
- 5V voeding en de grond zijn aangesloten op afzonderlijke horizontale lijnen van het breadboard
- Als je 2 componenten parallel wilt aansluiten, plaats ze dan in een gemeenschappelijke lijn van het breadboard
- Als u 2 seriële componenten wilt aansluiten, mogen de componenten slechts één pin in een gemeenschappelijke lijn van het breadboard.
Aarzel niet om de speciale tutorial te bekijken over het gebruik van een breadboard en om er een circuit op te bouwen. Vergeet ook niet goed de pinpositie van de LM358P Audioversterker te lezen (zie afbeelding hierboven)
Stap 5: Uitgangscircuit
Vrijwel dezelfde instructies als bij stap 4. De vier ingangen: SDI, niet CS, SCK, niet LDAC zijn afkomstig van uw DE0-Nano-Soc-bord. We zullen later zien hoe we ze kunnen genereren.
Vergeet niet goed de pinposities van de LM386 Audio Amplifier te lezen (zie afbeelding hierboven)
Stap 6: [OPTIONEEL] Borad- en soldeercomponenten voor printplaten maken
Als je het geluk hebt een printplaatprinter te bezitten of er een te kunnen gebruiken, gaan we onze eigen printplaat (PCB) maken. Merk op dat deze stap optioneel is. Deze stap bestaat alleen uit het verplaatsen van uw circuit van een breadboard naar een PCB.
Je hebt deze 2 GERBER-bestanden nodig.
Deze bestanden zijn gemaakt op Altium. Gebruik ze op uw PCB-printersoftware om uw PCB af te drukken. Zodra u uw PCB hebt ontvangen, moet u ervoor zorgen dat uw PCB schoon is en dat de tracks correct zijn afgedrukt.
Nu komt het echte werk: solderen. De 2 foto's hierboven is de kaart van het circuit op de PCB. Elke component heeft namen (R6, C4, MK1 etc.). Afbeeldingen in stap 4 en 5 tonen de componentenparameters (weerstand, geleiding…). Plaats elk onderdeel van uw breadboard op de PCB volgens hun naam.
Nadat je alles met je soldeerbout hebt gesoldeerd, test je alle componenten met een voltmeter om te controleren of er kortsluiting is.
Stap 7: SoC-configuratie
Met betrekking tot de SoC-configuratie moet u enkele opdrachten en scripts uitvoeren die zijn opgenomen in de SoC-embedded suite in een terminal. Om dit te doen, moet je wat $PATH toevoegen. PATH wordt binnen een terminal gebruikt om te zeggen dat u naar een bestand moet zoeken in de mappen die door het pad worden gegeven wanneer u een opdracht uitvoert. Typ hiervoor de volgende opdrachtregel:
export PATH=/cygdrive/c/altera_lite/15.1/quartus/sopc_builder/bin:$PATH
Typ vervolgens de opdrachtregel om headers te genereren uit een soft-bestand. U verkrijgt het soft-bestand door uw project op Quartus te compileren. Typ hiervoor:./generate_header.
Stap 8: Programmeren C HPS
We moeten ons bij dit onderdeel 2 dingen realiseren, namelijk lees de waarde van de ADC lezen en schrijven in de SPI.
1. Lees de waarde van de ADC
Het adres van het geheugen waarin de ADC zich bevindt is niet direct toegankelijk, in feite stelt het op de kaart aanwezige Linux-systeem een abstractie van het geheugen in. Om echt toegang te krijgen tot het ADC-adres, gebruiken we de mmap-functie.
"h2p_lw_spi_addr=virtual_base + ((unsigned long)(ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (unsigned long)(HW_REGS_MASK));"
Deze instructie maakt het mogelijk om een offset toe te voegen aan het begin van het basisadres om het adres van het geheugen toegewezen aan de ADC te bereiken, en om op het resulterende adres een logica uit te voeren EN rekening te houden met de maskering.
Daarna is het alleen nodig om de verwijzing naar de aanwijzer in het programma te verwijderen om de waarde ervan te verkrijgen.
2. Schrijf de waarde van de ADC in de SPI
De manipulatie is identiek, deze keer geven we de mmap de offset om te landen op het adres dat door de SPI is toegewezen. Tijdens het schrijven in de SPI specificeert de technische documentatie dat u naar het adres + 1 de waarde van de adc moet schrijven.
"*(h2p_lw_spi_addr+1) = ((0x1 << 12) | *h2p_lw_adc_addr);"
Met deze instructie kunt u naar de SPI schrijven. Bit 4, dus 1 << 12, is inderdaad het bit waarmee de SPI kan worden geactiveerd. Met een logische OR geven we dus zowel de activatiebit als de waarde van de ADC aan de SPI.
Stap 9: Digitale overname van de ADC van de kaart
Allereerst moet u het Ethernet IP-adres van uw computer instellen via Configuratiescherm -> Netwerk -> Kaartparmesals. Selecteer de ethernet-interface van de kaart, eigendom, ipv4-adres en voer een vast IP-adres, een masker enz.
Verbind vervolgens de kaart vanaf de kant van de voedingsaansluiting met de micro-USB-kabel. Open de Quartus-programmer en start de export. Deze manipulatie wordt herhaald na elke uitschakeling van de kaart.
Verander de micro-USB-stekkerkabel om deze keer naast de Ethernet-aansluiting aan te sluiten. Met Putty is het nu nodig om via een seriële verbinding met de kaart te verbinden. De configuratie is zichtbaar op de foto's, het idee is om COM5 te vervangen door COM gevolgd door het nummer dat je kunt vinden in je apparaatbeheer (klik met de rechtermuisknop op het Windows-logo om het te openen).
Druk op enter, je bent verbonden.
Info om het project te herstarten: - Fix ethernet ip die overeenkomt met de kaart - Zet de kaart aan, elke keer dat je de stroom aanzet, is het noodzakelijk om met "programma" onder quartus het project te zetten dat op de kaart is gecompileerd. Dit gebeurt via de micro-USB-poort - Om het resultaat van het programma weer te geven gebruiken we meer micro-USB maar UART - Met stopverf geconfigureerd voor seriële COM5 (of 6 horloge gestinnaire periph) Sluit aan op de kaart. - Stel een wachtwoord in (passwd) - Stel IP-adres in ifconfig ethxx IPchoice (IP niet ver van dat voor de eth van de pc) - Genereer de header volgens Qsys met de terminal ingebed (export PATH) - make - scp l exec in de map - voer onder stopverf het prog. uit
Stap 10: FFT-berekening
Om de Fast Fourier Transform in ons C-programma te krijgen, zullen we een bibliotheek gebruiken die is geschreven door Mark Borgerding: Kiss FFT. U kunt de bibliotheek hier downloaden: https://kissfft.sourceforge.net/. Het toepassen van een FFT op een signaal is nodig om signaaleffecten te wijzigen en toe te passen. Het kan ook dienen om het spectrum van een signaal weer te geven.
De eerste stap in uw C-programma bestaat uit het toewijzen van geheugen om het FFT-resultaat op te slaan. De grootte van het geheugen hangt af van het aantal punten dat wordt gebruikt om de FFT te berekenen. Hoe meer punten je hebt, hoe nauwkeuriger de FFT. Het programma zal echter langzamer werken en meer geheugen gebruiken. Merk op dat u twee arrays krijgt van de functie kiss_fft: de invoer en de uitvoer van de functie (cx_in en cx_out)
Zodra onze array is gevuld met nieuwe FFT-waarden, dat wil zeggen wanneer r = Win - 1, verwerken we de FFT. Wat de weergave betreft, geven we alleen het positieve deel van het spectrum weer, omdat er een symmetrie is tussen het negatieve deel en het positieve deel.
Wat de horizontale as betreft, verlagen we de piekwaarden met 100*height/(height²) om de pieken van de hoofdfrequenties te onderscheiden.
We gebruiken de usleep-systeemaanroep om een leesfrequentie voor de ADC-waarden te definiëren. Deze frequentie is momenteel ingesteld op 1, 5 Hz.
Stap 11: De FFT weergeven
Gebaseerd op een voorbeeld van het Adafruit TFT LCD-scherm dat hier beschikbaar is: https://www.terasic.com/downloads/cd-rom/de0-nano-s… we hebben de NIOS van ons bord geprogrammeerd zodat hij kan lezen de ADC-waarde.
Dus het ADC-register wordt gedeeld tussen de NIOS en de HPS omdat de ADC-waarden worden gebruikt om de FFT op het NIOS-scherm weer te geven, en diezelfde waarden worden op de SPI geschreven om van het bord te worden uitgevoerd en uiteindelijk te worden geconverteerd door de DAC om een analoog signaal te krijgen.
Stap 12: Montage
We zijn bijna klaar! U moet elk onderdeel van het project (ingangscircuit, uitgangscircuit en het bord) in elkaar zetten. Zorg ervoor dat u de onderdelen aansluit op de juiste pinnen volgens het Quartus-project.
- Het ingangscircuit stuurt het door de microfoon vastgelegde audiosignaal, versterkt, gefilterd en gecompenseerd.
- Het programma C op de kaart leest de waarden van de ADC zoals we eerder hebben gezien, en schrijft deze op de SPI zodat we de waarde op de GPIO van de kaart kunnen herstellen.
- Vervolgens zal de output GPIO van de SPI de informatie verzenden die wordt gedecodeerd door onze DAC en versterkt door te rennen om de luidspreker te bereiken.
Stap 13: Geluidseffecten
De enige stap die overblijft zijn geluidseffecten.
Beschikbare effecten zijn:
- Hoogfrequent filter
- Lage frequentie filter
- …
Je wisselt tussen effecten dankzij een knop. Deze knop verandert een variabele in ons C-programma, zodat het het juiste effect kan toepassen.
Stap 14: [OPTIONEEL] De helm maken
Hier zijn we in de meest handmatige stap van het project:
- Eerst hebben we de verschillende 3D-geprinte delen van de helm gelijmd.
- Om de openingen tussen de gelijmde stukken op te vullen, hebben we een afwerking toegevoegd met een 3D-pen.
- We polijsten de tussenruimten gevuld met de pen en de helm meer in het algemeen, zodat het schilderij daarna goed blijft zitten.
- We hebben de helm met 2 lagen geverfd: de eerste in antraciet zwart, van dichtbij, en een tweede van primair groen van verder om tinten donkerder groen te geven.
- Eindelijk hebben we het logo van onze school op de zijkant van de helm gedrukt
Aanbevolen:
Maak je eigen Spy Bug (Arduino Voice Recorder): 5 stappen (met afbeeldingen)
Maak je eigen Spy Bug (Arduino Voice Recorder): In dit project laat ik je zien hoe ik een Arduino Pro Mini combineerde met een aantal complementaire componenten om een voicerecorder te maken die ook misbruikt kan worden als spionagebug. Het heeft een looptijd van ongeveer 9 uur, is klein en supergemakkelijk te
Robot Voice Modulator: 14 stappen (met afbeeldingen)
Robot Voice Modulator: dit is een eenvoudig te bouwen apparaat dat je eigen menselijke stem omzet in een superieure robotstem. Het bevat ook een aantal leuke functies, zoals een audio-ingang, zodat je al je favoriete instrumenten, microfoons en muziekspeler kunt aansluiten
Temperatuurmeting Automatisch & Voice Inform: 5 stappen (met afbeeldingen)
Automatische temperatuurmeting en spraakinformatie: de afgelopen dag worstelt de hele wereld met het virus Covid19. De eerste controle op getroffen personen (of waarvan vermoed wordt dat ze zijn getroffen) is het meten van de lichaamstemperatuur. Dus dit project is gemaakt om een model te maken dat automatisch de lichaamstemperatuur kan meten en via vo
Een computer demonteren met eenvoudige stappen en afbeeldingen: 13 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Een computer demonteren met eenvoudige stappen en afbeeldingen: dit is een instructie over het demonteren van een pc. De meeste basiscomponenten zijn modulair en gemakkelijk te verwijderen. Wel is het belangrijk dat je er goed over georganiseerd bent. Dit zal helpen voorkomen dat u onderdelen kwijtraakt, en ook bij het maken van de hermontage e
Voice Changer Hack voor DIY Synths - Ajarnpa
Voice Changer Hack voor doe-het-zelf-synths: voor degenen die mijn nieuwste 'ibles' hebben gevolgd - je weet dat ik de laatste tijd een paar 555 timer-synths heb gebouwd. Onlangs vond ik tijdens een reis naar mijn plaatselijke recyclingdepot een stemvervormer voor kinderen. Het is het type waarbij je in een microfoon praat