Turinys:

Virtualios realybės kostiumas naudojant „Arduino“: 7 žingsniai (su nuotraukomis)
Virtualios realybės kostiumas naudojant „Arduino“: 7 žingsniai (su nuotraukomis)

Video: Virtualios realybės kostiumas naudojant „Arduino“: 7 žingsniai (su nuotraukomis)

Video: Virtualios realybės kostiumas naudojant „Arduino“: 7 žingsniai (su nuotraukomis)
Video: Šuolis nuo stogo VR kambarys 2024, Lapkritis
Anonim
Virtualios realybės kostiumas naudojant „Arduino“
Virtualios realybės kostiumas naudojant „Arduino“

Sukūriau šį projektą, kad galėčiau žaisti įprastus kompiuterinius žaidimus visu VR. Šis projektas imituoja jūsų judesius spaudžiant arba laikant klaviatūros klavišus

Pavyzdys- kai judate į priekį, paspaudžiamas klavišo „w“veiksmas.

Aš mėgdžiojau žaidimą „Call of Duty 4: Modern Warfare“, bet nesirinkite žaidimų, kurie šaudymo metu atsitraukia, nes tai pakeis numatytąją pelės padėtį

1 žingsnis: Reikalavimai

Reikalavimai yra-

Yra sąrašas dalykų, kurių jums reikia norint sukurti šį kostiumą

Lietimo jutikliai-5

Jėgos jutiklis-1

GPU 6050 - 4

(arba)

GPU 6050 - 2 ir akselerometras - 2

Vr akiniai

Telefonas su Vr

PC

„WiFi“viešosios interneto prieigos taškas

Žaislinis pistoletas

Kompiuterinis žaidimas (naudojau „Call of Duty“- „Modern Warfare 1“)

Duonos lentos laidai (vyriškos ir moteriškos lyties)

ARDUINO LEONARDO-2

Autonominis skydas - 2

Maitinimo šaltinis (lipo)

Vaivorykštės laidai

2 žingsnis: Aparatūra

Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra

*reload_pin, shoot_pin, night vision_pin, grenade_pin, ginklo keitimo smeigtukai yra jutikliniai jutikliai. „aim_pin“yra jėgos jutiklis, o pelė imituojama MPU6050, kiti jutikliai yra akselerometras (laikysena, judesys1 ir 2)

1.1) LITAVIMAS

SOLDER MPU 6050, akselerometras, jutiklinis jutiklis ir jėgos jutiklis su laidais

1.2) LAIDAI

MPU 6050-

2- kaištis SDA

3 kaištis- SCL

GND - GND

5v - PWR/VCC

Judėjimui_pin1-

Smeigtukas A1- x ašis

GND-GND

5v - PWR/VCC

Judėjimui_pin2-

Smeigtukas A2- x ašis

GND-GND

5v - PWR/VCC

„Posture_pin-“

Smeigtukas A0- x ašis

GND-GND

5v - PWR/VCC

už ginklą_kaištis -

sig-5v

GND-GND

5v - PWR/VCC

„Reload_pin“-

kaištis 12 - 5 V.

GND-GND

5v - PWR/VCC

„Nightvision_pin“-

kaištis 10 - 5v

GND-GND

5v - PWR/VCC

Shoot_pin -

Pin 7 - 5v

GND-GND

5v - PWR/VCC

Dėl aim_pin -

Kaištis 8 - 5v

5v - PWR/VCC

1.3) LITIMO LAIDAI

Lituokite duonos lentos laidus vaivorykštės laidais

1.4) Izoliacija

Užklijuokite laidus izoliacine juostele toje vietoje, kur litavote, kad išvengtumėte trumpojo jungimo

3 žingsnis: PROGRAMINĖ ĮRANGA

PROGRAMINĖ ĮRANGA
PROGRAMINĖ ĮRANGA
PROGRAMINĖ ĮRANGA
PROGRAMINĖ ĮRANGA

Aš naudoju programą, pavadintą „Remotr“iš „Play“parduotuvės, norėdamas perduoti vaizdo įrašą iš nešiojamojo kompiuterio į telefoną

2.1) REMOTR-

Įdiekite REMOTR programą savo kompiuteryje ir susikurkite paskyrą

Štai nuoroda-

remotrapp.com/#download

Įdiekite REMOTR programą savo išmaniajame telefone

2.2) VIDEO SRAUTAS

Pirmiausia prijunkite kompiuterį ir tą patį „WiFi“tinklą ir įveskite savo REMOTR paskyrą abiejuose įrenginiuose

Dabar rankiniu būdu pridėkite žaidimą, kurį norite transliuoti programinėje įrangoje

Dabar programa parodys kompiuterį kaip administratorius, norėdami pradėti transliaciją

Jei norite transliuoti naudodami VR, įjunkite „VR“režimą savo išmaniajame telefone

Jei nesuprantate, išsamios informacijos ieškokite šioje nuorodoje

remotrapp.com/en/howto

4 žingsnis: PAGRINDINIS KODAS

Šio projekto kodas nėra sunkus ar sudėtingas, bet ilgas

Čia yra kodas, tiesiog nukopijuokite jį ir įklijuokite į savo arduino failą

ARDUINO

Pelė LEONARDO-

Aš nurodiau Gabry295. Šis pelės kodas yra pagrįstas jo galva Pelės instrukcija

#įtraukti

#įtraukti

#įtraukti

#įtraukti

int aim_pin;

int shoot_pin;

MPU6050 mpu;

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

int vx, vy;

void setup () {

Serial.begin (9600);

Pelė.pradėti ();

Wire.begin ();

mpu.initialize ();

if (! mpu.testConnection ()) {

tuo tarpu (1);

}

pinMode (7, Įvestis);

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; // Aš įdėjau -300 ir +490, nes mano mpu6050 rodo šias vertes, kai nejuda

vy = -(gz+490)/200; // Norėdami sužinoti daugiau apie šias vertes, patikrinkite „Gabry295“galvos pelės kodą

Pelė.perkelti (vx, vy);

vėlavimas (20);

tuo tarpu (shoot_pin == HIGH);

{

Pelė. Spustelėkite ();

}

while (aim_pin == HIGH);

{

Pelė. Spustelėkite ();

}

}

Leonardo klaviatūra

#įtraukti

int Granata;

int ginklas_kaištis;

int reload_pin;

int motion1_pin;

int motion2_pin;

int posture_pin;

char nightvision_pin;

negaliojanti sąranka ()

{

pinMode (7, INPUT);

pinMode (8, INPUT);

pinMode (9, INPUT);

pinMode (10, INPUT);

pinMode (11, INPUT);

pinMode (12, INPUT);

pinMode (A0, INPUT);

pinMode (A1, INPUT);

Klaviatūra.begin ();

}

tuštumos kilpa ()

{

Grenade_pin = digitalRead (8);

ginklo_tapas = digitalRead (9);

motion1_pin = analogRead (A1);

motion2_pin = analogRead (A2);

laikysenos_kapas = analogRead (A0);

reload_pin = digitalRead (12);

nightvision_pin = digitalRead (10);

jei (granata == AUKŠTA)

{

Keyboard.press ('g');

}

o (ginklo smeigtukas == AUKŠTAS)

{

Keyboard.press ('q');

}

o (reload_pin == HIGH)

{

Keyboard.press ('r');

}

tuo tarpu (motion1_pin> 340 && motion1_pin <420)

{

Keyboard.press ('w');

}

o (judėjimas1_pin> 420)

{

Keyboard.press ('w');

Keyboard.press ('p');

}

tuo tarpu (motion2_pin> 340 && motion2_pin <420)

{

Keyboard.press ('w');

}

o (judėjimas2_pin> 420)

{

Keyboard.press ('p');

Keyboard.press ('w');

}

tuo tarpu (posture_pin> 340 && posture_pin <420)

{

Keyboard.press ('c');

}

o (pozos_pin> 420)

{

Keyboard.press ('l');

}

o (pozos_pin <340)

{

Keyboard.press ('z');

}

o (nightvision_pin == HIGH)

{

Keyboard.press ('n');

}

}

}

5 veiksmas: BANDYMO KODAI

Čia yra keli kodai, suskirstyti iš pagrindinio kodo pagal funkciją

ŠAUDYMAS-

#įtraukti

int x;

void setup () {

pinMode (8, INPUT);

Pelė.pradėti ();

}

void loop () {

x = digitalRead (8);

jei (x == AUKŠTAS)

{

Mouse.click ('g');

}

}

TIKSLAS-

#įtraukti

#įtraukti

#įtraukti

#įtraukti

MPU6050 mpu;

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

int vx, vy;

void setup () {

Serial.begin (9600);

Pelė.pradėti ();

Wire.begin ();

mpu.initialize ();

if (! mpu.testConnection ()) {

tuo tarpu (1);

}

}

void loop () {

shoot_pin = digitalRead (7);

aim_pin = digitalRead (8);

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

vx = (gx+300)/200; // "+300", nes giroskopo x ašis, kai ji nejuda, suteikia reikšmes apie -350. Pakeiskite šią vertę, jei naudodami TEST kodą gausite ką nors kitokio, patikrinkite, ar reikšmės toli gražu nėra nulio.

vy = -(gz_ -100)/200; // tas pats čia apie "-100"

PERKROVIMAS-

#įtraukti

int x;

void setup () {

pinMode (8, INPUT);

Klaviatūra.begin ();

}

void loop () {

x = digitalRead (8);

jei (x == AUKŠTAS)

{

Keyboard.press ('r');

}

Kitas

{

Keyboard.release ('r');

}

}

NAKTINIS VISIO #įtraukimas

int x;

void setup () {

pinMode (8, INPUT);

Klaviatūra.begin ();

}

void loop () {

x = digitalRead (8);

jei (x == AUKŠTAS)

{

Keyboard.press ('g');

}

Kitas

{

Keyboard.release ('g');

}

}

SUŽVALGYTI IR PALIKTI-

#įtraukti

int y;

void setup () {

pinMode (A0, INPUT);

Serial.begin (9600);

}

void loop () {

y = analogRead (A0);

jei (y <260)

{

Keyboard.release ('c');

Keyboard.release ('p');

}

kitaip jei (y> 260 && y <310)

{

Keyboard.press ('c');

}

kitaip, jei (y> 310)

{

Keyboard.press ('p');

}

}

6 žingsnis: ŽAIDIMŲ KONTROLĖ

pakeiskite žaidimo valdiklius taip

atsigulti - x

linkę - l

ginklo keitimas - q

sprintas - p

stovėti/šokinėti - z

naktinis matymas - n

judėjimas į priekį - w

granata - g

7 žingsnis: NUSTATYMAS

NUSTATYMAS
NUSTATYMAS
NUSTATYMAS
NUSTATYMAS
NUSTATYMAS
NUSTATYMAS

Pagaliau mes pasiekėme paskutinį žingsnį, dabar įdėkite arduino

lentas į dėžę ir įkiškite į maišą

Dabar prijunkite arduino mikro USB prie nešiojamojo kompiuterio USB prievadų, dabar prijunkite jutiklius, kaip nurodyta aukščiau

*Rodyklių žymės aukščiau esančiose nuotraukose rodo, į kurią pusę turi būti nukreiptas jutiklis

Jei turite kokių nors abejonių, nedvejodami palikite komentarą ir nepamirškite pasidalinti savo patirtimi

Tai tiek ačiū ir

ATE.

Rekomenduojamas: