Índice:

Traje de realidade virtual usando Arduino: 7 etapas (com imagens)
Traje de realidade virtual usando Arduino: 7 etapas (com imagens)

Vídeo: Traje de realidade virtual usando Arduino: 7 etapas (com imagens)

Vídeo: Traje de realidade virtual usando Arduino: 7 etapas (com imagens)
Vídeo: Conheça os sensores do Arduino #ManualMaker Aula 6, Vídeo 1 2024, Julho
Anonim
Traje de realidade virtual usando Arduino
Traje de realidade virtual usando Arduino

Eu criei este projeto para jogar jogos de computador normais em RV total. Este projeto emula seus movimentos ao pressionar ou segurar as teclas do seu teclado

Exemplo - quando você avança, a ação de pressionar a tecla 'w' é emulada.

Eu emulei o jogo Call of Duty 4: Modern Warfare, mas não escolha jogos que tenham recuo ao atirar porque isso vai mudar a posição padrão do mouse

Etapa 1: Requisitos

Os requisitos são-

Há uma lista cheia de coisas que você precisa para fazer este terno

Sensores de toque-5

Sensor de força-1

GPU 6050-4

(ou)

GPU 6050-2 e acelerômetro - 2

Óculos Vr

Telefone habilitado para Vr

PC

Ponto de acesso WiFi

Uma arma de brinquedo

Um jogo para PC (usei Call of Duty- Modern Warfare 1)

Fios da placa de pão (macho-fêmea)

ARDUINO LEONARDO-2

Sheild Auton - 2

Fonte de energia (lipo)

Fios arco-íris

Etapa 2: HARDWARE

HARDWARE
HARDWARE
HARDWARE
HARDWARE
HARDWARE
HARDWARE

* reload_pin, shoot_pin, night vision_pin, grenade_pin, arma change_pin são sensores de toque. aim_pin é o sensor de força e o mouse é emulado por MPU6050 outros sensores são acelerômetro (postura, movimento 1 e 2)

1.1) SOLDAGEM

SOLDER MPU 6050, acelerômetro, sensor de toque e sensor de força com os fios

1.2) FIAÇÃO

Para MPU 6050-

Pin 2- SDA

Pino 3 - SCL

GND - GND

5v - PWR / VCC

Para movement_pin1-

Pino A1- eixo x

GND-GND

5v - PWR / VCC

Para movement_pin2-

Pino A2- eixo x

GND-GND

5v - PWR / VCC

Para posture_pin-

Pino A0- eixo x

GND-GND

5v - PWR / VCC

para weapon_pin -

sig-5v

GND-GND

5v - PWR / VCC

Para Reload_pin -

pin12 - 5v

GND-GND

5v - PWR / VCC

Para Nightvision_pin -

pino 10 - 5v

GND-GND

5v - PWR / VCC

Para shoot_pin -

Pin7 - 5v

GND-GND

5v - PWR / VCC

Para aim_pin -

Pino 8 - 5v

5v - PWR / VCC

1.3) FIOS DE SOLDA

Solde os fios da placa de pão com os fios do arco-íris

1.4) ISOLAMENTO

Prenda os fios com fita isolante no local onde você soldou para evitar curto-circuitos

Etapa 3: SOFTWARE

PROGRAMAS
PROGRAMAS
PROGRAMAS
PROGRAMAS

Usei um aplicativo chamado 'Remotr' da Play Store para transmitir o vídeo do laptop para o telefone

2.1) REMOTR-

Instale o aplicativo REMOTR em seu computador e crie uma conta

Aqui está o link-

remotrapp.com/#download

Instale o aplicativo REMOTR em seu smartphone

2.2) TRANSMISSÃO DE VÍDEO

Primeiro conecte o computador e a mesma rede WiFi e insira sua conta REMOTR em ambos os dispositivos

agora adicione manualmente o jogo que deseja transmitir no software

agora o aplicativo mostrará o computador como administrador clique nele para iniciar o streaming

Para transmitir em VR, ative o modo VR em seu smartphone

Se você não consegue entender Verifique este link para informações detalhadas

remotrapp.com/en/howto

Etapa 4: CÓDIGO PRINCIPAL

O código para este projeto não é difícil ou complexo, mas longo

Aqui está o código, basta copiá-lo e colá-lo em seu arquivo Arduino

ARDUINO

LEONARDO Mouse-

Referi Gabry295. Este código do mouse é baseado em sua cabeça Mouse instrutível

#incluir

#incluir

#incluir

#incluir

int aim_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 ()) {

enquanto (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; // Coloquei -300 e +490, pois meu mpu6050 mostra esses valores quando não está movendo o cheque

vy = - (gz + 490) / 200; // verifique o código do mouse de cabeça por Gabry295 para mais detalhes sobre esses valores

Mouse.move (vx, vy);

atraso (20);

while (shoot_pin == HIGH);

{

Mouse.click ();

}

while (aim_pin == HIGH);

{

Mouse.click ();

}

}

Teclado leonardo

#incluir

int Grenade;

int weapon_pin;

int reload_pin;

int movement1_pin;

int movement2_pin;

int posture_pin;

char nightvision_pin;

void setup ()

{

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 ();

}

void loop ()

{

Grenade_pin = digitalRead (8);

gun_pin = digitalRead (9);

motion1_pin = analogRead (A1);

motion2_pin = analogRead (A2);

posture_pin = analogRead (A0);

reload_pin = digitalRead (12);

nightvision_pin = digitalRead (10);

if (granada == HIGH)

{

Keyboard.press ('g');

}

enquanto (weapon_pin == HIGH)

{

Keyboard.press ('q');

}

enquanto (reload_pin == HIGH)

{

Keyboard.press ('r');

}

while (movement1_pin> 340 && movement1_pin <420)

{

Keyboard.press ('w');

}

enquanto (movimento1_pin> 420)

{

Keyboard.press ('w');

Keyboard.press ('p');

}

while (movement2_pin> 340 && movement2_pin <420)

{

Keyboard.press ('w');

}

enquanto (movimento2_pin> 420)

{

Keyboard.press ('p');

Keyboard.press ('w');

}

enquanto (posture_pin> 340 && posture_pin <420)

{

Keyboard.press ('c');

}

enquanto (posture_pin> 420)

{

Keyboard.press ('l');

}

enquanto (posture_pin <340)

{

Keyboard.press ('z');

}

while (nightvision_pin == HIGH)

{

Keyboard.press ('n');

}

}

}

Etapa 5: CÓDIGOS DE TESTE

Aqui estão alguns códigos divididos do código principal de acordo com a função

TIROTEIO-

#incluir

int x;

void setup () {

pinMode (8, INPUT);

Mouse.begin ();

}

void loop () {

x = leitura digital (8);

if (x == HIGH)

{

Mouse.click ('g');

}

}

VISANDO-

#incluir

#incluir

#incluir

#incluir

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 ()) {

enquanto (1);

}

}

void loop () {

shoot_pin = digitalRead (7);

aim_pin = digitalRead (8);

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

vx = (gx + 300) / 200; // "+300" porque o eixo x do giroscópio fornece valores de aproximadamente -350 enquanto ele não está se movendo. Altere este valor se você obtiver algo diferente usando o código TEST, chacking se houver valores distantes de zero.

vy = - (gz_-100) / 200; // o mesmo aqui sobre "-100"

RELOAD-

#incluir

int x;

void setup () {

pinMode (8, INPUT);

Keyboard.begin ();

}

void loop () {

x = digitalRead (8);

if (x == HIGH)

{

Keyboard.press ('r');

}

outro

{

Keyboard.release ('r');

}

}

NIGHT VISIO #include

int x;

void setup () {

pinMode (8, INPUT);

Keyboard.begin ();

}

void loop () {

x = leitura digital (8);

if (x == HIGH)

{

Keyboard.press ('g');

}

outro

{

Keyboard.release ('g');

}

}

CROUCH AND PROONE-

#incluir

int y;

void setup () {

pinMode (A0, INPUT);

Serial.begin (9600);

}

void loop () {

y = leitura analógica (A0);

if (y <260)

{

Keyboard.release ('c');

Keyboard.release ('p');

}

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

{

Keyboard.press ('c');

}

else if (y> 310)

{

Keyboard.press ('p');

}

}

Etapa 6: CONTROLES DE JOGO

mude os controles do jogo como segue

agachar - x

inclinado - eu

troca de arma - q

sprint - p

levantar / pular - z

visão noturna - n

movimento para frente - w

granada - g

Etapa 7: CONFIGURANDO

CONFIGURANDO
CONFIGURANDO
CONFIGURANDO
CONFIGURANDO
CONFIGURANDO
CONFIGURANDO

Finalmente chegamos à última etapa agora colocar o arduino

pranchas em uma caixa e coloque-as no saco

Agora conecte o micro USB do arduino às portas USB do laptop e conecte os sensores conforme indicado acima

* marcas de seta nas imagens acima representam a direção que o sensor deve estar voltado

Se você tiver alguma dúvida, não hesite em deixar um comentário e não se esqueça de compartilhar sua experiência

É isso obrigado e

TCHAU.

Recomendado: