Indholdsfortegnelse:

Spartan Voice Changer Hjelm: 14 trin (med billeder)
Spartan Voice Changer Hjelm: 14 trin (med billeder)

Video: Spartan Voice Changer Hjelm: 14 trin (med billeder)

Video: Spartan Voice Changer Hjelm: 14 trin (med billeder)
Video: ТАКОВ МОЙ ПУТЬ В L4D2 2024, November
Anonim
Spartan Voice Changer hjelm
Spartan Voice Changer hjelm
Spartan Voice Changer hjelm
Spartan Voice Changer hjelm

Hej! Vi er et team på 4 studerende fra Polytechnic school ved Sorbonne University:

  • Louis Buchert
  • Bilal Melehi
  • Bao Tinh Piot
  • Marco Longépé

Dette projekt realiseres som en del af vores undersøgelser og har til formål at tage en række værktøjer i hånden samt demonstrere vores teoretiske resultater.

Det berømte objekt får udseende af en hjelm, der ligner helten i et bestemt videospil, hvis navn vil gå tabt. Til designsiden har vi også en skærm, der viser Fourier -transformationen af lydsignalet, der kommer ud af højttaleren. Formålet med dette headset er at ændre telefonens stemme i realtid ved hjælp af en række valgbare effekter.

Uddannelsesmål:

  • Optag lyden fra en mikrofon
  • Forstærke, filtrere, digitalisere signalet
  • Realiser FFT for et signal
  • Vis denne FFT på en skærm
  • Signalsyntese
  • Tag en lyd ud af en højttaler
  • Realiser effekter på lydlyden (efterklang, ekko osv.)

Nu hvor vi har lagt baggrunden og præsenteret projektet, er det tid til at få styr på det!

Trin 1: Krav 1/3 - Hardware

Krav 1/3 - Hardware
Krav 1/3 - Hardware

For at kunne bygge din hjelm med succes, skal vi bruge noget hardware til at køre enheden.

  • DE0-Nano-SoC Development Board af Terasic + Adafruit TFT LCD-skærm (Arduino)
  • Adgang til en 3D -printer for at gøre hjelmen (Hvis du er en universitetsstuderende tættere på dit universitet, har nogle laboratorier tilgængelige for studerende)
  • En computer med en internetforbindelse og et minimum af tilslutningsmuligheder (USB, Ethernet). Din computer skal også have en stærk processor, da kompilering af programmer på Qsys tager meget tid.
  • (Ikke påkrævet) En printer, der laver printkort (PCB) fra Gerber -filer for at krympe kredsløbets størrelse + et loddejern for at sætte komponenterne på printkortet.
  • (Stærkt anbefalet): En god kaffe til at nyde dit arbejde med vores Instructable:)

Trin 2: Krav 2/3 - Komponenter til dit kredsløb

Krav 2/3 - Komponenter til dit kredsløb
Krav 2/3 - Komponenter til dit kredsløb
Krav 2/3 - Komponenter til dit kredsløb
Krav 2/3 - Komponenter til dit kredsløb
Krav 2/3 - Komponenter til dit kredsløb
Krav 2/3 - Komponenter til dit kredsløb

Her er de nødvendige komponenter til dit kredsløb:

  • Texas Instrument LM386 AB klasse lydforstærker
  • Brødbræt
  • Sæt med han-han, han-hun-kabler
  • LM358P Digital-til-Analoh-konverter (DAC)
  • Højttaler
  • Lille mikrofon brugt i analogt kredsløb
  • Et spil sæt af modstande fra 1kOhm til 220kOhm
  • Kondensator 1.5nF
  • Kondensator 50nF
  • Kondensator 100nF
  • Kondensator 100uF
  • Kondensator 220uF
  • x4 Kondensatorer 10uF

Trin 3: Krav 3/3 - Software

Krav 3/3 - Software
Krav 3/3 - Software
Krav 3/3 - Software
Krav 3/3 - Software

Sidst men ikke mindst skal du bruge software:

  • Quartus 15.1: Lite version
  • En C -kompilator (f.eks. Gcc)
  • Altium til PCB -design
  • Alteras SoC -integrerede suite til kommunikation med SoC -kortet
  • Kitt

Trin 4: Indgangskredsløb

Indgangskredsløb
Indgangskredsløb
Indgangskredsløb
Indgangskredsløb
Indgangskredsløb
Indgangskredsløb
Indgangskredsløb
Indgangskredsløb

Lad os bygge kredsløbet. Brug ovenstående billede af kredsløbet for at samle det på dit brødbræt. Du vil også se billedet af brødbrættet og kredsløbet inde for at se, hvordan stifter er forbundet. Hele kredsløbet drives med en 5V jævnstrøm (DC). Til dette kan du bruge et 5V batteri med en USB-B konverter eller en funktionsgenerator.

Nogle påmindelser:

  • 5V strømforsyning og jorden er forbundet på separate vandrette linjer på brødbrættet
  • Hvis du vil forbinde 2 komponenter parallelt, skal du sætte dem i en fælles linje på brødbrættet
  • Hvis du vil tilslutte 2 serielle komponenter, skal komponenterne kun have en pin i en fælles linje på brødbrættet.

Tøv ikke med at se en dedikeret vejledning i, hvordan du bruger et brødbræt og opbygger et kredsløb på det. Glem heller ikke at læse pin -positionen på LM358P lydforstærkeren omhyggeligt (se billedet ovenfor)

Trin 5: Output Circuit

Output kredsløb
Output kredsløb
Output kredsløb
Output kredsløb
Output kredsløb
Output kredsløb
Output kredsløb
Output kredsløb

Nøjagtig de samme instruktioner som trin 4. De fire indgange: SDI, ikke CS, SCK, ikke LDAC er fra dit DE0-Nano-Soc-kort. Vi vil senere se, hvordan vi genererer dem.

Glem ikke at læse pin -positionerne på LM386 lydforstærkeren omhyggeligt (se billedet ovenfor)

Trin 6: [VALGFRIT] Oprettelse af printkredsløb og loddekomponenter

[VALGFRIT] Oprettelse af printede borad- og loddekomponenter
[VALGFRIT] Oprettelse af printede borad- og loddekomponenter
[VALGFRIT] Oprettelse af printkredsløb og loddekomponenter
[VALGFRIT] Oprettelse af printkredsløb og loddekomponenter
[VALGFRIT] Oprettelse af printede borad- og loddekomponenter
[VALGFRIT] Oprettelse af printede borad- og loddekomponenter

Hvis du er så heldig at eje en printkortprinter eller i stand til at bruge en, vil vi oprette vores eget printkort (PCB). Bemærk, at dette trin er valgfrit. Dette trin består kun i at flytte dit kredsløb fra et brødbræt til et printkort.

Du skal bruge disse 2 GERBER -filer.

Disse filer blev lavet på Altium. Brug dem på din PCB -printersoftware for at udskrive dit printkort. Når du har fået dit printkort, skal du sørge for, at dit printkort er rent, og at sporene er korrekt udskrevet.

Nu kommer den rigtige deal: Lodning. De 2 billeder ovenfor er kortet over kredsløbet på printkortet. Hver komponent har navne (R6, C4, MK1 osv.). Billeder i trin 4 og 5 viser komponentparametrene (modstand, konduktans..). Placer hver komponent fra dit brødbræt til printkortet efter deres navne.

Når du har loddet alt med dit loddejern, skal du teste alle komponenter med et voltmeter for at kontrollere, om der er kortslutning.

Trin 7: SoC -opsætning

SoC -opsætning
SoC -opsætning
SoC -opsætning
SoC -opsætning

Med hensyn til SoC -opsætningen skal du køre nogle kommandoer og scripts, der er inkluderet i SoC's integrerede suite i en terminal. For at gøre dette skal du tilføje nogle $ PATH. PATH bruges inden for en terminal til at sige at søge efter en fil i bibliotekerne givet af sti, når du kører en kommando. For at gøre det skal du skrive følgende kommandolinje:

eksport PATH =/cygdrive/c/altera_lite/15.1/quartus/sopc_builder/bin: $ PATH

Indtast derefter kommandolinjen for at generere overskrifter fra en sof -fil. Du får sof -filen ved at kompilere dit projekt på Quartus. For at gøre det skal du skrive:./generate_header.

Trin 8: Programmering af C HPS

Programmering af C HPS
Programmering af C HPS

Vi skal indse 2 ting i denne del, nemlig læse læse værdien af ADC og skrive den i SPI.

1. Læs værdien af ADC

Adressen til hukommelsen, hvor ADC'en er indeholdt, er ikke direkte tilgængelig. Faktisk opretter linux -systemet på kortet en abstraktion af hukommelsen. For virkelig at få adgang til ADC -adressen vil vi bruge mmap -funktionen.

"h2p_lw_spi_addr = virtual_base + ((usigneret lang) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (usigneret lang) (HW_REGS_MASK));"

Denne instruktion gør det muligt at tilføje en forskydning i begyndelsen af basisadressen for at nå adressen til den hukommelse, der er tildelt til ADC'en, og for at udføre den resulterende adresse en logik OG for at tage hensyn til maskeringen.

Derefter vil det kun være nødvendigt at aflæse markøren i programmet for at opnå dens værdi.

2. Skriv værdien af ADC'en i SPI'en

Manipulationen er identisk, denne gang giver vi mmap offset til at lande på adressen tildelt af SPI. Mens du skriver i SPI'en, specificerer den tekniske dokumentation, at du skal skrive til adressen + 1 værdien af adc.

"*(h2p_lw_spi_addr+1) = ((0x1 << 12) | *h2p_lw_adc_addr);"

Denne instruktion giver dig mulighed for at skrive til SPI'en. Bit 4, så 1 << 12, er faktisk den bit, der gør det muligt at aktivere SPI'en. Med en logisk OR giver vi derfor både aktiveringsbiten og værdien af ADC'en til SPI'en.

Trin 9: Digital erhvervelse af ADC fra kortet

Digital erhvervelse af ADC fra kortet
Digital erhvervelse af ADC fra kortet
Digital erhvervelse af ADC fra kortet
Digital erhvervelse af ADC fra kortet
Digital erhvervelse af ADC fra kortet
Digital erhvervelse af ADC fra kortet
Digital erhvervelse af ADC fra kortet
Digital erhvervelse af ADC fra kortet

Først og fremmest skal du indstille Ethernet -IP -adressen på din computer via Kontrolpanel -> Netværk -> Kortparmesaler. Vælg ethernet -interface for kortet, ejendommen, ipv4 -adressen, og indtast en fast IP, en maske osv …

Tilslut derefter kortet fra strømstikket med mikro -USB -kablet. Åbn Quartus -programmøren og start eksporten. Denne manipulation gentages efter hver strømafbrydelse af kortet.

Skift mikro -USB -stikket for at tilslutte denne gang ved siden af Ethernet -stikket. Nu med Putty bliver det nødvendigt at oprette forbindelse til kortet via et serielt link. Konfigurationen er synlig på billederne, ideen er at erstatte COM5 med COM efterfulgt af det nummer, du kan finde i din enhedshåndtering (højreklik på Windows -logoet for at åbne det).

Tryk på enter, du er forbundet.

Info for at genstarte projekt: - Fix ethernet ip svarende til kortet - Tænd kortet, hver gang du tænder for strømmen, er det nødvendigt at sætte med "program" under quartus det projekt, der er samlet på kortet. Dette gøres via mikro -USB -porten - For at kunne vise resultatet af programmet bruger vi mere mikro -USB, men UART - Med kitt konfigureret til seriel COM5 (eller 6 ur gestinnaire periph) Tilslut til kortet. - Indstil en adgangskode (passwd) - Indstil IP -adresse ifconfig ethxx IPchoice (IP ikke langt fra den for pc'ens eth) - Generer headeren i henhold til Qsys med terminalen indlejret (eksport PATH) - make - scp l exec i kort - udfør under kitt prog

Trin 10: FFT -beregning

FFT -beregning
FFT -beregning

For at få Fast Fourier Transform i vores C -program vil vi bruge et bibliotek skrevet af Mark Borgerding: Kiss FFT. Du kan downloade biblioteket her: https://kissfft.sourceforge.net/. Anvendelse af en FFT på et signal er nødvendig for at ændre og anvende signaleffekter. Det kan også tjene til at vise spektret af et signal.

Første trin i dit C -program består i at allokere hukommelse for at gemme FFT -resultatet. Hukommelsens størrelse afhænger af antallet af punkter, der bruges til at beregne FFT. Jo flere du har point, jo mere præcis vil FFT. Programmet kører dog langsommere og bruger mere hukommelse. Bemærk, at du får to arrays fra kiss_fft -funktionen: input og output fra funktionen (cx_in og cx_out)

Når vores array er fyldt med nye FFT -værdier, dvs. når r = Win - 1, behandler vi FFT. Med hensyn til displayet viser vi kun den positive del af spektret, da der er en symmetri mellem den negative del og den positive del.

Med hensyn til den vandrette akse reducerer vi topværdier med 100*højde/(højde²) for at skelne mellem hovedfrekvensernes toppe.

Vi bruger systemkaldet usleep for at definere en læsefrekvens for ADC -værdierne. Denne frekvens er i øjeblikket indstillet til 1, 5 Hz.

Trin 11: Visning af FFT

Visning af FFT
Visning af FFT
Visning af FFT
Visning af FFT

Baseret på et eksempel, giv på Adafruit TFT LCD-skærmen tilgængelig her: https://www.terasic.com/downloads/cd-rom/de0-nano-s… vi har programmeret NIOS i vores bestyrelse, så han kan læse ADC -værdien.

Så ADC -registret deles mellem NIOS og HPS, fordi ADC -værdierne vil blive brugt til at vise FFT på NIOS -skærmen, og de samme værdier vil blive skrevet på SPI'en for at blive udsendt af tavlen og til sidst konverteres af DAC for at få et analogt signal.

Trin 12: Montering

montage
montage

Vi er næsten færdige! Du skal samle alle dele af projet (indgangskredsløb, udgangskredsløb og tavlen). Sørg for at tilslutte delene til korrekte stifter i henhold til Quartus -projektet.

  1. Indgangskredsløbet sender lydsignalet, der er fanget af mikrofonen, forstærket, filtreret og forskudt.
  2. Programmet C, der findes på kortet, læser værdierne for ADC'en, som vi har set tidligere, og skriver den på SPI'en, så vi kan gendanne værdien på kortets GPIO.
  3. Derefter sender output GPIO fra SPI'en de oplysninger, der vil blive afkodet af vores DAC og forstærket ved at køre for at nå højttaleren.

Trin 13: Lydeffekter

Lydeffekter
Lydeffekter
Lydeffekter
Lydeffekter

Det eneste skridt tilbage er lydeffekter.

Tilgængelige effekter er:

  • Højfrekvent filter
  • Lavfrekvent filter

Du kan skifte mellem effekter takket være en knap. Denne knap ændrer en variabel i vores C -program, så den kan anvende den rigtige effekt.

Trin 14: [VALGFRIT] Fremstilling af hjelmen

[VALGFRIT] Fremstilling af hjelmen
[VALGFRIT] Fremstilling af hjelmen
[VALGFRIT] Fremstilling af hjelmen
[VALGFRIT] Fremstilling af hjelmen
[VALGFRIT] Fremstilling af hjelmen
[VALGFRIT] Fremstilling af hjelmen

Her er vi i det mest manuelle trin i projektet:

  1. Først limede vi de forskellige 3D -trykte dele af hjelmen.
  2. For at udfylde hullerne mellem de limede stykker tilføjede vi en finish ved hjælp af en 3D -pen.
  3. Vi polerede mellemrummet fyldt med pennen og hjelmen mere generelt, så maleriet holder godt bagefter.
  4. Vi malede hjelmen med 2 lag: Den første i antracitsort, tæt på, og den anden primærgrøn fra videre for at give nuancer af mørkere grøn.
  5. Endelig trykte vi logoet på vores skole på siden af hjelmen

Anbefalede: