Inhaltsverzeichnis:

DIY VR-Laufband - Basys3 FPGA-Digilent-Wettbewerb - Gunook
DIY VR-Laufband - Basys3 FPGA-Digilent-Wettbewerb - Gunook

Video: DIY VR-Laufband - Basys3 FPGA-Digilent-Wettbewerb - Gunook

Video: DIY VR-Laufband - Basys3 FPGA-Digilent-Wettbewerb - Gunook
Video: How to make DIY OCULUS RIFT ! 2024, November
Anonim
DIY VR Laufband - Basys3 FPGA-Digilent Contest
DIY VR Laufband - Basys3 FPGA-Digilent Contest

Möchten Sie ein VR-Laufband bauen, auf dem Sie Ihre Desktop-Anwendungen und Spiele ausführen können? Dann sind Sie bei uns genau richtig!

In herkömmlichen Spielen nutzt man Maus und Tastatur, um mit der Umgebung zu interagieren. Daher müssen wir die gleichen Signale wie eine Maus und eine Tastatur senden, damit es keine Kompatibilitätsprobleme zwischen unserem Laufband und dem Spiel gibt. Anstatt diese Geräte auseinander zu nehmen, werden wir unser eigenes Gerät erstellen, das sie so nah wie möglich simulieren kann.

Für die Mauseingaben verwenden wir eine Scheibe mit abwechselnd leitenden und nichtleitenden Scheiben, auf denen zwei Drähte mit einem kleinen Versatz gleiten. Das Board liest die von den Drähten kommenden Signale und gibt uns eine von vier Kombinationen: 00, 11, 10, 01, die wir direkt in Links-Rechts-Bewegung übersetzen können.

Für die Auf-Ab-Bewegung verwenden wir anstelle einer Scheibe eine Platte mit dem gleichen Muster von Nullen und Einsen.

Als Eingänge für das Modul, das die Tastatur simuliert, werden wir Schalter am Gelenk einer Stange haben, die den Kabelbaum hält. Wenn Sie in eine beliebige Richtung treten, biegt sich die Stange leicht und öffnet so den Schalter.

(Denken Sie daran, dass das Projekt noch im Gange ist und verbessert werden kann, also warte ich auf jeden Rat, der es besser machen kann)

Schritt 1: Basis

Base
Base
Base
Base
Base
Base

Die Basis sollte einen niedrigen Schwerpunkt haben, daher muss ein schweres Material verwendet werden. In meinem Fall habe ich Gips und eine Antennenscheibe verwendet, um eine konkave Form herzustellen, aber es können auch andere Mittel verwendet werden (z. B. Yogaball). Nachdem die Form getrocknet ist, wird sie auf zwei Scheiben gleichen Durchmessers aus MDF oder einem ähnlichen Material gelegt. Zwischen den beiden MDF-Platten wird ein Abstandshalter eingefügt. Zwischen diesen Scheiben wird ein Dreiecksprofil platziert, das an den Kanten Lager hat. Ein weiterer Satz von Lagern wird senkrecht zu den Eckpunkten des Dreiecks und tangential zur Scheibe oben platziert. Für eine bessere Präzision können mehr Lager verwendet werden. Ein Stab wird auf einen der Scheitel gelegt, wie im dritten Bild gezeigt. Diese Stange hält das Gurtzeug, in das der Spieler gelegt wird.

Ein weiterer fester Außenstab dient als Stütze der Drähte und als Bezugspunkt für die Drehbewegung.

Schritt 2: 2 Input Management

2 Eingabeverwaltung
2 Eingabeverwaltung
2 Eingabeverwaltung
2 Eingabeverwaltung
2 Eingabeverwaltung
2 Eingabeverwaltung

Aus Blackbox-Sicht hat das Gerät folgende Eingänge: 4 Anschlüsse für die x-, y-Mauszähler, 2 Anschlüsse für die Maustasten und 4 Anschlüsse für die Pfeiltasten. Der Ausgang wird durch 4 Pins dargestellt: 2 für den PS2-Anschluss der Maus und weitere 2 für den PS2-Anschluss der Tastatur. Eine detailliertere Beschreibung des PS2-Protokolls finden Sie auf der folgenden Website:

Als Eingänge für die Platine habe ich JB (1 bis 0) digitale Pins gewählt. Betrachtet man die Reihenfolge …11001100…, die an den beiden Eingängen gelesen wird, kann man zwischen drei Zuständen der Zähler unterscheiden:

1. Aufwärts zählen;

2. Countdown;

3. Speichern Sie den aktuellen Wert;

Das Count_Type-Modul macht genau das. Bei einer Änderung des Eingangs sendet das Modul eine entsprechende Nachricht an den 8-Bit-Zähler (implementiert in der Datei 8_bit_count.vhd), der den aktuellen Wert addiert oder subtrahiert, sofern kein Reset-Signal empfangen wird.

Die gleiche Idee wird für die Auf-Ab-Bewegung des Kopfes verwendet, aber anstelle einer Scheibe soll ein gleitendes Linearprofil mit dem gleichen abwechselnden 0&1-Muster verwendet werden.

Schritt 3: VHDL-Implementierung

VHDL-Implementierung
VHDL-Implementierung

Der Präsentation sind folgende Module beigefügt:

1. Count_Type: Dieses Modul übernimmt die Dekodierung der beiden Eingangsdrähte von der Festplatte oder dem Profil, wie im zweiten Schritt beschrieben;

2. 8bit_count: Dieses Modul interpretiert die dekodierte Nachricht von Count_Type und erhöht oder verringert die Zähler;

3. 3-Byte-Paket: Dieses Modul verwaltet den Status der linken und rechten Tasten und formatiert die Daten, damit sie in das im PS2-Protokoll verwendete 3-Byte-Datenpaket eingefügt werden können;

4.clk12khz: Dieses Modul liefert einen Takt von 12 kHz, der für das PS2-Protokoll spezifisch ist, an dem bestimmte Komponenten und Prozesse arbeiten;

5. MessageManager: Dieses Modul sendet das 3-Byte-Datenpaket, interpretiert es und gibt die entsprechende Antwort als Antwort auf eine Nachricht vom PC.

6. PS2Interface: Dieses Modul verbindet das Kommunikationsprotokoll zwischen dem Gerät und dem Host (PC) (dieses Modul benötigt einige Fehlersuche und eine gründliche Neubewertung, um richtig zu funktionieren).

Empfohlen: