Spartan Voice Changer Helmet: 14 Mga Hakbang (na may Mga Larawan)
Spartan Voice Changer Helmet: 14 Mga Hakbang (na may Mga Larawan)
Anonim
Spartan Voice Changer Helmet
Spartan Voice Changer Helmet
Spartan Voice Changer Helmet
Spartan Voice Changer Helmet

Kamusta! Kami ay isang pangkat ng 4 na mag-aaral mula sa Polytechnic school ng Sorbonne University:

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

Ang proyektong ito ay napagtanto bilang bahagi ng aming pag-aaral, at naglalayong dalhin sa kamay ang isang bilang ng mga tool, pati na rin ipakita ang aming mga nakamit na panteorya.

Ang bantog na bagay ay tumatagal ng hitsura ng isang helmet na kahawig ng bayani ng isang tiyak na video game na ang pangalan ay mawawala. Para sa panig ng disenyo mayroon din kaming isang screen na nagpapakita ng Fourier transform ng audio signal na lumalabas sa nagsasalita. Ang layunin ng headset na ito ay upang baguhin ang boses ng carrier sa real time na gumagamit ng isang bilang ng mga mapipiling epekto.

Mga layunin sa edukasyon:

  • Kunan ang tunog mula sa isang mikropono
  • Palakihin, salain, i-digitize ang signal
  • Napagtanto ang FFT ng isang senyas
  • Ipakita ang FFT na ito sa isang screen
  • Pagbubuo ng signal
  • Kumuha ng tunog mula sa isang speaker
  • Napagtanto ang mga epekto sa tunog ng audio (pagbagsak, echo, atbp …)

Ngayon na inilagay namin ang background at ipinakita ang proyekto, oras na upang makuha ang iyong mga kamay dito!

Hakbang 1: Mga Kinakailangan 1/3 - Hardware

Mga Kinakailangan 1/3 - Hardware
Mga Kinakailangan 1/3 - Hardware

Upang matagumpay na mabuo ang iyong helmet, kakailanganin namin ng ilang hardware upang mapatakbo ang aparato.

  • DE0-Nano-SoC Development Board ni Terasic + Adafruit TFT LCD Screen (Arduino)
  • Pag-access sa isang 3D printer upang gawin ang helmet (Kung ikaw ay isang mag-aaral sa unibersidad na lumapit sa iyong unibersidad, ang ilan ay may mga lab na naa-access sa mga mag-aaral)
  • Isang computer na may koneksyon sa internet at isang minimum na pagkakakonekta (USB, Ethernet). Ang iyong computer ay kailangan ding magkaroon ng isang malakas na processor habang ang pag-iipon ng mga programa sa Qsys ay tumatagal ng maraming oras.
  • (Hindi kinakailangan) Isang printer na gumagawa ng Printed Circuit Boards (PCB) mula sa mga Gerber file upang mapaliit ang laki ng circuit + isang soldering iron upang ilagay ang mga bahagi sa PCB.
  • (Matindi ang Inirekumenda): Isang magandang kape upang masiyahan sa iyong trabaho sa aming Instructable:)

Hakbang 2: Mga Kinakailangan 2/3 - Mga Bahagi para sa Iyong Circuit

Mga Kinakailangan 2/3 - Mga Bahagi para sa Iyong Circuit
Mga Kinakailangan 2/3 - Mga Bahagi para sa Iyong Circuit
Mga Kinakailangan 2/3 - Mga Bahagi para sa Iyong Circuit
Mga Kinakailangan 2/3 - Mga Bahagi para sa Iyong Circuit
Mga Kinakailangan 2/3 - Mga Bahagi para sa Iyong Circuit
Mga Kinakailangan 2/3 - Mga Bahagi para sa Iyong Circuit

Narito ang mga sangkap na kinakailangan para sa iyong circuit:

  • Texas Instrument LM386 AB class audio amplifier
  • BreadBoard
  • Itakda ng mga cable na Lalaki-Lalaki, Lalaki-Babae
  • LM358P Digital-to-Analoh converter (DAC)
  • Tagapagsalita
  • Ginamit ang maliit na Mikropono sa analogical circuit
  • Isang hanay ng mga resistors mula sa 1kOhm hanggang 220kOhm
  • Kapasitor 1.5nF
  • Kapasitor 50nF
  • Kapasitor 100nF
  • Kapasitor 100uF
  • Kapasitor 220uF
  • x4 Mga Capacitor 10uF

Hakbang 3: Mga Kinakailangan 3/3 - Software

Mga Kinakailangan 3/3 - Software
Mga Kinakailangan 3/3 - Software
Mga Kinakailangan 3/3 - Software
Mga Kinakailangan 3/3 - Software

Huling ngunit hindi pa huli, kakailanganin mo ang software:

  • Quartus 15.1: Lite bersyon
  • Isang C compiler (gcc halimbawa)
  • Altium para sa Disenyo ng PCB
  • Ang SoC na naka-embed na suite ng Altera upang makipag-usap sa mapa ng SoC

  • Putty

Hakbang 4: Input Circuit

Input Circuit
Input Circuit
Input Circuit
Input Circuit
Input Circuit
Input Circuit
Input Circuit
Input Circuit

Buuin natin ang circuit. Gamitin ang larawan sa itaas ng circuit upang tipunin ito sa iyong breadboard. Makikita mo rin ang larawan ng BreadBoard at ang circuit sa loob upang makita kung paano nakakonekta ang mga pin. Ang buong circuit ay pinalakas ng isang 5V Direct Current (DC). Para sa mga ito, maaari mong gamitin ang isang 5V na baterya sa isang USB-B converter o isang function generator.

Ang ilang mga paalala:

  • Ang 5V power supply at ang lupa ay konektado sa magkakahiwalay na mga pahalang na linya ng breadboard
  • Kung nais mong ikonekta ang 2 mga bahagi nang kahanay, ilagay ang mga ito sa isang karaniwang linya ng breadboard
  • Kung nais mong ikonekta ang 2 mga serial sangkap, ang mga compoments ay dapat na isang pin lamang sa isang karaniwang linya ng breadboard.

Huwag mag-atubiling manuod ng nakatuon na tutorial sa kung paano gumamit ng isang breadboard at bumuo ng isang circuit dito. Huwag kalimutang basahin nang mabuti ang posisyon ng pin ng LM358P Audio Amplifier (tingnan ang larawan sa itaas)

Hakbang 5: Circuit ng Output

Output Circuit
Output Circuit
Output Circuit
Output Circuit
Output Circuit
Output Circuit
Output Circuit
Output Circuit

Medyo pareho ang mga tagubilin sa Hakbang 4. Ang apat na input: SDI, hindi CS, SCK, hindi LDAC ay mula sa iyong DE0-Nano-Soc Board. Makikita natin mamaya kung paano mabuo ang mga ito.

Huwag kalimutang basahin nang mabuti ang mga posisyon ng pin ng LM386 Audio Amplifier (tingnan ang larawan sa itaas)

Hakbang 6: [OPSYONAL] Lumilikha ng Printed Circuit Borad at Mga Component ng Paghinang

[OPSYONAL] Lumilikha ng Naka-print na Borad na Borad at Mga Component ng Paghinang
[OPSYONAL] Lumilikha ng Naka-print na Borad na Borad at Mga Component ng Paghinang
[OPSYONAL] Lumilikha ng Naka-print na Borad na Borad at Mga Component ng Paghinang
[OPSYONAL] Lumilikha ng Naka-print na Borad na Borad at Mga Component ng Paghinang
[OPSYONAL] Lumilikha ng Naka-print na Borad na Borad at Mga Component ng Paghinang
[OPSYONAL] Lumilikha ng Naka-print na Borad na Borad at Mga Component ng Paghinang

Kung ikaw ay sapat na masuwerteng nagmamay-ari ng isang Circuit Board Printer o makakagamit ng isa, lilikha kami ng aming sariling Printed Circuit Board (PCB). Tandaan na ang hakbang na ito ay opsyonal. Ang hakbang na ito ay binubuo lamang upang ilipat ang iyong circuit mula sa isang breadboard sa isang PCB.

Kakailanganin mo ang 2 GERBER file na ito.

Ang mga file na ito ay ginawa sa Altium. Gamitin ang mga ito sa iyong PCB printer software upang mai-print ang iyong PCB. Kapag nakuha mo ang iyong PCB, tiyaking malinis ang iyong PCB at na-print nang tama ang mga track.

Ngayon narito ang totoong deal: Paghihinang. Ang 2 larawan sa itaas ay ang mapa ng circuit sa PCB. Ang bawat bahagi ay may mga pangalan (R6, C4, MK1 atbp.). Ipinapakita ng mga larawan sa Hakbang 4 at 5 ang mga parameter ng mga bahagi (Paglaban, pag-uugali..). Ilagay ang bawat bahagi mula sa iyong breadboard patungo sa PCB alinsunod sa kanilang mga pangalan.

Kapag na-solder mo na ang lahat gamit ang iyong soldering iron, subukan ang bawat bahagi ng isang voltmeter upang suriin kung mayroong anumang maikling circuit.

Hakbang 7: Pag-setup ng SoC

Pag-setup ng SoC
Pag-setup ng SoC
Pag-setup ng SoC
Pag-setup ng SoC

Tungkol sa pag-setup ng SoC, kakailanganin mong magpatakbo ng ilang mga utos at script na kasama sa SoC naka-embed na suite sa loob ng isang terminal. Upang magawa ito, kakailanganin mong magdagdag ng ilang $ PATH. Ginagamit ang PATH sa loob ng isang terminal upang sabihin na maghanap para sa isang file sa mga direktoryo na ibinigay ng path kapag nagpapatakbo ka ng isang utos. Upang magawa ito, i-type ang sumusunod na linya ng utos:

i-export ang PATH = / cygdrive / c / altera_lite / 15.1 / quartus / sopc_builder / bin: $ PATH

Pagkatapos i-type ang linya ng utos upang makabuo ng mga header mula sa isang sof file. Nakukuha mo ang sof file sa pamamagitan ng pag-iipon ng iyong proyekto sa Quartus. Upang magawa ito, i-type ang:./generate_header.

Hakbang 8: Programming C HPS

Programming C HPS
Programming C HPS

Kailangan nating mapagtanto ang 2 bagay sa bahaging ito, lalo na basahin basahin ang halaga ng ADC at isulat ito sa SPI.

1. Basahin ang halaga ng ADC

Ang address ng memorya kung saan nilalaman ang ADC ay hindi direktang maa-access, sa katunayan ang linux system na naroroon sa card ay nagtatakda ng isang abstraction ng memorya. Upang ma-access talaga ang ADC address ay gagamitin namin ang mmap function.

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

Pinapayagan ng tagubiling ito na idagdag ang offset sa simula ng base address upang maabot ang address ng memorya na inilalaan para sa ADC, at upang maisagawa sa nagresultang address ang isang lohika AT upang isaalang-alang ang masking.

Pagkatapos nito, kakailanganin lamang na maibawas ang hintuturo sa programa upang makuha ang halaga nito.

2. Isulat ang halaga ng ADC sa SPI

Ang pagmamanipula ay magkapareho, sa oras na ito ay bibigyan namin ang mmap ng offset upang mapunta sa address na inilalaan ng SPI. Habang nagsusulat sa SPI, tinutukoy ng dokumentasyong panteknikal na dapat mong isulat sa address na + 1 ang halaga ng adc.

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

Pinapayagan ka ng tagubiling ito na sumulat sa SPI. Sa katunayan bit 4, kaya ang 1 << 12, ay ang bit na nagbibigay-daan upang buhayin ang SPI. Sa isang lohikal na O, samakatuwid ay binibigyan namin ang parehong pag-activate ng bit at ang halaga ng ADC sa SPI.

Hakbang 9: Digital na Pagkuha ng ADC Mula sa Card

Digital Acqu acquisition ng ADC Mula sa Card
Digital Acqu acquisition ng ADC Mula sa Card
Digital Acqu acquisition ng ADC Mula sa Card
Digital Acqu acquisition ng ADC Mula sa Card
Digital Acqu acquisition ng ADC Mula sa Card
Digital Acqu acquisition ng ADC Mula sa Card
Digital Acqu acquisition ng ADC Mula sa Card
Digital Acqu acquisition ng ADC Mula sa Card

Una sa lahat, kakailanganin mong itakda ang Ethernet IP address ng iyong computer sa pamamagitan ng Control Panel -> Network -> Card Parmesals. Piliin ang interface ng ethernet ng card, pag-aari, ipv4 address at ipasok ang isang nakapirming IP, isang mask atbp…

Susunod, ikonekta ang card mula sa panig ng power jack gamit ang micro USB cable. Buksan ang programmer ng Quartus at ilunsad ang pag-export. Ang pagmamanipula na ito ay gagawing muli pagkatapos ng bawat pag-off ng kard.

Baguhin ang micro USB plug cable, upang ikonekta ang oras na ito sa tabi ng Ethernet jack. Ngayon, sa Putty kinakailangan na kumonekta sa card sa pamamagitan ng serial link. Makikita ang pagsasaayos sa mga larawan, ang ideya na papalitan ang COM5 ng COM na sinusundan ng numero na maaari mong makita sa iyong manager ng aparato (mag-right click sa logo ng windows upang buksan ito).

Pindutin ang enter, ikaw ay konektado.

Impormasyon upang muling simulan ang proyekto: - Ayusin ang ethernet ip na naaayon sa card - I-on ang card, sa tuwing binubuksan mo ang lakas, kinakailangan na ilagay sa "programa" sa ilalim ng quartus na naipon ang proyekto sa card. Ginagawa ito sa pamamagitan ng micro-USB port - Upang maipakita ang resulta ng programa ay gumagamit kami ng mas maraming micro USB ngunit UART - Sa masilya na naka-configure para sa serial COM5 (o 6 na relo ng gestinnaire periph) Kumonekta sa card. - Magtakda ng isang password (passwd) - Itakda ang IP address ifconfig ethxx IPchoice (IP hindi malayo mula sa na para sa et ng PC) - Bumuo ng header ayon sa Qsys na may naka-embed na terminal (i-export ang PATH) - gumawa - scp l exec sa mapa - isagawa sa ilalim ng masilya ang prog

Hakbang 10: Pagkalkula ng FFT

Pagkalkula ng FFT
Pagkalkula ng FFT

Upang makuha ang Mabilis na Fourier Transform sa aming programa sa C, gagamit kami ng isang silid-aklatan na isinulat ni Mark Borgerding: Halik FFT. Maaari mong i-download ang library dito: https://kissfft.sourceforge.net/. Ang paglalapat ng isang FFT sa isang senyas ay kinakailangan upang mabago at mailapat ang mga epekto ng signal. Maaari rin itong maghatid upang maipakita ang spectrum ng isang senyas.

Ang unang hakbang sa iyong C program ay binubuo upang maglaan ng memorya upang maiimbak ang resulta ng FFT. Ang laki ng memorya ay nakasalalay sa bilang ng puntong ginamit upang makalkula ang FFT. Ang mas maraming mga puntos sa iyo, mas maraming mapaghalo ang FFT ay. Gayunpaman, ang programa ay tatakbo nang mas mabagal at gagamit ng mas maraming memorya. Tandaan na makakakuha ka ng dalawang mga pag-array mula sa pagpapaandar ng kiss_fft: ang pag-input at ang output ng pagpapaandar (cx_in at cx_out)

Kapag ang aming array ay napuno ng mga bagong halaga ng FFT, ibig sabihin kapag r = Win - 1, pinoproseso namin ang FFT. Tungkol sa pagpapakita, ipinapakita lamang namin ang positibong bahagi ng spectrum, dahil mayroong isang symetry sa pagitan ng negatibong bahagi at ng positibong bahagi.

Tungkol sa pahalang na axis, binabawasan namin ang mga halaga ng rurok ng 100 * taas / (taas ²) upang makilala ang mga tuktok ng pangunahing mga frequency.

Ginagamit namin ang paggamit ng tawag sa system ng pagtulog upang tukuyin ang isang dalas ng pagbabasa para sa mga halaga ng ADC. Ang dalas na ito ay kasalukuyang itinakda sa 1, 5 Hz.

Hakbang 11: Pagpapakita ng FFT

Ipinapakita ang FFT
Ipinapakita ang FFT
Ipinapakita ang FFT
Ipinapakita ang FFT

Batay sa isang halimbawang ibigay sa Adafruit TFT LCD Screen na magagamit dito: https://www.terasic.com/downloads/cd-rom/de0-nano-s… na-program namin ang NIOS ng aming Lupon kaya't nabasa niya ang halaga ng ADC.

Kaya't ang rehistro ng ADC ay ibinabahagi sa pagitan ng NIOS at ng HPS dahil ang mga halaga ng ADC ay gagamitin upang maipakita ang FFT sa NIOS screen, at ang mga parehong halagang iyon ay isusulat sa SPI upang ma-output ng board at sa wakas ay mabago. ng DAC upang makakuha ng isang analogic signal.

Hakbang 12: Assembly

Assembly
Assembly

Halos tapos na tayo! Kakailanganin mong tipunin ang bawat bahagi ng projet (entry circuit, output circuit at ang Lupon). Tiyaking ikonekta ang mga bahagi upang iwasto ang mga pin ayon sa Quartus Project.

  1. Ipapadala ng input circuit ang audio signal na nakunan ng mikropono, pinalakas, na-filter at offset.
  2. Ang program C na naroroon sa card ay babasahin ang mga halaga ng ADC tulad ng nakita natin dati, at isusulat ito sa SPI upang mabawi namin ang halaga sa GPIO ng card.
  3. Pagkatapos ang output GPIO ng SPI ay magpapadala ng impormasyon na mai-decode ng aming DAC at pinalakas ng pagtakbo upang maabot ang nagsasalita.

Hakbang 13: Mga Epekto ng Tunog

Mga Epekto ng Tunog
Mga Epekto ng Tunog
Mga Epekto ng Tunog
Mga Epekto ng Tunog

Ang natitirang hakbang lamang ay ang mga sound effects.

Ang mga maaaring epekto ay:

  • Mataas na Filter ng Frequency
  • Mababang Filter ng Frequency

Maaari kang lumipat sa pagitan ng mga epekto salamat sa isang pindutan. Ang pindutan na ito ay magbabago ng isang variable sa aming C program, kaya maaari itong maglapat ng tamang epekto.

Hakbang 14: [OPSYONAL] Paggawa ng Helmet

[OPSYONAL] Paggawa ng Helmet
[OPSYONAL] Paggawa ng Helmet
[OPSYONAL] Paggawa ng Helmet
[OPSYONAL] Paggawa ng Helmet
[OPSYONAL] Paggawa ng Helmet
[OPSYONAL] Paggawa ng Helmet

Narito kami sa pinaka manu-manong hakbang ng proyekto:

  1. Una naming idinikit ang iba't ibang mga naka-print na bahagi ng 3D ng helmet.
  2. Upang mapunan ang mga puwang sa pagitan ng mga nakadikit na piraso ay nagdagdag kami ng isang tapusin gamit ang isang 3D pen.
  3. Pinasinaw namin ang mga interstice na puno ng panulat at helmet na mas pangkalahatan upang ang pagpipinta ay hawakan nang maayos pagkatapos.
  4. Pininturahan namin ang helmet na may 2 layer: Ang una sa itim na antracite, malapit, at isang segundo ng pangunahing berde mula sa karagdagang lugar upang bigyan ang mga shade ng darker green.
  5. Sa wakas ay nai-print namin ang logo ng aming paaralan sa gilid ng Helmet