Indholdsfortegnelse:

Virtual Reality Suit Brug af Arduino: 7 trin (med billeder)
Virtual Reality Suit Brug af Arduino: 7 trin (med billeder)

Video: Virtual Reality Suit Brug af Arduino: 7 trin (med billeder)

Video: Virtual Reality Suit Brug af Arduino: 7 trin (med billeder)
Video: CS50 Live, Episode 003 2024, Juli
Anonim
Virtual Reality Suit ved hjælp af Arduino
Virtual Reality Suit ved hjælp af Arduino

Jeg har oprettet dette projekt for at spille normale computerspil i fuld VR. Dette projekt efterligner dine bevægelser ved at trykke på eller holde tasterne på dit tastatur nede

Eksempel- når du bevæger dig frem, efterlignes handlingen med at trykke på tasten 'w'.

Jeg har efterlignet spillet Call of Duty 4: Modern Warfare, men vælg ikke spil, der har rekyl under optagelse, fordi det vil ændre musens standardposition

Trin 1: Krav

Krav er-

Der er en liste fuld af ting, du har brug for til at lave denne dragt

Berøringssensorer-5

Force sensor-1

GPU 6050 - 4

(eller)

GPU 6050 - 2 og accelerometer - 2

Vr briller

Vr aktiveret telefon

PC

WiFi hotspot

En legetøjspistol

Et pc-spil (jeg har brugt Call of Duty- Modern Warfare 1)

Brødtavledninger (Mand-Kvinde)

ARDUINO LEONARDO-2

Auton sheild - 2

Strømkilde (lipo)

Regnbue ledninger

Trin 2: HARDWARE

HARDWARE
HARDWARE
HARDWARE
HARDWARE
HARDWARE
HARDWARE

*reload_pin, shoot_pin, night vision_pin, granate_pin, weapon change_pin er berøringssensorer. aim_pin er kraftsensor og mus efterlignes af MPU6050 andre sensorer er accelerometer (kropsholdning, bevægelse1 og 2)

1.1) SÆLGNING

SOLDER MPU 6050, Accelerometer, Touch Sensor & kraftsensor med ledningerne

1.2) KOBLING

Til MPU 6050-

Pin 2- SDA

Pin 3- SCL

GND - GND

5v - PWR/VCC

Til movement_pin1-

Pin A1- x akse

GND-GND

5v - PWR/VCC

Til movement_pin2-

Pin A2- x akse

GND-GND

5v - PWR/VCC

Til posture_pin-

Pin A0- x akse

GND-GND

5v - PWR/VCC

til weapon_pin -

sig-5v

GND-GND

5v - PWR/VCC

Til Reload_pin -

pin12 - 5v

GND-GND

5v - PWR/VCC

Til Nightvision_pin -

pin 10 - 5v

GND-GND

5v - PWR/VCC

Til shoot_pin -

Pin7 - 5v

GND-GND

5v - PWR/VCC

Til aim_pin -

Pin 8 - 5v

5v - PWR/VCC

1.3) SÆLTNINGSLEDNING

Lod lodbrættrådene med regnbuetrådene

1.4) ISOLERING

Tape ledningerne med isoleringstapen på det sted, hvor du har loddet for at undgå kortslutninger

Trin 3: SOFTWARE

SOFTWARE
SOFTWARE
SOFTWARE
SOFTWARE

Jeg har brugt en app kaldet 'Remotr' fra Play store til at caste videoen fra den bærbare computer til telefonen

2.1) REMOTR-

Installer REMOTR -applikationen på din computer, og opret en konto

Her er linket-

remotrapp.com/#download

Installer REMOTR -appen på din smartphone

2.2) VIDEO STREAMING

Tilslut først både computeren og det samme WiFi -netværk, og indtast din REMOTR -konto på begge enheder

tilføj nu manuelt det spil, du vil streame i softwaren

nu viser appen computeren som admin, klik på den for at starte streaming

Aktiver vr -tilstand i din smartphone for at streame i VR

Hvis du ikke kan forstå Kontroller dette link for detaljerede oplysninger

remotrapp.com/da/howto

Trin 4: HOVEDKODE

Koden til dette projekt er ikke hård eller kompleks, men lang

Her er koden, bare kopier den og indsæt den i din arduino -fil

ARDUINO

LEONARDO Mus-

Jeg har refereret Gabry295. Denne musekode er baseret på hans hoved Mus instruerbar

#omfatte

#omfatte

#omfatte

#omfatte

int aim_pin;

int shoot_pin;

MPU6050 mpu;

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

int vx, vy;

ugyldig opsætning () {

Serial.begin (9600);

Mus.begynd ();

Wire.begin ();

mpu.initialize ();

hvis (! mpu.testConnection ()) {

mens (1);

}

pinMode (7, INPUT);

pinMode (8, INPUT);

}

void loop () {

shoot_pin = digitalRead (7);

aim_pin = digitalRead (8);

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

vx = (gx-300)/200; // Jeg har sat -300 og +490, da min mpu6050 viser disse værdier, når check ikke flyttes

vy = -(gz+490)/200; // tjek koden til hovedmus af Gabry295 for flere detaljer om disse værdier

Mus.move (vx, vy);

forsinkelse (20);

mens (shoot_pin == HIGH);

{

Mus. Klik ();

}

mens (aim_pin == HIGH);

{

Mus. Klik ();

}

}

Leonardo tastatur

#omfatte

int Granat;

int weapon_pin;

int reload_pin;

int bevægelse1_pin;

int bevægelse2_pin;

int posture_pin;

char nightvision_pin;

ugyldig opsætning ()

{

pinMode (7, INPUT);

pinMode (8, INPUT);

pinMode (9, INPUT);

pinMode (10, INPUT);

pinMode (11, INPUT);

pinMode (12, INPUT);

pinMode (A0, INPUT);

pinMode (A1, INPUT);

Keyboard.begin ();

}

hulrum ()

{

Grenade_pin = digitalRead (8);

weapon_pin = digitalRead (9);

movement1_pin = analogRead (A1);

movement2_pin = analogRead (A2);

posture_pin = analogRead (A0);

reload_pin = digitalRead (12);

nightvision_pin = digitalRead (10);

hvis (granat == HØJ)

{

Tastatur. Tryk ('g');

}

mens (våbenpind == HØJ)

{

Tastatur. Tryk ('q');

}

mens (reload_pin == HIGH)

{

Keyboard.press ('r');

}

mens (movement1_pin> 340 && movement1_pin <420)

{

Keyboard.press ('w');

}

mens (bevægelse1_nål> 420)

{

Keyboard.press ('w');

Keyboard.press ('p');

}

mens (movement2_pin> 340 && movement2_pin <420)

{

Keyboard.press ('w');

}

mens (bevægelse2_pin> 420)

{

Keyboard.press ('p');

Keyboard.press ('w');

}

mens (posture_pin> 340 && posture_pin <420)

{

Keyboard.press ('c');

}

mens (posture_pin> 420)

{

Keyboard.press ('l');

}

mens (posture_pin <340)

{

Keyboard.press ('z');

}

mens (nightvision_pin == HIGH)

{

Keyboard.press ('n');

}

}

}

Trin 5: TESTKODER

Her er de få koder opdelt fra hovedkoden i henhold til funktionen

SKYDNING-

#omfatte

int x;

ugyldig opsætning () {

pinMode (8, INPUT);

Mus.begynd ();

}

void loop () {

x = digitalRead (8);

hvis (x == HIGH)

{

Mus. Klik ('g');

}

}

MÅL-

#omfatte

#omfatte

#omfatte

#omfatte

MPU6050 mpu;

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

int vx, vy;

ugyldig opsætning () {

Serial.begin (9600);

Mus.begynd ();

Wire.begin ();

mpu.initialize ();

hvis (! mpu.testConnection ()) {

mens (1);

}

}

void loop () {

shoot_pin = digitalRead (7);

aim_pin = digitalRead (8);

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

vx = (gx+300)/200; // "+300", fordi gyroskopets x -akse giver værdier omkring -350, mens det ikke bevæger sig. Skift denne værdi, hvis du får noget anderledes ved hjælp af TEST -koden, chacking hvis der er værdier langt fra nul.

vy = -(gz_ -100)/200; // samme her om "-100"

OMLADNING-

#omfatte

int x;

ugyldig opsætning () {

pinMode (8, INPUT);

Keyboard.begin ();

}

void loop () {

x = digitalRead (8);

hvis (x == HIGH)

{

Keyboard.press ('r');

}

andet

{

Keyboard.release ('r');

}

}

NIGHT VISIO #include

int x;

ugyldig opsætning () {

pinMode (8, INPUT);

Keyboard.begin ();

}

void loop () {

x = digitalRead (8);

hvis (x == HIGH)

{

Keyboard.press ('g');

}

andet

{

Keyboard.release ('g');

}

}

CROUCH OG udsat-

#omfatte

int y;

ugyldig opsætning () {

pinMode (A0, INPUT);

Serial.begin (9600);

}

void loop () {

y = analogRead (A0);

hvis (y <260)

{

Keyboard.release ('c');

Keyboard.release ('p');

}

ellers hvis (y> 260 && y <310)

{

Keyboard.press ('c');

}

ellers hvis (y> 310)

{

Keyboard.press ('p');

}

}

Trin 6: SPILKONTROLLER

ændre spilkontrolerne som følger

huk - x

tilbøjelig - l

våbenskift - q

sprint - s

stå/hoppe - z

nattesyn - n

bevægelse fremad - w

granat - g

Trin 7: OPSÆTNING

SÆTTE OP
SÆTTE OP
SÆTTE OP
SÆTTE OP
SÆTTE OP
SÆTTE OP

Endelig er vi kommet til det sidste trin nu sætte arduino

brædder i en kasse og læg den i posen

Tilslut nu arduinoens mikro -USB til bærbarens USB -porte. Tilslut nu sensorerne som beskrevet ovenfor

*pilemærker på ovenstående billeder repræsenterer den retning, sensoren skal vende

Hvis du er i tvivl, tøv ikke med at efterlade en kommentar, og glem ikke at dele din oplevelse

Det er det tak og

FARVEL.

Anbefalede: