Spartaanse stemwisselaarhelm: 14 stappe (met foto's)
Spartaanse stemwisselaarhelm: 14 stappe (met foto's)
Anonim
Spartaanse stemwisselaarhelm
Spartaanse stemwisselaarhelm
Spartaanse stemwisselaarhelm
Spartaanse stemwisselaarhelm

Hallo! Ons is 'n span van 4 studente van die Polytechnic -skool van die Sorbonne -universiteit:

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

Hierdie projek word gerealiseer as deel van ons studies, en het ten doel om 'n aantal gereedskap in die hand te neem en ons teoretiese prestasies te demonstreer.

Die beroemde voorwerp lyk soos 'n helm wat lyk soos dié van die held van 'n sekere videospeletjie waarvan die naam verlore gaan. Vir die ontwerpkant het ons ook 'n skerm wat die Fourier -transformasie van die klanksignaal uit die luidspreker vertoon. Die doel van hierdie headset is om die stem van die draer intyds te verander met behulp van 'n aantal selekteerbare effekte.

Opvoedkundige doelwitte:

  • Vang die geluid van 'n mikrofoon op
  • Versterk, filter, digitaliseer die sein
  • Besef die FFT van 'n sein
  • Wys hierdie FFT op 'n skerm
  • Sein sintese
  • Haal 'n geluid uit 'n luidspreker
  • Besef effekte op die klank (nagalm, eggo, ens.)

Noudat ons die agtergrond geplaas het en die projek voorgestel het, is dit tyd om dit in die hande te kry!

Stap 1: Vereistes 1/3 - Hardeware

Vereistes 1/3 - Hardeware
Vereistes 1/3 - Hardeware

Om u helm suksesvol te bou, benodig ons hardeware om die toestel te laat werk.

  • DE0-Nano-SoC Development Board deur Terasic + Adafruit TFT LCD-skerm (Arduino)
  • Toegang tot 'n 3D -drukker om die helm te maak (as u 'n universiteitstudent is wat nader aan u universiteit beweeg, het sommige laboratoriums toeganklik vir studente)
  • 'N Rekenaar met 'n internetverbinding en 'n minimum aansluiting (USB, Ethernet). U rekenaar moet ook 'n sterk verwerker hê, aangesien die opstel van programme op Qsys baie tyd neem.
  • (Nie nodig nie) 'n Drukker wat printplate (PCB) van Gerber -lêers vervaardig om die kringgrootte + 'n soldeerbout te krimp om die komponente op die PCB te plaas.
  • (Sterk aanbeveel): 'n goeie koffie om van u werk te geniet met ons instruksies:)

Stap 2: Vereistes 2/3 - Komponente vir u stroombaan

Vereistes 2/3 - Komponente vir u stroombaan
Vereistes 2/3 - Komponente vir u stroombaan
Vereistes 2/3 - Komponente vir u stroombaan
Vereistes 2/3 - Komponente vir u stroombaan
Vereistes 2/3 - Komponente vir u stroombaan
Vereistes 2/3 - Komponente vir u stroombaan

Hier is die komponente wat benodig word vir u stroombaan:

  • Klasversterker van die Texas Instrument LM386 AB -klas
  • Broodbord
  • Stel kabels Man-Male, Male-Female
  • LM358P Digital-to-Analoh converter (DAC)
  • Spreker
  • Klein mikrofoon wat in analoogkring gebruik word
  • 'N Spelstel met weerstande van 1kOhm tot 220kOhm
  • Kondensator 1.5nF
  • Kondensator 50nF
  • Kondensator 100nF
  • Kondensator 100uF
  • Kondensator 220 uF
  • x4 Kondensators 10uF

Stap 3: Vereistes 3/3 - Sagteware

Vereistes 3/3 - Sagteware
Vereistes 3/3 - Sagteware
Vereistes 3/3 - Sagteware
Vereistes 3/3 - Sagteware

Laastens, maar nie die minste nie, benodig u sagteware:

  • Quartus 15.1: Lite weergawe
  • A C -samesteller (byvoorbeeld gcc)
  • Altium vir PCB -ontwerp
  • Altera se SoC -ingeboude suite om met die SoC -kaart te kommunikeer

  • Stopverf

Stap 4: Invoerkring

Invoerkring
Invoerkring
Invoerkring
Invoerkring
Invoerkring
Invoerkring
Invoerkring
Invoerkring

Kom ons bou die kring. Gebruik die prentjie hierbo van die stroombaan om dit op u broodbord te monteer. U sien ook die prentjie van die broodbord en die kring binne om te sien hoe penne verbind word. Die hele stroombaan word gevoed met 'n 5V gelykstroom (DC). Hiervoor kan u 'n 5V-battery met 'n USB-B-omskakelaar of 'n funksiegenerator gebruik.

Enkele herinnerings:

  • 5V -kragtoevoer en die grond is verbind op afsonderlike horisontale lyne van die broodbord
  • As u twee komponente parallel wil verbind, plaas dit in 'n gemeenskaplike lyn van die broodbord
  • As u twee seriële komponente wil verbind, moet die komponente slegs een pen in 'n gemeenskaplike lyn van die broodbord hê.

Moenie huiwer om 'n spesiale tutoriaal te sien oor hoe om 'n broodbord te gebruik nie en 'n stroombaan daarop te bou. Vergeet ook nie om die penposisie van die LM358P Audio Amplifier aandagtig te lees nie (sien prent hierbo)

Stap 5: Uitgangskring

Uitsetkring
Uitsetkring
Uitsetkring
Uitsetkring
Uitsetkring
Uitsetkring
Uitsetkring
Uitsetkring

Heeltemal dieselfde instruksies as Stap 4. Die vier insette: SDI, nie CS, SCK, nie LDAC kom van u DE0-Nano-Soc Board. Ons sal later sien hoe om dit te genereer.

Moenie vergeet om die penposisies van die LM386 Audio Amplifier aandagtig te lees nie (sien prent hierbo)

Stap 6: [OPSIONEEL] Die skep van 'n gedrukte stroombaan en soldeeronderdele

[OPSIONEEL] Maak borad- en soldeerkomponente met 'n gedrukte kring
[OPSIONEEL] Maak borad- en soldeerkomponente met 'n gedrukte kring
[OPSIONEEL] Maak borad- en soldeerkomponente met 'n gedrukte kring
[OPSIONEEL] Maak borad- en soldeerkomponente met 'n gedrukte kring
[OPSIONEEL] Maak borad- en soldeerkomponente met 'n gedrukte kring
[OPSIONEEL] Maak borad- en soldeerkomponente met 'n gedrukte kring

As u die geluk het om 'n printplaatdrukker te besit of een te kan gebruik, gaan ons ons eie Printed Circuit Board (PCB) skep. Let daarop dat hierdie stap opsioneel is. Hierdie stap is slegs om u kring van 'n broodbord na 'n PCB te skuif.

U benodig hierdie 2 GERBER -lêers.

Hierdie lêers is op Altium gemaak. Gebruik dit op u PCB -drukkersagteware om u PCB te druk. Sodra u u PCB gekry het, moet u seker maak dat u PCB skoon is en dat die snitte korrek gedruk is.

Hier kom die werklike saak: soldeer. Die 2 foto's hierbo is die kaart van die kring op die PCB. Elke komponent het name (R6, C4, MK1, ens.). Foto's in stap 4 en 5 toon die komponentparameters (weerstand, geleiding..). Plaas elke komponent van u broodbord na die PCB volgens hul name.

Nadat u alles met u soldeerbout gesoldeer het, toets elke komponent met 'n voltmeter om te sien of daar 'n kortsluiting is.

Stap 7: SoC -opstelling

SoC -opstelling
SoC -opstelling
SoC -opstelling
SoC -opstelling

Wat die SoC -opstelling betref, moet u 'n paar opdragte en skrifte in die SoC -ingebedde suite in 'n terminale uitvoer. Om dit te kan doen, moet u $ PATH byvoeg. PATH word binne 'n terminale gebruik om te sê om na 'n lêer in die dopgehou te soek wat deur die pad gegee word wanneer u 'n opdrag uitvoer. Om dit te doen, tik die volgende opdragreël:

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

Tik dan die opdragreël om opskrifte uit 'n sof -lêer te genereer. U kry die sof -lêer deur u projek op Quartus op te stel. Om dit te doen, tik:./generate_header.

Stap 8: Programmering van C HPS

Programmering van C HPS
Programmering van C HPS

Ons moet 2 dinge in hierdie deel besef, naamlik lees die waarde van die ADC en skryf dit in die SPI.

1. Lees die waarde van die ADC

Die adres van die geheue waarin die ADC vervat is, is nie direk toeganklik nie; die Linux -stelsel wat op die kaart voorkom, is 'n abstraksie van die geheue. Om regtig toegang tot die ADC -adres te verkry, gebruik ons die mmap -funksie.

"h2p_lw_spi_addr = virtual_base + ((ongeteken lank) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (ongeteken lank) (HW_REGS_MASK));"

Met hierdie instruksie kan 'n offset aan die begin van die basisadres bygevoeg word om die adres van die geheue wat vir die ADC toegeken is, te bereik, en om 'n logika op die resulterende adres uit te voer EN om die maskering in ag te neem.

Daarna is dit slegs nodig om die wyser in die program te verwys om die waarde daarvan te verkry.

2. Skryf die waarde van die ADC in die SPI neer

Die manipulasie is identies; hierdie keer gee ons die mmap die offset om te land op die adres wat deur die SPI toegeken is. Terwyl u in die SPI skryf, spesifiseer die tegniese dokumentasie dat u na die adres + 1 die waarde van die advertensie moet skryf.

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

Met hierdie instruksie kan u aan die SPI skryf. Bit 4, dus 1 << 12, is inderdaad die bit waarmee u die SPI kan aktiveer. Met 'n logiese OF gee ons dus beide die aktiveringsbit en die waarde van die ADC aan die SPI.

Stap 9: Digitale verkryging van die ADC vanaf die kaart

Digitale verkryging van die ADC vanaf die kaart
Digitale verkryging van die ADC vanaf die kaart
Digitale verkryging van die ADC vanaf die kaart
Digitale verkryging van die ADC vanaf die kaart
Digitale verkryging van die ADC vanaf die kaart
Digitale verkryging van die ADC vanaf die kaart
Digitale verkryging van die ADC vanaf die kaart
Digitale verkryging van die ADC vanaf die kaart

In die eerste plek moet u die Ethernet -IP -adres van u rekenaar instel via die Configuratiescherm -> Netwerk -> Kaartparme. Kies die ethernet -koppelvlak van die kaart, eiendom, ipv4 -adres en voer 'n vaste IP, 'n masker ens in …

Koppel dan die kaart aan die kant van die kragaansluiting met die mikro -USB -kabel. Maak die Quartus -programmeerder oop en begin die uitvoer. Hierdie manipulasie word herhaal na elke uitskakeling van die kaart.

Verander die mikro -USB -aansluitkabel om hierdie keer langs die Ethernet -aansluiting aan te sluit. Nou, met Putty, sal dit nodig wees om via die seriële skakel aan te sluit op die kaart. Die opset is sigbaar op die foto's; die idee is om COM5 deur COM te vervang, gevolg deur die nommer wat u in u toestelbestuurder kan vind (klik met die rechtermuisknop op die Windows -logo om dit oop te maak).

Druk enter, jy is verbind.

Inligting om die projek weer te begin: - Herstel ethernet -ip wat ooreenstem met die kaart - Skakel die kaart aan, elke keer as u die krag aanskakel, moet u die projek wat in die kaart saamgestel is, onder 'program' plaas. Dit word gedoen via die mikro -USB -poort - Om die resultaat van die program te kan vertoon, gebruik ons meer mikro -USB, maar UART - Met stopverf gekonfigureer vir seriële COM5 (of 6 horlosie gestinnaire periph) Koppel aan die kaart. - Stel 'n wagwoord in (passwd) - Stel IP -adres in asconfig ethxx IPchoice (IP nie ver daarvan vir die et van die rekenaar nie) - Genereer die kop volgens Qsys met die ingeslote terminale (uitvoer PATH) - maak - scp l exec in die kaart - voer die prog uit onder stopverf

Stap 10: FFT -berekening

FFT berekening
FFT berekening

Om die Fast Fourier Transform in ons C -program te kry, gebruik ons 'n biblioteek wat geskryf is deur Mark Borgerding: Kiss FFT. U kan die biblioteek hier aflaai: https://kissfft.sourceforge.net/. Om 'n FFT op 'n sein toe te pas, is nodig om seineffekte aan te pas en toe te pas. Dit kan ook dien om die spektrum van 'n sein te vertoon.

Die eerste stap in u C -program is om geheue toe te ken om die FFT -resultaat te stoor. Die grootte van die geheue hang af van die aantal punte wat gebruik word om die FFT te bereken. Hoe meer punte u het, hoe meer akkuraat sal die FFT wees. Die program sal egter stadiger werk en meer geheue gebruik. Let daarop dat u twee skikkings van die kiss_fft -funksie kry: die invoer en die uitvoer van die funksie (cx_in en cx_out)

Sodra ons skikking gevul is met nuwe FFT -waardes, dws wanneer r = Win - 1, verwerk ons die FFT. Wat die vertoning betref, vertoon ons slegs die positiewe deel van die spektrum, aangesien daar 'n simmetrie is tussen die negatiewe deel en die positiewe deel.

Wat die horisontale as betref, verminder ons die piekwaardes met 100*hoogte/(hoogte²) om die pieke van die hooffrekwensies te onderskei.

Ons gebruik die usleep -stelseloproep om die leesfrekwensie vir die ADC -waardes te definieer. Hierdie frekwensie is tans ingestel op 1, 5 Hz.

Stap 11: Vertoon die FFT

Die vertoning van die FFT
Die vertoning van die FFT
Die vertoning van die FFT
Die vertoning van die FFT

Gegee op 'n voorbeeld op die Adafruit TFT LCD-skerm wat hier beskikbaar is: https://www.terasic.com/downloads/cd-rom/de0-nano-s … ons het die NIOS van ons raad geprogrammeer sodat hy kan lees die ADC waarde.

Die ADC -register word dus gedeel tussen die NIOS en die HPS omdat die ADC -waardes gebruik sal word om die FFT op die NIOS -skerm te vertoon, en dieselfde waardes sal op die SPI geskryf word om van die bord uitgereik te word en uiteindelik omgeskakel te word deur die DAC om 'n analoog sein te kry.

Stap 12: Montering

Vergadering
Vergadering

Ons is amper klaar! U moet elke deel van die projek (toegangskring, uitsetkring en die bord) bymekaarmaak. Maak seker dat u die dele volgens die Quartus -projek met die regte penne verbind.

  1. Die ingangskring stuur die klanksein wat deur die mikrofoon vasgelê word, versterk, gefiltreer en verreken.
  2. Die program C wat op die kaart voorkom, lees die waardes van die ADC soos ons voorheen gesien het, en skryf dit op die SPI sodat ons die waarde op die GPIO van die kaart kan herwin.
  3. Dan stuur die uitset GPIO van die SPI die inligting wat deur ons DAC gedekodeer sal word en versterk word deur te hardloop om die luidspreker te bereik.

Stap 13: Klankeffekte

Byklanke
Byklanke
Byklanke
Byklanke

Die enigste stap wat oorgebly het, is byklanke.

Beskikbare effekte is:

  • Hoë frekwensie filter
  • Lae frekwensie filter

Danksy 'n knoppie kan u tussen effekte wissel. Hierdie knoppie verander 'n veranderlike in ons C -program, sodat dit die regte effek kan toepas.

Stap 14: [OPSIONEEL] Maak die helm

[OPSIONEEL] Maak die helm
[OPSIONEEL] Maak die helm
[OPSIONEEL] Maak die helm
[OPSIONEEL] Maak die helm
[OPSIONEEL] Maak die helm
[OPSIONEEL] Maak die helm

Hier is ons in die mees handmatige stap van die projek:

  1. Eers het ons die verskillende 3D -gedrukte dele van die helm vasgeplak.
  2. Om die gapings tussen die vasgeplakte stukke te vul, voeg ons 'n afwerking by met 'n 3D -pen.
  3. Ons het die tussenruimtes met die pen en die helm meer poleer, sodat die skildery daarna goed hou.
  4. Ons het die helm met 2 lae geverf: die eerste in antrasiet swart, van naby, en 'n tweede van primêre groen van verder om skakerings van donkerder groen te gee.
  5. Uiteindelik het ons die logo van ons skool aan die kant van die helm gedruk