Sommario:

Tuta per realtà virtuale con Arduino: 7 passaggi (con immagini)
Tuta per realtà virtuale con Arduino: 7 passaggi (con immagini)

Video: Tuta per realtà virtuale con Arduino: 7 passaggi (con immagini)

Video: Tuta per realtà virtuale con Arduino: 7 passaggi (con immagini)
Video: COMANDARE ARDUINO da INTERFACCIA GRAFICA UTENTE - Arduino Tutorial ITA - Arduino GUI 2024, Dicembre
Anonim
Tuta per realtà virtuale con Arduino
Tuta per realtà virtuale con Arduino

Ho creato questo progetto per giocare ai normali giochi per computer in piena VR. Questo progetto emula i tuoi movimenti premendo o tenendo premuti i tasti della tastiera

Esempio: quando si va avanti viene emulata l'azione di premere il tasto 'w'.

Ho emulato il gioco Call of Duty 4: Modern Warfare ma non scegliere giochi che hanno il rinculo durante le riprese perché cambierà la posizione predefinita del mouse

Passaggio 1: requisiti

I requisiti sono-

C'è una lista piena di cose di cui hai bisogno per realizzare questo vestito

Sensori tattili-5

Sensore di forza-1

GPU 6050 - 4

(o)

GPU 6050 - 2 & Accelerometro - 2

Occhiali Vr

Telefono abilitato per Vr

PC

Hotspot wifi

Una pistola giocattolo

Un gioco per PC (ho usato Call of Duty- Modern Warfare 1)

Fili tagliere (Maschio-Femmina)

ARDUINO LEONARDO-2

Scudo di Auton - 2

Fonte di alimentazione (lipo)

Fili arcobaleno

Passaggio 2: HARDWARE

HARDWARE
HARDWARE
HARDWARE
HARDWARE
HARDWARE
HARDWARE

*reload_pin, shoot_pin, night vision_pin, granata_pin, cambio arma_pin sono sensori tattili. goal_pin è un sensore di forza e il mouse è emulato da MPU6050 altri sensori sono accelerometro (postura, movimento1 e 2)

1.1) SALDATURA

SALDARE MPU 6050, accelerometro, sensore tattile e sensore di forza con i fili

1.2) CABLAGGIO

Per MPU 6050-

Pin 2- SDA

Pin 3- SCL

GND - GND

5v - PWR/VCC

Per movimento_pin1-

Pin A1- asse x

GND-GND

5v - PWR/VCC

Per movimento_pin2-

Pin A2- asse x

GND-GND

5v - PWR/VCC

Per postura_pin-

Pin A0- asse x

GND-GND

5v - PWR/VCC

per pin_arma –

sig-5v

GND-GND

5v - PWR/VCC

Per Reload_pin –

pin12 – 5v

GND-GND

5v - PWR/VCC

Per Nightvision_pin –

pin 10 – 5v

GND-GND

5v - PWR/VCC

Per shoot_pin –

Pin7 – 5v

GND-GND

5v - PWR/VCC

Per obiettivo_pin –

Pin 8 – 5v

5v - PWR/VCC

1.3) FILI DI SALDATURA

Saldare i fili della breadboard con i fili arcobaleno

1.4) ISOLAMENTO

Fissare i fili con il nastro isolante nel punto in cui sono stati saldati per evitare cortocircuiti

Passaggio 3: SOFTWARE

SOFTWARE
SOFTWARE
SOFTWARE
SOFTWARE

Ho usato un'app chiamata "Remotr" dal Play Store per trasmettere il video dal laptop al telefono

2.1) REMOTO-

Installa l'applicazione REMOTR sul tuo computer e crea un account

Ecco il link-

remotrapp.com/#download

Installa l'app REMOTR sul tuo smartphone

2.2) STREAMING VIDEO

Per prima cosa connetti sia il computer che la stessa rete WiFi e inserisci il tuo account REMOTR in entrambi i dispositivi

ora aggiungi manualmente il gioco che desideri riprodurre in streaming nel software

ora l'app mostrerà il computer come amministratore fai clic su di esso per avviare lo streaming

Per eseguire lo streaming in VR, abilita la modalità vr sul tuo smartphone

Se non riesci a capire Controlla questo link per informazioni dettagliate

remotrapp.com/en/howto

Passaggio 4: CODICE PRINCIPALE

Il codice per questo progetto non è duro o complesso ma lungo

Ecco il codice, copialo e incollalo nel tuo file arduino

ARDUINO

LEONARDO Topo-

Ho indicato Gabry295. Questo codice del mouse è basato sulla sua testa Mouse istruibile

#includere

#includere

#includere

#includere

int obiettivo_pin;

int shoot_pin;

MPU6050 MPU;

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

int vx, vy;

void setup() {

Serial.begin(9600);

Mouse.begin();

Wire.begin();

mpu.initialize();

if (!mpu.testConnection()) {

mentre (1);

}

pinMode(7, INGRESSO);

pinMode(8, INGRESSO);

}

ciclo vuoto() {

shoot_pin = digitalRead(7);

obiettivo_pin = digitalRead(8);

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

vx = (gx-300)/200; // Ho messo -300 e +490 poiché il mio mpu6050 mostra questi valori quando non si muove check

vy = -(gz+490)/200; // controlla il codice della testa del mouse di Gabry295 per maggiori dettagli su questi valori

Mouse.move(vx, vy);

ritardo(20);

while(shoot_pin == HIGH);

{

Mouse.click();

}

while(aim_pin == HIGH);

{

Mouse.click();

}

}

Tastiera Leonardo

#includere

int Granata;

int arma_pin;

int reload_pin;

int movimento1_pin;

int movimento2_pin;

int postura_pin;

char nightvision_pin;

configurazione nulla()

{

pinMode(7, INGRESSO);

pinMode(8, INGRESSO);

pinMode(9, INGRESSO);

pinMode(10, INGRESSO);

pinMode(11, INGRESSO);

pinMode(12, INGRESSO);

pinMode(A0, INGRESSO);

pinMode(A1, INGRESSO);

Keyboard.begin();

}

ciclo vuoto()

{

Grenade_pin=digitalRead(8);

arma_pin = digitalRead(9);

movimento1_pin = analogRead(A1);

movimento2_pin = analogRead(A2);

postura_pin = analogRead(A0);

reload_pin = digitalRead(12);

nightvision_pin = digitalRead(10);

if(granata==ALTA)

{

Keyboard.press('g');

}

mentre (weapon_pin == HIGH)

{

Keyboard.press('q');

}

while(reload_pin == HIGH)

{

Keyboard.press('r');

}

mentre (movement1_pin>340&&movement1_pin<420)

{

Keyboard.press('w');

}

mentre (movement1_pin>420)

{

Keyboard.press('w');

Keyboard.press('p');

}

mentre (movement2_pin>340&&movement2_pin<420)

{

Keyboard.press('w');

}

mentre (movement2_pin>420)

{

Keyboard.press('p');

Keyboard.press('w');

}

mentre (posture_pin>340&&posture_pin<420)

{

Keyboard.press('c');

}

mentre (posture_pin>420)

{

Keyboard.press('l');

}

mentre (posture_pin<340)

{

Keyboard.press('z');

}

mentre (nightvision_pin==HIGH)

{

Keyboard.press('n');

}

}

}

Passaggio 5: CODICI DI PROVA

Ecco i pochi codici divisi dal codice principale in base alla funzione

TIRO-

#includere

intero x;

void setup() {

pinMode(8, INGRESSO);

Mouse.begin();

}

ciclo vuoto() {

x=digitalRead(8);

if(x==ALTA)

{

Mouse.click('g');

}

}

MIRA-

#includere

#includere

#includere

#includere

MPU6050 MPU;

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

int vx, vy;

void setup() {

Serial.begin(9600);

Mouse.begin();

Wire.begin();

mpu.initialize();

if (!mpu.testConnection()) {

mentre (1);

}

}

ciclo vuoto() {

shoot_pin = digitalRead(7);

obiettivo_pin = digitalRead(8);

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

vx = (gx+300)/200; // "+300" perché l'asse x del giroscopio fornisce valori di circa -350 mentre non è in movimento. Cambia questo valore se ottieni qualcosa di diverso usando il codice TEST, controllando se ci sono valori lontani da zero.

vy = -(gz_-100)/200; // lo stesso qui per "-100"

RICARICA-

#includere

intero x;

void setup() {

pinMode(8, INGRESSO);

Keyboard.begin();

}

ciclo vuoto() {

x=digitalRead(8);

if(x==ALTA)

{

Keyboard.press('r');

}

altro

{

Keyboard.release('r');

}

}

VISIO NOTTURNO #include

intero x;

void setup() {

pinMode(8, INGRESSO);

Keyboard.begin();

}

ciclo vuoto() {

x=digitalRead(8);

if(x==ALTA)

{

Keyboard.press('g');

}

altro

{

Keyboard.release('g');

}

}

RAVVICINATI E PRONATI-

#includere

int y;

void setup() {

pinMode(A0, INGRESSO);

Serial.begin(9600);

}

ciclo vuoto() {

y=analogRead(A0);

se(y<260)

{

Keyboard.release('c');

Keyboard.release('p');

}

altrimenti se(y>260&&y<310)

{

Keyboard.press('c');

}

altrimenti se(y>310)

{

Keyboard.press('p');

}

}

Passaggio 6: CONTROLLI DI GIOCO

cambia i controlli di gioco come segue

accucciarsi - x

prono - la

cambio arma - q

sprint - p

stare in piedi/saltare - z

visione notturna - n

movimento in avanti - w

granata - g

Passaggio 7: IMPOSTAZIONE

IMPOSTARE
IMPOSTARE
IMPOSTARE
IMPOSTARE
IMPOSTARE
IMPOSTARE

Finalmente siamo arrivati all'ultimo passaggio ora metti l'arduino

tavole in una scatola e mettilo nella borsa

Ora collega la micro USB dell'arduino alle porte USB del laptop ora collega i sensori come indicato sopra

*i segni di freccia nelle immagini sopra rappresentano la direzione verso cui deve essere rivolto il sensore

Se hai dei dubbi non esitare a lasciare un commento e non dimenticare di condividere la tua esperienza

Questo è tutto grazie e

ADDIO.

Consigliato: