Inhaltsverzeichnis:

Virtual-Reality-Anzug mit Arduino - Gunook
Virtual-Reality-Anzug mit Arduino - Gunook

Video: Virtual-Reality-Anzug mit Arduino - Gunook

Video: Virtual-Reality-Anzug mit Arduino - Gunook
Video: Exoskeleton Arm is crazy strong 2024, Juli
Anonim
Virtual-Reality-Anzug mit Arduino
Virtual-Reality-Anzug mit Arduino

Ich habe dieses Projekt erstellt, um normale Computerspiele in voller VR zu spielen. Dieses Projekt emuliert Ihre Bewegungen beim Drücken oder Halten der Tasten Ihrer Tastatur

Beispiel: Wenn Sie sich vorwärts bewegen, wird die Aktion des Drückens der Taste 'w' emuliert.

Ich habe das Spiel Call of Duty 4: Modern Warfare emuliert, wähle aber keine Spiele aus, die beim Schießen einen Rückstoß haben, da dies die Standardposition der Maus ändert

Schritt 1: Anforderungen

Anforderungen sind-

Es gibt eine Liste voller Dinge, die Sie brauchen, um diesen Anzug zu machen

Berührungssensoren-5

Kraftsensor-1

GPU 6050 - 4

(oder)

GPU 6050 - 2 & Beschleunigungsmesser - 2

VR-Brille

VR-fähiges Telefon

PC

WLAN-Hotspot

Eine Spielzeugpistole

Ein PC-Spiel (ich habe Call of Duty- Modern Warfare 1 verwendet)

Brotbrettdrähte (männlich-weiblich)

ARDUINO LEONARDO-2

Auton-Schild - 2

Stromquelle (Lipo)

Regenbogendrähte

Schritt 2: HARDWARE

HARDWARE
HARDWARE
HARDWARE
HARDWARE
HARDWARE
HARDWARE

*reload_pin, shoot_pin, night vision_pin, grenade_pin, Waffenwechsel_pin sind Berührungssensoren. aim_pin ist ein Kraftsensor und die Maus wird von MPU6050 emuliert, andere Sensoren sind Beschleunigungsmesser (Haltung, Bewegung 1 & 2)

1.1) LÖTEN

SOLDER MPU 6050, Beschleunigungsmesser, Berührungssensor & Kraftsensor mit den Drähten

1.2) VERKABELUNG

Für MPU 6050-

Pin 2- SDA

Pin 3- SCL

Masse - Masse

5V - PWR/VCC

Für bewegung_pin1-

Stift A1- x-Achse

GND-GND

5V - PWR/VCC

Für bewegung_pin2-

Stift A2- x-Achse

GND-GND

5V - PWR/VCC

Für Haltung_Pin-

Pin A0- x-Achse

GND-GND

5V - PWR/VCC

für Waffenstift –

sig-5v

GND-GND

5V - PWR/VCC

Für Reload_pin –

Pin12 – 5V

GND-GND

5V - PWR/VCC

Für Nachtsicht_Pin –

Stift 10 – 5V

GND-GND

5V - PWR/VCC

Für shoot_pin –

Pin7 – 5V

GND-GND

5V - PWR/VCC

Für Ziel_Pin –

Pin 8 – 5V

5V - PWR/VCC

1.3) LÖTDRAHT

Löten Sie die Brotplatinendrähte mit den Regenbogendrähten

1.4) ISOLIERUNG

Kleben Sie die Drähte mit dem Isolierband an der Stelle, an der Sie gelötet haben, um Kurzschlüsse zu vermeiden

Schritt 3: SOFTWARE

SOFTWARE
SOFTWARE
SOFTWARE
SOFTWARE

Ich habe eine App namens 'Remotr' aus dem Play Store verwendet, um das Video vom Laptop auf das Telefon zu übertragen

2.1) FERNBEDIENUNG

Installieren Sie die REMOTR-Anwendung auf Ihrem Computer und erstellen Sie ein Konto

Hier ist der Link-

remotrapp.com/#download

Installieren Sie die REMOTR-App auf Ihrem Smartphone

2.2) VIDEO-STREAMING

Verbinden Sie zuerst den Computer und dasselbe WLAN-Netzwerk und geben Sie Ihr REMOTR-Konto in beiden Geräten ein

Fügen Sie nun manuell das Spiel hinzu, das Sie in der Software streamen möchten

Jetzt zeigt die App den Computer als Administrator an, um das Streaming zu starten

Um in VR zu streamen, aktiviere den VR-Modus auf deinem Smartphone

Wenn Sie nicht verstehen können, überprüfen Sie diesen Link für detaillierte Informationen

remotrapp.com/de/howto

Schritt 4: HAUPTCODE

Der Code für dieses Projekt ist nicht hart oder komplex, sondern lang

Hier ist der Code, kopieren Sie ihn einfach und fügen Sie ihn in Ihre Arduino-Datei ein

ARDUINO

LEONARDO Maus-

Ich habe Gabry295 verwiesen. Dieser Mauscode basiert auf seiner Kopfmaus anweisbar

#enthalten

#enthalten

#enthalten

#enthalten

int ziel_pin;

int schießen_pin;

MPU6050 mpu;

int16_t ax, ay, az, gx, gy, gz;

int vx, vy;

Leere Einrichtung () {

Serial.begin (9600);

Maus.begin();

Wire.begin();

mpu.initialize();

if (!mpu.testConnection()) {

während (1);

}

pinMode(7, EINGANG);

pinMode(8, EINGANG);

}

Leere Schleife () {

Shoot_Pin = digitalRead(7);

target_pin = digitalRead(8);

mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

vx = (gx-300)/200; // Ich habe -300 und +490 eingegeben, da mein mpu6050 diese Werte anzeigt, wenn er sich nicht bewegt check

vy = –(gz+490)/200; // Überprüfen Sie den Code der Kopfmaus von Gabry295 für weitere Details zu diesen Werten

Mouse.move(vx, vy);

Verzögerung (20);

while(shoot_pin == HIGH);

{

Mausklick();

}

while(ziel_pin == HIGH);

{

Mausklick();

}

}

Leonardo-Tastatur

#enthalten

int Granate;

int Waffen_Pin;

int reload_pin;

int bewegung1_pin;

int bewegung2_pin;

int haltung_pin;

char nightvision_pin;

Void-Setup ()

{

pinMode (7, EINGANG);

pinMode(8, EINGANG);

pinMode(9, EINGANG);

pinMode(10, EINGANG);

pinMode(11, EINGANG);

pinMode(12, EINGANG);

PinMode (A0, EINGANG);

PinMode (A1, EINGANG);

Tastatur.begin();

}

Leere Schleife ()

{

Grenade_pin=digitalRead(8);

Waffen_Pin = digitalRead(9);

motion1_pin = analogRead (A1);

motion2_pin = analogRead (A2);

posture_pin = analogRead (A0);

reload_pin = digitalRead (12);

nightvision_pin = digitalRead(10);

if(granate==HIGH)

{

Keyboard.press('g');

}

während (weapon_pin == HIGH)

{

Keyboard.press('q');

}

while(reload_pin == HIGH)

{

Keyboard.press('r');

}

während (Bewegung1_Pin>340&&Bewegung1_Pin<420)

{

Keyboard.press('w');

}

während (Bewegung1_pin>420)

{

Keyboard.press('w');

Keyboard.press('p');

}

während (Bewegung2_Pin>340&&Bewegung2_Pin<420)

{

Keyboard.press('w');

}

während (Bewegung2_Pin>420)

{

Keyboard.press('p');

Keyboard.press('w');

}

während (posture_pin>340&&posture_pin<420)

{

Keyboard.press('c');

}

während (posture_pin>420)

{

Keyboard.press('l');

}

während (haltung_pin<340)

{

Keyboard.press('z');

}

während (nightvision_pin==HIGH)

{

Keyboard.press('n');

}

}

}

Schritt 5: TESTCODES

Hier sind die wenigen Codes, die nach der Funktion vom Hauptcode getrennt sind

SCHIESSEN-

#enthalten

intx;

Leere Einrichtung () {

pinMode(8, EINGANG);

Maus.begin();

}

Leere Schleife () {

x=digitalRead(8);

if(x==HOCH)

{

Mouse.click('g');

}

}

ZIELEN-

#enthalten

#enthalten

#enthalten

#enthalten

MPU6050 mpu;

int16_t ax, ay, az, gx, gy, gz;

int vx, vy;

Leere Einrichtung () {

Serial.begin (9600);

Maus.begin();

Wire.begin();

mpu.initialize();

if (!mpu.testConnection()) {

während (1);

}

}

Leere Schleife () {

Shoot_Pin = digitalRead(7);

target_pin = digitalRead(8);

mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

vx = (gx+300)/200; // "+300", weil die x-Achse des Gyroskops Werte von etwa -350 ergibt, während es sich nicht bewegt. Ändern Sie diesen Wert, wenn Sie mit dem TEST-Code etwas anderes erhalten, und ändern Sie es, wenn Werte weit von Null entfernt sind.

vy = -(gz_-100)/200; // dasselbe hier über "-100"

NEULADEN-

#enthalten

intx;

Leere Einrichtung () {

pinMode(8, EINGANG);

Tastatur.begin();

}

Leere Schleife () {

x=digitalRead(8);

if(x==HOCH)

{

Keyboard.press('r');

}

anders

{

Keyboard.release('r');

}

}

NACHTSICHT #einschließen

intx;

Leere Einrichtung () {

pinMode(8, EINGANG);

Tastatur.begin();

}

Leere Schleife () {

x=digitalRead(8);

if(x==HOCH)

{

Keyboard.press('g');

}

anders

{

Keyboard.release('g');

}

}

HUCKEN UND LIEGEN-

#enthalten

int y;

Leere Einrichtung () {

PinMode (A0, EINGANG);

Serial.begin (9600);

}

Leere Schleife () {

y=analogRead(A0);

wenn(y<260)

{

Keyboard.release('c');

Keyboard.release('p');

}

sonst if(y>260&&y<310)

{

Keyboard.press('c');

}

sonst wenn(y>310)

{

Keyboard.press('p');

}

}

Schritt 6: SPIELKONTROLLE

ändere die Spielsteuerung wie folgt

ducken - x

anfällig - l

Waffenwechsel - q

sprinten - p

stehen/springen - z

Nachtsicht - nein

Vorwärtsbewegung - w

Granate - g

Schritt 7: EINRICHTEN

EINRICHTEN
EINRICHTEN
EINRICHTEN
EINRICHTEN
EINRICHTEN
EINRICHTEN

Endlich sind wir zum letzten Schritt gekommen, jetzt setzen wir das Arduino

Bretter in eine Schachtel und stecke sie in die Tasche

Verbinden Sie nun den Micro-USB des Arduino mit den USB-Anschlüssen des Laptops verbinden Sie nun die Sensoren wie oben beschrieben

*Pfeilmarkierungen in den obigen Bildern stellen die Richtung dar, in die der Sensor zeigen muss

Wenn Sie Zweifel haben, zögern Sie nicht, einen Kommentar zu hinterlassen und vergessen Sie nicht, Ihre Erfahrungen zu teilen

Das wars danke und

WIEDERSEHEN.

Empfohlen: