Šlem Spartan Voice Changer: 14 koraka (sa slikama)
Šlem Spartan Voice Changer: 14 koraka (sa slikama)
Anonim
Šlem Spartan Voice Changer
Šlem Spartan Voice Changer
Šlem Spartan Voice Changer
Šlem Spartan Voice Changer

Zdravo! Mi smo tim od 4 učenika sa Politehničke škole Univerziteta Sorbonne:

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

Ovaj projekt je realiziran kao dio naših studija i ima za cilj uzeti u obzir brojne alate, kao i pokazati naša teorijska dostignuća.

Čuveni objekt poprima izgled kacige koja liči na junaka određene video igre čije će ime biti izgubljeno. Što se tiče dizajna, imamo i ekran koji prikazuje Fourierovu transformaciju audio signala koji izlazi iz zvučnika. Svrha ovih slušalica je promijeniti glas mobilnog operatera u stvarnom vremenu koristeći brojne efekte koji se mogu birati.

Obrazovni ciljevi:

  • Snimite zvuk sa mikrofona
  • Pojačajte, filtrirajte, digitalizirajte signal
  • Ostvarite FFT signala
  • Prikažite ovaj FFT na ekranu
  • Sinteza signala
  • Izvucite zvuk iz zvučnika
  • Ostvarite efekte na audio zvuk (odjek, eho itd …)

Sada kada smo stavili pozadinu i predstavili projekt, vrijeme je da ga uzmete u ruke!

Korak 1: Zahtjevi 1/3 - Hardver

Zahtjevi 1/3 - Hardver
Zahtjevi 1/3 - Hardver

Da bismo uspješno izgradili vašu kacigu, trebat će nam neki hardver za pokretanje uređaja.

  • DE0-Nano-SoC razvojna ploča kompanije Terasic + Adafruit TFT LCD ekran (Arduino)
  • Pristup 3D štampaču za izradu kacige (Ako ste student koji se približava vašem univerzitetu, neki imaju laboratorije dostupne studentima)
  • Računalo s internetskom vezom i minimalnim povezivanjem (USB, Ethernet). Vaše računalo također mora imati snažan procesor jer sastavljanje programa na Qsys -u oduzima puno vremena.
  • (Nije potrebno) Štampač koji izrađuje štampane ploče (PCB) od Gerber datoteka radi smanjivanja veličine kola + lemilice za stavljanje komponenti na PCB.
  • (Snažno preporučeno): Dobra kava za uživanje u poslu s našim Instructable:)

Korak 2: Zahtjevi 2/3 - Komponente za vaš krug

Zahtjevi 2/3 - Komponente za vaš krug
Zahtjevi 2/3 - Komponente za vaš krug
Zahtjevi 2/3 - Komponente za vaš krug
Zahtjevi 2/3 - Komponente za vaš krug
Zahtjevi 2/3 - Komponente za vaš krug
Zahtjevi 2/3 - Komponente za vaš krug

Evo komponenti potrebnih za vaš krug:

  • Audio pojačalo klase AB Texas Instrument LM386 AB
  • BreadBoard
  • Set muško-muških, muško-ženskih kabela
  • LM358P digitalno-analogni pretvarač (DAC)
  • Zvučnik
  • Mali mikrofon koji se koristi u analognom krugu
  • Igrački skup otpornika od 1kOhm do 220kOhm
  • Kondenzator 1.5nF
  • Kondenzator 50nF
  • Kondenzator 100nF
  • Kondenzator 100uF
  • Kondenzator 220uF
  • x4 Kondenzatori 10uF

Korak 3: Zahtjevi 3/3 - Softver

Zahtjevi 3/3 - Softver
Zahtjevi 3/3 - Softver
Zahtjevi 3/3 - Softver
Zahtjevi 3/3 - Softver

Na kraju, ali ne i najmanje važno, trebat će vam softver:

  • Quartus 15.1: Lite verzija
  • C kompajler (gcc na primjer)
  • Altium za dizajn PCB -a
  • Alterin SoC ugrađeni paket za komunikaciju sa SoC kartom

  • Git

Korak 4: Ulazni krug

Ulazni krug
Ulazni krug
Ulazni krug
Ulazni krug
Ulazni krug
Ulazni krug
Ulazni krug
Ulazni krug

Izgradimo kolo. Upotrijebite gornju sliku kola kako biste je sastavili na matičnoj ploči. Također ćete vidjeti sliku BreadBoarda i unutrašnje kolo da vidite kako su pinovi povezani. Cijeli krug napaja se istosmjernom strujom (DC) od 5 V. Za to možete koristiti 5V bateriju s USB-B pretvaračem ili generator funkcija.

Neki podsjetnici:

  • Napajanje 5V i uzemljenje povezani su na odvojenim vodoravnim vodovima ploče
  • Ako želite spojiti 2 komponente paralelno, stavite ih u zajedničku liniju ploče
  • Ako želite spojiti 2 serijske komponente, komponente moraju imati samo jedan pin u zajedničkoj liniji matične ploče.

Ne ustručavajte se pogledati namjenski vodič o korištenju matične ploče i povezivanju kola na njoj. Takođe ne zaboravite pažljivo pročitati položaj pina audio pojačala LM358P (pogledajte gornju sliku)

Korak 5: Izlazni krug

Izlazni krug
Izlazni krug
Izlazni krug
Izlazni krug
Izlazni krug
Izlazni krug
Izlazni krug
Izlazni krug

Potpuno iste upute kao i korak 4. Četiri ulaza: SDI, a ne CS, SCK, a ne LDAC, dolaze s vaše ploče DE0-Nano-Soc. Kasnije ćemo vidjeti kako ih generirati.

Ne zaboravite pažljivo pročitati položaje pinova audio pojačala LM386 (pogledajte gornju sliku)

Korak 6: [NEOBVEZNO] Kreiranje Borad -a za štampanje i komponenti za lemljenje

[NEOBVEZNO] Stvaranje borada i komponenti za lemljenje štampanog kola
[NEOBVEZNO] Stvaranje borada i komponenti za lemljenje štampanog kola
[NEOBVEZNO] Stvaranje borada i komponenti za lemljenje štampanog kola
[NEOBVEZNO] Stvaranje borada i komponenti za lemljenje štampanog kola
[NEOBVEZNO] Stvaranje borada i komponenti za lemljenje štampanog kola
[NEOBVEZNO] Stvaranje borada i komponenti za lemljenje štampanog kola

Ako imate sreće da posjedujete štampač na ploči ili ga možete koristiti, stvorit ćemo vlastitu štampanu ploču (PCB). Imajte na umu da je ovaj korak opcionalan. Ovaj korak sastoji se samo od premještanja vašeg kruga s matične ploče na PCB.

Trebat će vam ove 2 GERBER datoteke.

Ove datoteke su napravljene na Altiumu. Koristite ih na softveru štampača za PCB da biste odštampali PCB. Nakon što nabavite PCB, provjerite je li PCB čist i jesu li pjesme ispravno ispisane.

Sada dolazi prava stvar: lemljenje. Gornje 2 slike su mape kola na PCB -u. Svaka komponenta ima nazive (R6, C4, MK1 itd.). Slike u koraku 4 i 5 prikazuju parametre komponenti (otpor, vodljivost..). Postavite svaku komponentu s matične ploče na tiskanu ploču prema njihovim nazivima.

Nakon što sve zalemite lemilicom, ispitajte sve komponente voltmetrom da biste provjerili ima li kratkog spoja.

Korak 7: SoC podešavanje

SoC Setup
SoC Setup
SoC Setup
SoC Setup

Što se tiče postavljanja SoC -a, morat ćete pokrenuti neke naredbe i skripte uključene u SoC ugrađeni paket unutar terminala. Da biste to učinili, morate dodati nekih $ PATH. PATH se unutar terminala koristi za traženje datoteke u direktorijima koje daje putanja prilikom izvođenja naredbe. Da biste to učinili, upišite sljedeću naredbenu liniju:

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

Zatim upišite naredbenu liniju za generiranje zaglavlja iz sof datoteke. Soft datoteku dobijate sastavljanjem svog projekta na Quartusu. Da biste to učinili, upišite:./generate_header.

Korak 8: Programiranje C HPS

Programiranje C HPS
Programiranje C HPS

Moramo shvatiti 2 stvari u ovom dijelu, naime pročitati pročitati vrijednost ADC -a i upisati je u SPI.

1. Očitajte vrijednost ADC -a

Adresa memorije u kojoj se nalazi ADC nije izravno dostupna, zapravo linux sustav prisutan na kartici postavlja apstrakciju memorije. Za stvarno pristupanje ADC adresi koristit ćemo funkciju mmap.

"h2p_lw_spi_addr = virtual_base + ((unsigned long) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (unsigned long) (HW_REGS_MASK));"

Ova instrukcija dopušta da se na početku osnovne adrese doda pomak kako bi se došlo do adrese memorije dodijeljene za ADC, te da se na rezultirajućoj adresi izvede logika I da se uzme u obzir maskiranje.

Nakon toga, bit će potrebno samo dereferencirati pokazivač u programu da bi se dobila njegova vrijednost.

2. Upišite vrijednost ADC -a u SPI

Manipulacija je identična, ovaj put mmapi dajemo pomak da sleti na adresu dodijeljenu od SPI. Dok pišete u SPI, tehnička dokumentacija navodi da morate na adresu + 1 upisati vrijednost adc -a.

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

Ovo uputstvo vam omogućava da pišete na SPI. Zaista bit 4, dakle 1 << 12, je bit koji omogućava aktiviranje SPI -a. S logičkim ILI, stoga dajemo i aktivacijski bit i vrijednost ADC -a SPI -ju.

Korak 9: Digitalno preuzimanje ADC -a sa kartice

Digitalno preuzimanje ADC -a s kartice
Digitalno preuzimanje ADC -a s kartice
Digitalno preuzimanje ADC -a s kartice
Digitalno preuzimanje ADC -a s kartice
Digitalno preuzimanje ADC -a s kartice
Digitalno preuzimanje ADC -a s kartice
Digitalno preuzimanje ADC -a s kartice
Digitalno preuzimanje ADC -a s kartice

Prije svega, morat ćete postaviti Ethernet IP adresu svog računara putem Kontrolne ploče -> Mreža -> Parmesals kartice. Odaberite ethernet sučelje kartice, svojstvo, ipv4 adresu i unesite fiksni IP, masku itd …

Zatim povežite karticu sa strane utičnice za napajanje pomoću mikro USB kabela. Otvorite Quartus programator i pokrenite izvoz. Ova manipulacija će se ponoviti nakon svakog isključivanja kartice.

Promenite utikač mikro USB kabla, da biste se ovaj put povezali pored Ethernet priključka. Sada će s Puttyjem biti potrebno povezati se na karticu putem serijske veze. Konfiguracija je vidljiva na fotografijama, a ideja je da se COM5 zamijeni COM -om nakon čega slijedi broj koji možete pronaći u upravitelju uređaja (desnom tipkom miša kliknite logotip Windowsa da biste ga otvorili).

Pritisnite enter, povezani ste.

Podaci za ponovno pokretanje projekta: - Popravite ethernet ip koji odgovara kartici - Uključite karticu, svaki put kada uključite napajanje, potrebno je sa "program" staviti pod quartus projekt sastavljen na kartici. To se radi putem mikro -USB priključka - Da bismo mogli prikazati rezultat programa, koristimo više mikro USB -a, ali UART - Sa kitom konfiguriranim za serijski COM5 (ili periferiju sa 6 gledatelja) Povežite se na karticu. - Postavite lozinku (passwd) - Postavite IP adresu ifconfig ethxx IPchoice (IP nedaleko od one za eth računala) - Generirajte zaglavlje prema Qsys -u s ugrađenim terminalom (izvoz PATH) - napravite - scp l exec u map - izvršava prog pod kitom

Korak 10: Proračun FFT -a

Proračun FFT -a
Proračun FFT -a

Da bismo dobili brzu Fourierovu transformaciju u naš C program, koristit ćemo biblioteku koju je napisao Mark Borgerding: Kiss FFT. Biblioteku možete preuzeti ovdje: https://kissfft.sourceforge.net/. Primjena FFT -a na signal neophodna je za izmjenu i primjenu efekata signala. Može poslužiti i za prikaz spektra signala.

Prvi korak u vašem C programu sastoji se u dodjeljivanju memorije za spremanje rezultata FFT -a. Veličina memorije ovisi o broju točaka korištenih za izračunavanje FFT -a. Što više imate bodova, FFT će biti tačniji. Međutim, program će raditi sporije i koristit će više memorije. Imajte na umu da ćete od funkcije kiss_fft dobiti dva niza: ulaz i izlaz funkcije (cx_in i cx_out)

Kada se naš niz napuni novim FFT vrijednostima, tj. Kada je r = Win - 1, obrađujemo FFT. Što se tiče prikaza, mi prikazujemo samo pozitivni dio spektra, jer postoji simetrija između negativnog i pozitivnog dijela.

Što se tiče horizontalne osi, smanjujemo vršne vrijednosti za 100*visinu/(visinu²) kako bismo razlikovali vrhove glavnih frekvencija.

Koristimo sistemski poziv usleep kako bismo definirali frekvenciju čitanja za ADC vrijednosti. Ova frekvencija je trenutno postavljena na 1,5 Hz.

Korak 11: Prikaz FFT -a

Prikaz FFT -a
Prikaz FFT -a
Prikaz FFT -a
Prikaz FFT -a

Na osnovu primjera danog na Adafruit TFT LCD ekranu dostupnom ovdje: https://www.terasic.com/downloads/cd-rom/de0-nano-s… programirali smo NIOS našeg odbora tako da može čitati ADC vrijednost.

Dakle, ADC registar se dijeli između NIOS -a i HPS -a jer će se vrijednosti ADC -a koristiti za prikaz FFT -a na ekranu NIOS -a, a te iste vrijednosti bit će zapisane na SPI -u kako bi se izbacile s ploče i na kraju pretvorile preko DAC -a za dobivanje analognog signala.

Korak 12: Montaža

Montaža
Montaža

Skoro smo gotovi! Morat ćete sastaviti svaki dio projekta (ulazni krug, izlazni krug i ploča). Obavezno spojite dijelove na ispravne pinove prema Quartus projektu.

  1. Ulazni krug će poslati audio signal snimljen mikrofonom, pojačan, filtriran i pomaknut.
  2. Program C koji je prisutan na kartici očitavat će vrijednosti ADC -a kao što smo ranije vidjeli i upisat će ih na SPI tako da možemo vratiti vrijednost na GPIO kartice.
  3. Zatim će izlazni GPIO SPI -a prenijeti informacije koje će dekodirati naš DAC i pojačati trčanjem do zvučnika.

Korak 13: Zvučni efekti

Zvučni efekti
Zvučni efekti
Zvučni efekti
Zvučni efekti

Jedini preostali korak su zvučni efekti.

Dostupni efekti su:

  • Filter visoke frekvencije
  • Filter niske frekvencije

Pomoću dugmeta možete prebacivati između efekata. Ovo dugme će promijeniti varijablu u našem C programu, tako da može primijeniti pravi efekt.

Korak 14: [OPCIONALNO] Izrada kacige

[NEOBVEZNO] Izrada kacige
[NEOBVEZNO] Izrada kacige
[NEOBVEZNO] Izrada kacige
[NEOBVEZNO] Izrada kacige
[NEOBVEZNO] Izrada kacige
[NEOBVEZNO] Izrada kacige

Ovdje smo u najručnijem koraku projekta:

  1. Prvo smo zalijepili različite 3D ispisane dijelove kacige.
  2. Kako bismo popunili praznine između zalijepljenih komada, dodali smo završnu obradu pomoću 3D olovke.
  3. Općenito smo polirali međuprostore ispunjene olovkom i kacigom tako da slika nakon toga dobro ostane.
  4. Obojili smo kacigu u 2 sloja: prvi u antracitno -crnoj boji izbliza, a drugi primarno zelene od dalje kako bismo dobili nijanse tamnije zelene.
  5. Na kraju smo odštampali logo naše škole sa strane kacige