Innholdsfortegnelse:

Virtual Reality -drakt ved bruk av Arduino: 7 trinn (med bilder)
Virtual Reality -drakt ved bruk av Arduino: 7 trinn (med bilder)

Video: Virtual Reality -drakt ved bruk av Arduino: 7 trinn (med bilder)

Video: Virtual Reality -drakt ved bruk av Arduino: 7 trinn (med bilder)
Video: 🚀 AMAZON 2.0 - ONLINEBUTIK fra bunden på 6 timer [Next / React / Nest / PostgreSQL / Prisma / TS] 2024, November
Anonim
Virtual Reality -drakt ved hjelp av Arduino
Virtual Reality -drakt ved hjelp av Arduino

Jeg har laget dette prosjektet for å spille vanlige dataspill i full VR. Dette prosjektet emulerer bevegelsene dine til å trykke eller holde tastene på tastaturet

Eksempel- når du går fremover, blir handlingen med å trykke "w" etterlignet.

Jeg har etterlignet spillet Call of Duty 4: Modern Warfare, men ikke velg spill som har rekyl under skyting fordi det vil endre standardposisjonen til musen

Trinn 1: Krav

Krav er-

Det er en liste full av ting du trenger for å lage denne drakten

Berøringssensorer-5

Force sensor-1

GPU 6050 - 4

(eller)

GPU 6050 - 2 og akselerometer - 2

Vr briller

VR -aktivert telefon

PC

WiFi -hotspot

En lekepistol

Et pc-spill (jeg har brukt Call of Duty- Modern Warfare 1)

Brødbrettledninger (Mann-Kvinne)

ARDUINO LEONARDO-2

Auton Sheild - 2

Strømkilde (lipo)

Regnbue ledninger

Trinn 2: MASKIN

MASKINVARE
MASKINVARE
MASKINVARE
MASKINVARE
MASKINVARE
MASKINVARE

*reload_pin, shoot_pin, night vision_pin, granate_pin, weapon change_pin er berøringssensorer. aim_pin er kraftsensor og mus er etterlignet av MPU6050 andre sensorer er akselerometer (holdning, bevegelse1 og 2)

1.1) SELDING

SOLDER MPU 6050, akselerometer, berøringssensor og kraftsensor med ledningene

1.2) KOBLING

For MPU 6050-

Pin 2- SDA

Pin 3- SCL

GND - GND

5v - PWR/VCC

For movement_pin1-

Pin A1- x-akse

GND-GND

5v - PWR/VCC

For movement_pin2-

Pin A2- x-akse

GND-GND

5v - PWR/VCC

For holdning_nål-

Pin A0- x-akse

GND-GND

5v - PWR/VCC

for weapon_pin -

sig-5v

GND-GND

5v - PWR/VCC

For Reload_pin -

pin12 - 5v

GND-GND

5v - PWR/VCC

For Nightvision_pin -

pinne 10 - 5v

GND-GND

5v - PWR/VCC

For shoot_pin -

Pin7 - 5v

GND-GND

5v - PWR/VCC

For aim_pin -

Pin 8 - 5v

5v - PWR/VCC

1.3) SELDERKOBLER

Lodd brødbretttrådene med regnbuetrådene

1.4) ISOLERING

Tape ledningene med isolasjonstape på stedet der du har loddet for å unngå kortslutning

Trinn 3: PROGRAMVARE

PROGRAMVARE
PROGRAMVARE
PROGRAMVARE
PROGRAMVARE

Jeg har brukt en app som heter 'Remotr' fra Play -butikken for å caste videoen fra den bærbare datamaskinen til telefonen

2.1) REMOTR-

Installer REMOTR -programmet på datamaskinen din og opprett en konto

Her er lenken-

remotrapp.com/#download

Installer REMOTR -appen i smarttelefonen din

2.2) VIDEO STREAMING

Koble først både datamaskinen og det samme WiFi -nettverket og skriv inn REMOTR -kontoen din på begge enhetene

legg nå til spillet manuelt som du vil streame manuelt i programvaren

nå vil appen vise datamaskinen som admin klikk på den for å starte streaming

For å streame i VR, aktiver vr -modus i smarttelefonen

Hvis du ikke forstår Sjekk denne lenken for detaljert informasjon

remotrapp.com/en/howto

Trinn 4: HOVEDKODE

Koden for dette prosjektet er ikke tøff eller kompleks, men lang

Her er koden, bare kopier den og lim den inn i arduino -filen

ARDUINO

LEONARDO Mus-

Jeg har referert til Gabry295. Denne musekoden er basert på hodet hans Mus som kan instrueres

#inkludere

#inkludere

#inkludere

#inkludere

int aim_pin;

int shoot_pin;

MPU6050 mpu;

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

int vx, vy;

ugyldig oppsett () {

Serial.begin (9600);

Mus.begin ();

Wire.begin ();

mpu.initialize ();

if (! mpu.testConnection ()) {

mens (1);

}

pinMode (7, INNGANG);

pinMode (8, INNGANG);

}

void loop () {

shoot_pin = digitalRead (7);

aim_pin = digitalRead (8);

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

vx = (gx-300)/200; // Jeg har satt -300 og +490 som min mpu6050 viser disse verdiene når jeg ikke beveger meg

vy = -(gz+490)/200; // sjekk koden for hodemus av Gabry295 for mer informasjon om disse verdiene

Mus.move (vx, vy);

forsinkelse (20);

mens (shoot_pin == HIGH);

{

Mus. Klikk ();

}

mens (aim_pin == HIGH);

{

Mus. Klikk ();

}

}

Leonardo tastatur

#inkludere

int Granat;

int weapon_pin;

int reload_pin;

int movement1_pin;

int movement2_pin;

int posture_pin;

char nightvision_pin;

ugyldig oppsett ()

{

pinMode (7, INNGANG);

pinMode (8, INNGANG);

pinMode (9, INNGANG);

pinMode (10, INNGANG);

pinMode (11, INNGANG);

pinMode (12, INNGANG);

pinMode (A0, INNGANG);

pinMode (A1, INNGANG);

Keyboard.begin ();

}

hulrom ()

{

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ØY)

{

Tastatur. Trykk ('g');

}

mens (vapenpinne == HØY)

{

Tastatur. Trykk ('q');

}

mens (reload_pin == HIGH)

{

Keyboard.press ('r');

}

mens (movement1_pin> 340 && movement1_pin <420)

{

Tastatur. Trykk ('w');

}

mens (bevegelse1_nål> 420)

{

Tastatur. Trykk ('w');

Keyboard.press ('p');

}

mens (movement2_pin> 340 && movement2_pin <420)

{

Tastatur. Trykk ('w');

}

mens (movement2_pin> 420)

{

Keyboard.press ('p');

Tastatur. Trykk ('w');

}

mens (posture_pin> 340 && posture_pin <420)

{

Keyboard.press ('c');

}

mens (holdning_nål> 420)

{

Tastatur. Trykk ('l');

}

mens (holdning_nål <340)

{

Keyboard.press ('z');

}

mens (nightvision_pin == HIGH)

{

Keyboard.press ('n');

}

}

}

Trinn 5: TESTKODER

Her er de få kodene delt fra hovedkoden i henhold til funksjonen

SKYTE-

#inkludere

int x;

ugyldig oppsett () {

pinMode (8, INNGANG);

Mus.begin ();

}

void loop () {

x = digitalRead (8);

hvis (x == HØY)

{

Mus. Klikk ('g');

}

}

SIKTER-

#inkludere

#inkludere

#inkludere

#inkludere

MPU6050 mpu;

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

int vx, vy;

ugyldig oppsett () {

Serial.begin (9600);

Mus.begin ();

Wire.begin ();

mpu.initialize ();

if (! 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 x -aksen til gyroskopet gir verdier om -350 mens den ikke beveger seg. Endre denne verdien hvis du får noe annerledes ved hjelp av TEST -koden, hvis du har verdier langt fra null.

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

LASTING-

#inkludere

int x;

ugyldig oppsett () {

pinMode (8, INNGANG);

Keyboard.begin ();

}

void loop () {

x = digitalRead (8);

hvis (x == HØY)

{

Keyboard.press ('r');

}

ellers

{

Keyboard.release ('r');

}

}

NIGHT VISIO #include

int x;

ugyldig oppsett () {

pinMode (8, INNGANG);

Keyboard.begin ();

}

void loop () {

x = digitalRead (8);

hvis (x == HØY)

{

Keyboard.press ('g');

}

ellers

{

Tastatur. Utgivelse ('g');

}

}

CROUCH OG utsatt-

#inkludere

int y;

ugyldig oppsett () {

pinMode (A0, INNGANG);

Serial.begin (9600);

}

void loop () {

y = analogRead (A0);

hvis (y <260)

{

Keyboard.release ('c');

Tastatur. Utgivelse ('p');

}

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

{

Keyboard.press ('c');

}

annet hvis (y> 310)

{

Keyboard.press ('p');

}

}

Trinn 6: SPILLKONTROLLER

endre spillkontrollene som følger

huk - x

utsatt - l

bytte av våpen - q

sprint - s

stå/hoppe - z

nattsyn - n

bevegelse fremover - w

granat - g

Trinn 7: OPPSETT

SETTER OPP
SETTER OPP
SETTER OPP
SETTER OPP
SETTER OPP
SETTER OPP

Endelig har vi kommet til det siste trinnet nå sette arduino

brett i en eske og legg den i posen

Koble nå mikro -USB -en til arduinoen til USB -portene på den bærbare datamaskinen. Koble nå til sensorene som beskrevet ovenfor

*pilene på bildene ovenfor representerer retningen sensoren må vende

Hvis du er i tvil, ikke nøl med å legge igjen en kommentar og ikke glem å dele din erfaring

Det er det takk og

HA DET.

Anbefalt: