Talaan ng mga Nilalaman:

DIY VR Treadmill- Basys3 FPGA-Digilent Contest: 3 Hakbang
DIY VR Treadmill- Basys3 FPGA-Digilent Contest: 3 Hakbang

Video: DIY VR Treadmill- Basys3 FPGA-Digilent Contest: 3 Hakbang

Video: DIY VR Treadmill- Basys3 FPGA-Digilent Contest: 3 Hakbang
Video: Cheap DIY VR slidemill setup 2024, Hulyo
Anonim
DIY VR Treadmill- Basys3 FPGA-Digilent Contest
DIY VR Treadmill- Basys3 FPGA-Digilent Contest

Nais mo bang bumuo ng isang VR Treadmill kung saan maaari mong patakbuhin ang iyong mga application at laro sa desktop? Pagkatapos ay nakarating ka sa tamang lugar!

Sa maginoo na mga laro ginagamit mo ang mouse at keyboard upang makipag-ugnay sa kapaligiran. Samakatuwid, kailangan naming magpadala ng parehong uri ng mga signal bilang isang mouse at keyboard upang walang mga isyu sa pagiging tugma sa pagitan ng aming Treadmill at ng laro. Sa halip na ihiwalay ang mga aparatong ito, lilikha kami ng aming sariling aparato na maaaring gayahin ang mga ito nang mas malapit hangga't maaari.

Para sa mga pag-input ng mouse gagamitin namin ang isang disk na may alternating conductive at hindi conductive na mga hiwa, kung saan ang dalawang mga wire, na may isang maliit na offset, ay slide. Basahin ng pisara ang mga signal na nagmumula sa mga wire, na binibigyan kami ng isa sa apat na mga kumbinasyon: 00, 11, 10, 01, na direktang maisasalin namin sa kaliwang kanan na paggalaw.

Para sa pataas na paggalaw, sa halip na isang disk, gagamit kami ng isang plato na may parehong pattern ng 0 at 1's.

Bilang mga input para sa modyul na tumutulad sa keyboard, magkakaroon kami ng mga switch na nakalagay sa magkasanib na pamalo na hahawak sa harness. Kapag humakbang ka sa anumang direksyon, ang pamalo ay baluktot nang bahagya, sa gayon buksan ang switch.

(Tandaan na ang proyekto ay nagpapatuloy pa rin at maaaring mapabuti, kaya naghihintay ako ng anumang payo na maaaring gawing mas mahusay ito)

Hakbang 1: Batayan

Base
Base
Base
Base
Base
Base

Ang batayan ay dapat magkaroon ng isang mababang sentro ng grabidad, sa gayon ay dapat gamitin ang isang mabibigat na materyal. Sa aking kaso, gumamit ako ng plaster at isang antenna disk upang makagawa ng isang malukong amag, ngunit maaaring magamit ang ibang paraan (hal. Yoga ball). Matapos ang dries ng amag, ilalagay ito sa dalawang mga disk ng parehong diameter na ginawa sa MDF o isang katulad na materyal. Ang isang spacer ay ipapakilala sa pagitan ng dalawang mga disk ng MDF. Sa pagitan ng mga disk na ito, isang profile ng tatsulok ay ilalagay, na may mga bearings sa mga gilid. Ang isa pang hanay ng mga bearings ay mailalagay patayo sa mga vertexes ng tatsulok at tangent sa disk, sa tuktok. Para sa mas mahusay na katumpakan, maraming mga bearings ang maaaring magamit. Ang isang tungkod ay ilalagay sa isa sa mga vertexes, tulad ng ipinakita sa pangatlong larawan. Hawak ng baras na ito ang harness kung saan ilalagay ang manlalaro.

Ang isa pang nakapirming panloob na tungkod ay ginagamit upang suportahan ang mga wire at bilang isang sanggunian para sa paggalaw ng pag-ikot.

Hakbang 2: 2 Pamamahala ng Input

2 Pamamahala ng Input
2 Pamamahala ng Input
2 Pamamahala ng Input
2 Pamamahala ng Input
2 Pamamahala ng Input
2 Pamamahala ng Input

Mula sa isang point ng view ng black-box, magkakaroon ang aparato ng mga sumusunod na input: 4 na koneksyon para sa mga counter ng x, y mouse, 2 mga koneksyon para sa mga pindutan ng mouse at 4 na koneksyon para sa mga arrow key. Ang output ay kinakatawan ng 4 na mga pin: 2 para sa koneksyon ng PS2 ng mouse at isa pang 2 para sa koneksyon sa PS2 ng keyboard. Para sa isang mas detalyadong paglalarawan ng PS2 protocol, maaari mong suriin ang sumusunod na site:

Bilang mga input para sa board, pinili ko ang JB (1 downto 0) na mga digital na pin. Isinasaalang-alang ang pagkakasunud-sunod … 11001100…, basahin ang dalawang mga input, maaari nating makilala ang pagitan ng tatlong mga estado ng mga counter:

1. Bumilang;

2. Bumaba;

3. I-save ang kasalukuyang halaga;

Eksaktong ginagawa iyon ng module ng Count_Type. Kung mayroong isang pagbabago sa input, pagkatapos ang module ay nagpapadala ng isang naaangkop na mensahe sa 8 bit counter (ipinatupad sa 8_bit_count.vhd file), na nagdaragdag o nag-substract mula sa kasalukuyang halaga, maliban kung natanggap ang isang reset signal.

Ang parehong ideya ay ginagamit para sa pataas na paggalaw ng ulo, ngunit sa halip na isang disk, isang sliding linear profile na may parehong alternating 0 & 1 na pattern ang gagamitin.

Hakbang 3: Pagpapatupad ng VHDL

Pagpapatupad ng VHDL
Pagpapatupad ng VHDL

Nakalakip sa pagtatanghal ay ang mga sumusunod na modyul:

1. Count_Type: humahawak ang modyul na ito sa pag-decode ng dalawang mga wire ng pag-input mula sa disk o sa profile, na inilarawan sa ikalawang hakbang;

2. 8bit_count: binibigyang kahulugan ng modyul na ito ang nai-decode na mensahe mula sa Count_Type at mga pagdaragdag o pagbawas ng mga counter;

3. 3bytepacket: pinamamahalaan ng modyul na ito ang katayuan ng kaliwa at kanang mga pindutan at nai-format ang data upang maipakilala ito sa 3 byte data packet na ginamit sa PS2 protocol;

4.clk12khz: ang modyul na ito ay nagbibigay ng isang orasan na 12khz na tukoy sa PS2 protocol kung saan gumana ang ilang mga bahagi at proseso;

5. MessageManager: ang modyul na ito ay nagpapadala ng 3 byte data packet, binibigyang kahulugan ito at nagbibigay ng naaangkop na tugon, bilang tugon sa isang mensahe mula sa PC.

6. PS2Interface: ang module na ito ay nakikipag-ugnay sa protocol ng komunikasyon sa pagitan ng aparato at host (PC) (ang modyul na ito ay nangangailangan ng ilang pag-debug at isang masusing pagsusuri muli upang gumana nang maayos).

Inirerekumendang: