Inhoudsopgave:

Spartan Voice Changer-helm: 14 stappen (met afbeeldingen)
Spartan Voice Changer-helm: 14 stappen (met afbeeldingen)

Video: Spartan Voice Changer-helm: 14 stappen (met afbeeldingen)

Video: Spartan Voice Changer-helm: 14 stappen (met afbeeldingen)
Video: Curious Beginnings | Critical Role: THE MIGHTY NEIN | Episode 1 2024, November
Anonim
Spartaanse Stemvervormer Helm
Spartaanse Stemvervormer Helm
Spartaanse Stemvervormer Helm
Spartaanse Stemvervormer Helm

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

Vereisten 1/3 - Hardware
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

Vereisten 2/3 - Componenten voor uw circuit
Vereisten 2/3 - Componenten voor uw circuit
Vereisten 2/3 - Componenten voor uw circuit
Vereisten 2/3 - Componenten voor uw circuit
Vereisten 2/3 - Componenten voor uw circuit
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

Vereisten 3/3 - Software
Vereisten 3/3 - Software
Vereisten 3/3 - Software
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

Ingangscircuit
Ingangscircuit
Ingangscircuit
Ingangscircuit
Ingangscircuit
Ingangscircuit
Ingangscircuit
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

Uitgangscircuit
Uitgangscircuit
Uitgangscircuit
Uitgangscircuit
Uitgangscircuit
Uitgangscircuit
Uitgangscircuit
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

[OPTIONEEL] Borad- en soldeercomponenten voor printplaten maken
[OPTIONEEL] Borad- en soldeercomponenten voor printplaten maken
[OPTIONEEL] Borad- en soldeercomponenten voor printplaten maken
[OPTIONEEL] Borad- en soldeercomponenten voor printplaten maken
[OPTIONEEL] Borad- en soldeercomponenten voor printplaten maken
[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

SoC-configuratie
SoC-configuratie
SoC-configuratie
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

Programmeren C HPS
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

Digitale overname van de ADC van de kaart
Digitale overname van de ADC van de kaart
Digitale overname van de ADC van de kaart
Digitale overname van de ADC van de kaart
Digitale overname van de ADC van de kaart
Digitale overname van de ADC van de kaart
Digitale overname van de ADC van de kaart
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

FFT-berekening
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

De FFT. weergeven
De FFT. weergeven
De FFT. weergeven
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

samenkomst
samenkomst

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.

  1. Het ingangscircuit stuurt het door de microfoon vastgelegde audiosignaal, versterkt, gefilterd en gecompenseerd.
  2. 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.
  3. 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

Geluidseffecten
Geluidseffecten
Geluidseffecten
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

[OPTIONEEL] De helm maken
[OPTIONEEL] De helm maken
[OPTIONEEL] De helm maken
[OPTIONEEL] De helm maken
[OPTIONEEL] De helm maken
[OPTIONEEL] De helm maken

Hier zijn we in de meest handmatige stap van het project:

  1. Eerst hebben we de verschillende 3D-geprinte delen van de helm gelijmd.
  2. Om de openingen tussen de gelijmde stukken op te vullen, hebben we een afwerking toegevoegd met een 3D-pen.
  3. We polijsten de tussenruimten gevuld met de pen en de helm meer in het algemeen, zodat het schilderij daarna goed blijft zitten.
  4. 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.
  5. Eindelijk hebben we het logo van onze school op de zijkant van de helm gedrukt

Aanbevolen: