Table des matières:

Tapis de course DIY VR - Concours Basys3 FPGA-Digilent : 3 étapes
Tapis de course DIY VR - Concours Basys3 FPGA-Digilent : 3 étapes

Vidéo: Tapis de course DIY VR - Concours Basys3 FPGA-Digilent : 3 étapes

Vidéo: Tapis de course DIY VR - Concours Basys3 FPGA-Digilent : 3 étapes
Vidéo: Tracking L'actu VR #190 : Concours Synth Riders, Tapis de déplacement, Demeter, Donjons et Dragons.. 2024, Juillet
Anonim
Tapis de course DIY VR - Concours Basys3 FPGA-Digilent
Tapis de course DIY VR - Concours Basys3 FPGA-Digilent

Voulez-vous créer un tapis de course VR sur lequel vous pouvez exécuter vos applications et jeux de bureau ? Alors vous êtes au bon endroit !

Dans les jeux conventionnels, vous utilisez la souris et le clavier pour interagir avec l'environnement. Par conséquent, nous devons envoyer le même type de signaux qu'une souris et un clavier afin qu'il n'y ait aucun problème de compatibilité entre notre tapis de course et le jeu. Plutôt que de démonter ces appareils, nous allons créer notre propre appareil qui pourra les simuler au plus près.

Pour les entrées souris nous utiliserons un disque avec des tranches alternativement conductrices et non conductrices, sur lequel vont glisser deux fils, avec un petit décalage. La carte lira les signaux provenant des fils, nous donnant l'une des quatre combinaisons: 00, 11, 10, 01, que nous pouvons traduire directement en mouvement gauche-droite.

Pour le mouvement de haut en bas, au lieu d'un disque, nous utiliserons une plaque avec le même motif de 0 et de 1.

Comme entrées pour le module qui simule le clavier, nous aurons des commutateurs placés sur l'articulation d'une tige qui tiendra le harnais. Lorsque vous marchez dans n'importe quelle direction, la tige se pliera légèrement, ouvrant ainsi l'interrupteur.

(Gardez à l'esprit que le projet est toujours en cours et peut être amélioré, j'attends donc tout conseil pouvant l'améliorer)

Étape 1: Base

Base
Base
Base
Base
Base
Base

La base doit avoir un centre de gravité bas, donc un matériau lourd doit être utilisé. Dans mon cas, j'ai utilisé du plâtre et un disque d'antenne pour faire un moule concave, mais d'autres moyens peuvent être utilisés (ex. balle de yoga). Une fois le moule séché, il sera placé sur deux disques de même diamètre en MDF ou en un matériau similaire. Une entretoise sera introduite entre les deux disques MDF. Entre ces disques, un profil triangulaire sera placé, qui a des roulements sur les bords. Un autre jeu de roulements sera placé perpendiculairement aux sommets du triangle et tangent au disque, en haut. Pour une meilleure précision, plusieurs roulements peuvent être utilisés. Une tige sera placée sur l'un des sommets, comme le montre la troisième image. Cette tige maintient le harnais dans lequel le joueur sera placé.

Une autre tige extérieure fixe est utilisée pour supporter les fils et également comme point de référence pour le mouvement de rotation.

Étape 2: 2 Gestion des entrées

2 Gestion des entrées
2 Gestion des entrées
2 Gestion des entrées
2 Gestion des entrées
2 Gestion des entrées
2 Gestion des entrées

D'un point de vue boîte noire, l'appareil disposera des entrées suivantes: 4 connexions pour les compteurs souris x, y, 2 connexions pour les boutons de la souris et 4 connexions pour les touches fléchées. La sortie est représentée par 4 broches: 2 pour la connexion souris PS2 et 2 autres pour la connexion clavier PS2. Pour une description plus détaillée du protocole PS2, vous pouvez consulter le site suivant:

Comme entrées pour la carte, j'ai choisi les broches numériques JB (1 jusqu'à 0). Compte tenu de la séquence …11001100…, lue sur les deux entrées, on peut distinguer trois états des compteurs:

1. Comptez;

2. Compte à rebours;

3. Enregistrez la valeur actuelle;

Le module Count_Type fait exactement cela. S'il y a un changement dans l'entrée, le module envoie un message approprié au compteur 8 bits (implémenté dans le fichier 8_bit_count.vhd), qui ajoute ou soustrait de la valeur actuelle, à moins qu'un signal de réinitialisation ne soit reçu.

La même idée est utilisée pour le mouvement de haut en bas de la tête, mais au lieu d'un disque, un profil linéaire coulissant avec le même motif 0&1 alternatif doit être utilisé.

Étape 3: Implémentation VHDL

Implémentation VHDL
Implémentation VHDL

Les modules suivants sont joints à la présentation:

1. Count_Type: ce module gère le décodage des deux fils d'entrée du disque ou du profil, décrit dans la deuxième étape;

2. 8bit_count: ce module interprète le message décodé de Count_Type et incrémente ou décrémente les compteurs;

3. 3bytepacket: ce module gère l'état des boutons gauche et droit et formate les données afin qu'elles puissent être introduites dans le paquet de données de 3 octets utilisé dans le protocole PS2;

4.clk12khz: ce module donne une horloge de 12khz spécifique au protocole PS2 sur laquelle travaillent certains composants et processus;

5. MessageManager: ce module envoie le paquet de données de 3 octets, l'interprète et donne la réponse appropriée, comme réponse à un message du PC.

6. PS2Interface: ce module interface le protocole de communication entre l'appareil et l'hôte (PC) (ce module nécessite un débogage et une réévaluation approfondie pour fonctionner correctement).

Conseillé: