Inhoudsopgave:

DIY VR-loopband - Basys3 FPGA-Digilent-wedstrijd - Ajarnpa
DIY VR-loopband - Basys3 FPGA-Digilent-wedstrijd - Ajarnpa

Video: DIY VR-loopband - Basys3 FPGA-Digilent-wedstrijd - Ajarnpa

Video: DIY VR-loopband - Basys3 FPGA-Digilent-wedstrijd - Ajarnpa
Video: How to make DIY OCULUS RIFT ! 2024, Juli-
Anonim
DIY VR-loopband - Basys3 FPGA-Digilent-wedstrijd
DIY VR-loopband - Basys3 FPGA-Digilent-wedstrijd

Wil je een VR-loopband bouwen waarop je je desktopapplicaties en games kunt draaien? Dan bent u bij ons aan het juiste adres!

In conventionele games gebruik je de muis en het toetsenbord om te communiceren met de omgeving. Daarom moeten we dezelfde soort signalen verzenden als een muis en toetsenbord, zodat er geen compatibiliteitsproblemen zijn tussen onze loopband en de game. In plaats van deze apparaten uit elkaar te halen, zullen we ons eigen apparaat maken dat ze zo dicht mogelijk kan simuleren.

Voor de muisinvoer zullen we een schijf gebruiken met afwisselend geleidende en niet-geleidende plakjes, waarop twee draden, met een kleine offset, zullen schuiven. Het bord leest de signalen die van de draden komen en geeft ons een van de vier combinaties: 00, 11, 10, 01, die we direct kunnen vertalen in een beweging van links naar rechts.

Voor de beweging omhoog en omlaag gebruiken we in plaats van een schijf een plaat met hetzelfde patroon van nullen en enen.

Als invoer voor de module die het toetsenbord simuleert, zullen we schakelaars hebben geplaatst op het gewricht van een staaf die het harnas vasthoudt. Wanneer u in een willekeurige richting stapt, buigt de stang lichtjes, waardoor de schakelaar wordt geopend.

(Houd er rekening mee dat het project nog steeds aan de gang is en kan worden verbeterd, dus ik wacht op advies dat het beter kan maken)

Stap 1: Basis

Baseren
Baseren
Baseren
Baseren
Baseren
Baseren

De basis moet een laag zwaartepunt hebben, dus er moet zwaar materiaal worden gebruikt. In mijn geval heb ik gips en een antenneschijf gebruikt om een holle mal te maken, maar er kunnen ook andere middelen worden gebruikt (bijv. yogabal). Nadat de mal is opgedroogd, wordt deze op twee schijven met dezelfde diameter van MDF of een vergelijkbaar materiaal geplaatst. Tussen de twee MDF-schijven wordt een spacer geplaatst. Tussen deze schijven wordt een driehoekig profiel geplaatst, dat aan de randen gelagerd is. Een andere set lagers wordt loodrecht op de hoekpunten van de driehoek geplaatst en raakt de schijf aan de bovenkant. Voor een betere precisie kunnen meer lagers worden gebruikt. Een staaf wordt op een van de hoekpunten geplaatst, zoals weergegeven in de derde afbeelding. Deze hengel houdt het harnas vast waarin de speler zal worden geplaatst.

Een andere vaste buitenste staaf wordt gebruikt om de draden te ondersteunen en ook als referentiepunt voor de rotatiebeweging.

Stap 2: 2 Invoerbeheer

2 Invoerbeheer
2 Invoerbeheer
2 Invoerbeheer
2 Invoerbeheer
2 Invoerbeheer
2 Invoerbeheer

Vanuit een black-box oogpunt zal het apparaat de volgende ingangen hebben: 4 aansluitingen voor de x, y muistellers, 2 aansluitingen voor de muisknoppen en 4 aansluitingen voor de pijltjestoetsen. De output wordt weergegeven door 4 pinnen: 2 voor de muis PS2-aansluiting en nog eens 2 voor de toetsenbord PS2-aansluiting. Voor een meer gedetailleerde beschrijving van het PS2-protocol kunt u de volgende site raadplegen:

Als ingangen voor het bord koos ik JB (1 tot 0) digitale pinnen. Gezien de volgorde …11001100…, gelezen op de twee ingangen, kunnen we onderscheid maken tussen drie toestanden van de tellers:

1. Optellen;

2. Aftellen;

3. Sla de huidige waarde op;

De Count_Type-module doet precies dat. Als er een wijziging is in de invoer, dan stuurt de module een passend bericht naar de 8-bits teller (geïmplementeerd in het 8_bit_count.vhd-bestand), die de huidige waarde optelt of aftrekt, tenzij een resetsignaal wordt ontvangen.

Hetzelfde idee wordt gebruikt voor de opwaartse beweging van het hoofd, maar in plaats van een schijf wordt een glijdend lineair profiel met hetzelfde afwisselende 0&1 patroon gebruikt.

Stap 3: VHDL-implementatie

VHDL-implementatie
VHDL-implementatie

Bij de presentatie horen de volgende modules:

1. Count_Type: deze module behandelt de decodering van de twee invoerdraden van de schijf of het profiel, beschreven in de tweede stap;

2. 8bit_count: deze module interpreteert het gedecodeerde bericht van Count_Type en verhoogt of verlaagt de tellers;

3. Pakket van 3 bytes: deze module beheert de status van de linker- en rechterknop en formatteert de gegevens zodat ze kunnen worden ingevoerd in het gegevenspakket van 3 bytes dat wordt gebruikt in het PS2-protocol;

4.clk12khz: deze module geeft een klok van 12khz specifiek voor het PS2-protocol waarop bepaalde componenten en processen werken;

5. MessageManager: deze module verstuurt het 3 byte datapakket, interpreteert het en geeft het juiste antwoord, als antwoord op een bericht van de PC.

6. PS2Interface: deze module verbindt het communicatieprotocol tussen het apparaat en de host (pc) (deze module heeft wat foutopsporing en een grondige herevaluatie nodig om goed te kunnen werken).

Aanbevolen: