Turinys:

„Spartan Voice Changer“šalmas: 14 žingsnių (su nuotraukomis)
„Spartan Voice Changer“šalmas: 14 žingsnių (su nuotraukomis)

Video: „Spartan Voice Changer“šalmas: 14 žingsnių (su nuotraukomis)

Video: „Spartan Voice Changer“šalmas: 14 žingsnių (su nuotraukomis)
Video: altura de alguns personagens de mortal Kombat parte 1 2024, Lapkritis
Anonim
„Spartan“balso keitimo šalmas
„Spartan“balso keitimo šalmas
„Spartan“balso keitimo šalmas
„Spartan“balso keitimo šalmas

Sveiki! Esame 4 studentų komanda iš Sorbonos universiteto politechnikos mokyklos:

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

Šis projektas yra įgyvendinamas kaip mūsų studijų dalis, jo tikslas - pasinaudoti daugybe priemonių ir parodyti mūsų teorinius pasiekimus.

Garsusis objektas įgauna šalmą, panašų į tam tikro vaizdo žaidimo herojaus, kurio vardas bus prarastas. Dizaino pusėje taip pat turime ekraną, kuriame rodomas iš garsiakalbio sklindančio garso signalo Furjė transformacija. Šios laisvų rankų įrangos paskirtis yra pakeisti operatoriaus balsą realiuoju laiku naudojant daugybę pasirenkamų efektų.

Ugdymo tikslai:

  • Fiksuokite garsą iš mikrofono
  • Sustiprinkite, filtruokite, skaitmeninkite signalą
  • Supraskite signalo FFT
  • Rodyti šį FFT ekrane
  • Signalo sintezė
  • Ištraukite garsą iš garsiakalbio
  • Supraskite garso garso efektus (aidas, aidas ir kt.)

Dabar, kai išsiaiškinome pagrindą ir pristatėme projektą, atėjo laikas į jį įsitraukti!

1 veiksmas: reikalavimai 1/3 - Aparatūra

Reikalavimai 1/3 - Aparatūra
Reikalavimai 1/3 - Aparatūra

Norėdami sėkmingai sukurti šalmą, mums reikės tam tikros aparatūros, kad paleistume įrenginį.

  • „DE0-Nano-SoC“plėtros lenta, sukurta „Terasic + Adafruit“TFT LCD ekrano („Arduino“)
  • Prieiga prie 3D spausdintuvo, kad būtų galima pasidaryti šalmą (jei esate universiteto studentas, arčiau savo universiteto, kai kurie turi laboratorijas, prieinamas studentams)
  • Kompiuteris su interneto ryšiu ir minimaliu ryšiu (USB, Ethernet). Jūsų kompiuteris taip pat turi turėti stiprų procesorių, nes „Qsys“programų sudarymas užima daug laiko.
  • (Nereikalaujama) Spausdintuvas, gaminantis spausdintines plokštes (PCB) iš Gerber failų, siekiant sumažinti grandinės dydį + lituoklis, skirtas sudėti komponentus į PCB.
  • (Primygtinai rekomenduojama): gera kava, skirta mėgautis jūsų darbu su mūsų „Instructable“:)

2 žingsnis: 2/3 reikalavimai - jūsų grandinės komponentai

Reikalavimai 2/3 - Jūsų grandinės komponentai
Reikalavimai 2/3 - Jūsų grandinės komponentai
Reikalavimai 2/3 - Jūsų grandinės komponentai
Reikalavimai 2/3 - Jūsų grandinės komponentai
Reikalavimai 2/3 - Jūsų grandinės komponentai
Reikalavimai 2/3 - Jūsų grandinės komponentai

Čia yra jūsų grandinei reikalingi komponentai:

  • „Texas Instrument LM386 AB“klasės garso stiprintuvas
  • Bandomoji Lenta
  • Kabelių rinkinys „Male-Male“, „Male-Female“
  • LM358P skaitmeninis-analoginis konverteris (DAC)
  • Pranešėjas
  • Mažas mikrofonas, naudojamas analoginėje grandinėje
  • Žaidimo rezistorių rinkinys nuo 1kOhm iki 220kOhm
  • Kondensatorius 1,5 nF
  • Kondensatorius 50 nF
  • Kondensatorius 100 nF
  • Kondensatorius 100uF
  • Kondensatorius 220uF
  • x4 10uF kondensatoriai

3 žingsnis: Reikalavimai 3/3 - Programinė įranga

Reikalavimai 3/3 - Programinė įranga
Reikalavimai 3/3 - Programinė įranga
Reikalavimai 3/3 - Programinė įranga
Reikalavimai 3/3 - Programinė įranga

Galiausiai, jums reikės programinės įrangos:

  • „Quartus 15.1“: supaprastinta versija
  • C kompiliatorius (pvz., Gcc)
  • Altium PCB dizainui
  • „Altera“įterptas SoC rinkinys, skirtas bendrauti su SoC žemėlapiu
  • Glaistas

4 žingsnis: įvesties grandinė

Įvesties grandinė
Įvesties grandinė
Įvesties grandinė
Įvesties grandinė
Įvesties grandinė
Įvesties grandinė
Įvesties grandinė
Įvesties grandinė

Sukurkime grandinę. Naudokite aukščiau pateiktą grandinės paveikslėlį, kad surinktumėte jį ant savo duonos lentos. Taip pat pamatysite „BreadBoard“paveikslėlį ir viduje esančią grandinę, kad pamatytumėte, kaip prijungti kaiščiai. Visa grandinė maitinama 5 V nuolatine srove (DC). Tam galite naudoti 5 V bateriją su USB-B keitikliu arba funkcijų generatoriumi.

Keletas priminimų:

  • 5 V maitinimo šaltinis ir žemė yra prijungti prie atskirų horizontalių duonos lentos linijų
  • Jei norite lygiagrečiai prijungti 2 komponentus, įdėkite juos į bendrą duonos lentos liniją
  • Jei norite prijungti 2 nuoseklius komponentus, komponentai turi turėti tik vieną kaištį bendroje lentos eilutėje.

Nedvejodami žiūrėkite specialią pamoką, kaip naudoti duonos lentą, ir ant jos uždėkite grandinę. Taip pat nepamirškite atidžiai perskaityti LM358P garso stiprintuvo kaiščio padėties (žr. Paveikslėlį aukščiau)

5 žingsnis: išvesties grandinė

Išėjimo grandinė
Išėjimo grandinė
Išėjimo grandinė
Išėjimo grandinė
Išėjimo grandinė
Išėjimo grandinė
Išėjimo grandinė
Išėjimo grandinė

Panašios instrukcijos kaip ir 4 veiksme. Keturios įvestys: SDI, o ne CS, SCK, o ne LDAC yra iš jūsų DE0-Nano-Soc plokštės. Kaip juos sugeneruoti, pamatysime vėliau.

Nepamirškite atidžiai perskaityti garso stiprintuvo LM386 kaiščių padėties (žr. Paveikslėlį aukščiau)

6 veiksmas: [PASIRENKAMA] Spausdintos grandinės Borad ir litavimo komponentų kūrimas

[PASIRENKAMA] Spausdintos grandinės „Borad“ir litavimo komponentų kūrimas
[PASIRENKAMA] Spausdintos grandinės „Borad“ir litavimo komponentų kūrimas
[PASIRENKAMA] Spausdintos grandinės „Borad“ir litavimo komponentų kūrimas
[PASIRENKAMA] Spausdintos grandinės „Borad“ir litavimo komponentų kūrimas
[PASIRENKAMA] Spausdintos grandinės „Borad“ir litavimo komponentų kūrimas
[PASIRENKAMA] Spausdintos grandinės „Borad“ir litavimo komponentų kūrimas

Jei jums pasisekė turėti plokštės spausdintuvą arba galite jį naudoti, mes sukursime savo spausdintinę plokštę (PCB). Atminkite, kad šis žingsnis yra neprivalomas. Šis žingsnis yra tik perkelti grandinę iš duonos lentos į PCB.

Jums reikės šių 2 GERBER failų.

Šie failai buvo sukurti „Altium“. Naudokite juos savo PCB spausdintuvo programinėje įrangoje, kad spausdintumėte PCB. Gavę savo PCB, įsitikinkite, kad jūsų PCB yra švari ir ar takeliai yra teisingai atspausdinti.

Dabar čia ateina tikrasis dalykas: litavimas. 2 aukščiau pateiktos nuotraukos yra PCB grandinės žemėlapis. Kiekvienas komponentas turi pavadinimus (R6, C4, MK1 ir kt.). 4 ir 5 žingsnių paveikslėliuose rodomi komponentų parametrai (atsparumas, laidumas..). Įdėkite kiekvieną komponentą iš savo duonos lentos į PCB pagal jų pavadinimus.

Lituodami viską su lituokliu, išbandykite visus komponentus voltmetru ir patikrinkite, ar nėra trumpojo jungimo.

7 žingsnis: SoC sąranka

SoC sąranka
SoC sąranka
SoC sąranka
SoC sąranka

Kalbant apie SoC sąranką, turėsite paleisti kai kurias komandas ir scenarijus, įtrauktus į SoC įterptąjį paketą terminale. Norėdami tai padaryti, turėsite pridėti $ PATH. PATH yra naudojami terminale sakant, kad ieškote failo kataloguose, kuriuos nurodo kelias, kai vykdote komandą. Norėdami tai padaryti, įveskite šią komandų eilutę:

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

Tada įveskite komandų eilutę, kad sugeneruotumėte antraštes iš „sof“failo. Sof failą gaunate surinkę savo projektą „Quartus“. Norėdami tai padaryti, įveskite:./generate_header.

8 žingsnis: C HPS programavimas

C HPS programavimas
C HPS programavimas

Šioje dalyje turime suprasti 2 dalykus, būtent perskaityti perskaityti ADC vertę ir parašyti ją SPI.

1. Perskaitykite ADC vertę

Atminties, kurioje yra ADC, adresas nėra tiesiogiai prieinamas, iš tikrųjų kortelėje esanti „Linux“sistema nustato atminties abstrakciją. Norėdami iš tikrųjų pasiekti ADC adresą, naudosime mmap funkciją.

"h2p_lw_spi_addr = virtualioji bazė + ((ilgai nepasirašyta) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (nepasirašyta ilga) (HW_REGS_MASK));"

Ši instrukcija leidžia bazinio adreso pradžioje pridėti poslinkį, kad būtų pasiektas ADC priskirtos atminties adresas, ir gautu adresu atlikti logiką IR atsižvelgti į maskavimą.

Po to programoje reikės tik nukrypti nuo žymeklio, kad gautumėte jo vertę.

2. Į SPI įrašykite ADC vertę

Manipuliacija yra identiška, šį kartą mmap suteikiame poslinkį nusileisti SPI skirtu adresu. Rašant SPI, techninėje dokumentacijoje nurodoma, kad turite parašyti adresu +1 adc reikšmę.

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

Ši instrukcija leidžia rašyti į SPI. Iš tikrųjų 4 bitas, taigi 1 << 12, yra bitas, leidžiantis aktyvuoti SPI. Turėdami loginį ARBA, SPI suteikiame ir aktyvinimo bitą, ir ADC vertę.

9 veiksmas: skaitmeninis ADC įsigijimas iš kortelės

Skaitmeninis ADC įsigijimas iš kortelės
Skaitmeninis ADC įsigijimas iš kortelės
Skaitmeninis ADC įsigijimas iš kortelės
Skaitmeninis ADC įsigijimas iš kortelės
Skaitmeninis ADC įsigijimas iš kortelės
Skaitmeninis ADC įsigijimas iš kortelės
Skaitmeninis ADC įsigijimas iš kortelės
Skaitmeninis ADC įsigijimas iš kortelės

Visų pirma, turėsite nustatyti savo kompiuterio „Ethernet“IP adresą per Valdymo skydą -> Tinklas -> „Parmesals“kortelė. Pasirinkite kortelės eterneto sąsają, nuosavybę, ipv4 adresą ir įveskite fiksuotą IP, kaukę ir tt …

Tada prijunkite kortelę iš maitinimo lizdo pusės naudodami mikro USB kabelį. Atidarykite „Quartus“programuotoją ir paleiskite eksportą. Ši manipuliacija bus pakartota po kiekvieno kortelės išjungimo.

Pakeiskite „micro USB“kištukinį kabelį, kad šį kartą galėtumėte prisijungti prie „Ethernet“lizdo. Dabar, naudojant „Putty“, prie kortelės reikės prisijungti naudojant serijinę nuorodą. Konfigūracija matoma nuotraukose, idėja COM5 pakeisti COM, o po to - skaičius, kurį rasite savo įrenginių tvarkytuvėje (dešiniuoju pelės mygtuku spustelėkite „Windows“logotipą, kad jį atidarytumėte).

Paspauskite „Enter“, esate prisijungę.

Informacija, skirta iš naujo paleisti projektą: - Ištaisykite kortelę atitinkantį eterneto ip. - Įjunkite kortelę, kiekvieną kartą įjungus maitinimą, būtina įdėti „programą“į kortelę sudarytą projektą. Tai atliekama per „micro -USB“prievadą. - Kad galėtume rodyti programos rezultatus, naudojame daugiau „micro USB“, bet UART. - Nustatykite slaptažodį (passwd) - Nustatykite IP adresą ifconfig ethxx IPchoice (IP nėra toli nuo kompiuterio etikos) - Sukurkite antraštę pagal Qsys su įterptu terminalu (eksporto kelias) - make - scp l exec žemėlapis - vykdyti pagal glaistai prog

10 žingsnis: FFT skaičiavimas

FFT skaičiavimas
FFT skaičiavimas

Norėdami gauti greitą Furjė transformaciją mūsų C programoje, naudosime biblioteką, parašytą Mark Borgerding: Kiss FFT. Biblioteką galite atsisiųsti čia: https://kissfft.sourceforge.net/. Norint modifikuoti ir pritaikyti signalo efektus, signalui reikia taikyti FFT. Jis taip pat gali būti naudojamas rodyti signalo spektrą.

Pirmasis jūsų C programos žingsnis yra priskirti atmintį, kad būtų išsaugotas FFT rezultatas. Atminties dydis priklauso nuo taškų skaičiaus, naudojamo FFT apskaičiuoti. Kuo daugiau taškų gausite, tuo tikslesnis bus FFT. Tačiau programa veiks lėčiau ir sunaudos daugiau atminties. Atminkite, kad iš funkcijos kiss_fft gausite du masyvus: funkcijos įvestį ir išvestį (cx_in ir cx_out)

Kai mūsų masyvas užpildomas naujomis FFT reikšmėmis, ty kai r = Win - 1, mes apdorojame FFT. Kalbant apie ekraną, mes rodome tik teigiamą spektro dalį, nes yra neigiamos ir teigiamos dalies simetrija.

Kalbant apie horizontaliąją ašį, mes sumažiname piko vertes 100*aukščio/(aukščio²), kad atskirtume pagrindines dažnių viršūnes.

Mes naudojame „usleep“sistemos iškvietimą, kad nustatytume ADC verčių skaitymo dažnį. Šis dažnis šiuo metu nustatytas 1, 5 Hz.

11 veiksmas: FFT rodymas

Rodomas FFT
Rodomas FFT
Rodomas FFT
Rodomas FFT

Remdamiesi pavyzdžiu, pateiktu „Adafruit“TFT LCD ekrane, kurį galite rasti čia: https://www.terasic.com/downloads/cd-rom/de0-nano-s… mes užprogramavome savo valdybos NIOS, kad jis galėtų skaityti ADC reikšmę.

Taigi ADC registras yra bendrinamas tarp NIOS ir HPS, nes ADC reikšmės bus naudojamos FFT rodymui NIOS ekrane, o tos pačios vertės bus parašytos SPI, kad būtų išvestos iš plokštės ir galiausiai konvertuojamos DAC, kad gautų analoginį signalą.

12 žingsnis: Surinkimas

Surinkimas
Surinkimas

Mes beveik baigėme! Jums reikės surinkti visas projektoriaus dalis (įėjimo grandinę, išvesties grandinę ir plokštę). Būtinai prijunkite dalis prie tinkamų kaiščių pagal „Quartus“projektą.

  1. Įvesties grandinė siųs mikrofono užfiksuotą garso signalą, sustiprintą, filtruotą ir kompensuotą.
  2. Kortelėje esanti programa C nuskaitys ADC reikšmes, kaip matėme anksčiau, ir parašys jas ant SPI, kad galėtume atkurti kortelės GPIO vertę.
  3. Tada SPI išvesties GPIO perduos informaciją, kurią dekoduos mūsų DAC ir sustiprins bėgimu, kad pasiektų garsiakalbį.

13 žingsnis: garso efektai

Garso efektai
Garso efektai
Garso efektai
Garso efektai

Liko tik garso efektai.

Galimi efektai yra šie:

  • Aukšto dažnio filtras
  • Žemo dažnio filtras

Vienu mygtuku galite perjungti efektus. Šis mygtukas pakeis mūsų C programos kintamąjį, todėl jis gali pritaikyti tinkamą efektą.

14 žingsnis: [PASIRENKAMAS] Šalmo gamyba

[PASIRENKAMA] Šalmo gamyba
[PASIRENKAMA] Šalmo gamyba
[PASIRENKAMA] Šalmo gamyba
[PASIRENKAMA] Šalmo gamyba
[PASIRENKAMA] Šalmo gamyba
[PASIRENKAMA] Šalmo gamyba

Štai mes atliekame rankinį projekto žingsnį:

  1. Pirmiausia klijavome skirtingas šalmo 3D spausdintas dalis.
  2. Norėdami užpildyti tarpus tarp klijuotų gabalų, 3D rašikliu pridėjome apdailą.
  3. Rašikliu ir šalmu užpildytas tarpines vietas šlifavome taip, kad vėliau paveikslas gerai laikytųsi.
  4. Mes nudažėme šalmą dviem sluoksniais: pirmasis antracito juodos spalvos, iš arti, o antrasis - žalia iš toliau, kad suteiktų tamsesnės žalios spalvos atspalvius.
  5. Galiausiai ant šalmo atspausdinome savo mokyklos logotipą

Rekomenduojamas: