Spisu treści:

Kombinezon wirtualnej rzeczywistości za pomocą Arduino: 7 kroków (ze zdjęciami)
Kombinezon wirtualnej rzeczywistości za pomocą Arduino: 7 kroków (ze zdjęciami)

Wideo: Kombinezon wirtualnej rzeczywistości za pomocą Arduino: 7 kroków (ze zdjęciami)

Wideo: Kombinezon wirtualnej rzeczywistości za pomocą Arduino: 7 kroków (ze zdjęciami)
Wideo: High Density 2022 2024, Lipiec
Anonim
Kombinezon wirtualnej rzeczywistości wykorzystujący Arduino
Kombinezon wirtualnej rzeczywistości wykorzystujący Arduino

Stworzyłem ten projekt, aby grać w normalne gry komputerowe w pełnej rzeczywistości wirtualnej. Ten projekt emuluje twoje ruchy w naciskaniu lub przytrzymywaniu klawiszy na klawiaturze

Przykład - gdy poruszasz się do przodu akcja naciśnięcia klawisza 'w' jest emulowana.

Emulowałem grę Call of Duty 4: Modern Warfare, ale nie wybieram gier, które mają odrzut podczas strzelania, ponieważ zmieni to domyślną pozycję myszy

Krok 1: Wymagania

Wymagania to-

Jest lista pełna rzeczy, których potrzebujesz do wykonania tego garnituru

Czujniki dotykowe-5

Czujnik siły-1

GPU 6050 - 4

(lub)

GPU 6050 - 2 i akcelerometr - 2

Okulary VR

Telefon z obsługą VR

PC

Hotspot Wi-Fi

Pistolet zabawkowy

Gra komputerowa (użyłem Call of Duty- Modern Warfare 1)

Przewody do chleba (męsko-żeński)

ARDUINO LEONARDO-2

Tarcza Autona - 2

Źródło zasilania (lipo)

Druty tęczowe

Krok 2: SPRZĘT

SPRZĘT KOMPUTEROWY
SPRZĘT KOMPUTEROWY
SPRZĘT KOMPUTEROWY
SPRZĘT KOMPUTEROWY
SPRZĘT KOMPUTEROWY
SPRZĘT KOMPUTEROWY

*reload_pin, shoot_pin, noktowizor_pin, granat_pin, zmiana broni_pin to czujniki dotykowe. aim_pin to czujnik siły, a mysz jest emulowana przez MPU6050 inne czujniki to akcelerometr (postawa, ruch 1 i 2)

1.1) LUTOWANIE

LUTOWNICA MPU 6050, Akcelerometr, Czujnik dotyku i czujnik siły z przewodami

1.2) OKABLOWANIE

Dla MPU 6050-

Pin 2-SDA

Pin 3-SCL

GND - GND

5v - PWR/VCC

Dla ruchu_pin1-

Pin A1-x oś

GND-GND

5v - PWR/VCC

Dla ruchu_pin2-

Pin A2-x oś

GND-GND

5v - PWR/VCC

Dla postawy_pin-

Pin A0-x oś

GND-GND

5v - PWR/VCC

dla bron_pin –

sig-5v

GND-GND

5v - PWR/VCC

Dla Reload_pin –

pin12 – 5v

GND-GND

5v - PWR/VCC

Dla noktowizora_pin –

pin 10 – 5v

GND-GND

5v - PWR/VCC

Dla shoot_pin –

Pin7 – 5v

GND-GND

5v - PWR/VCC

Dla aim_pin –

Pin 8 – 5v

5v - PWR/VCC

1.3) PRZEWODY LUTOWNICZE

Przylutuj przewody płytki do chleba za pomocą przewodów tęczowych

1.4) IZOLACJA

Oklej przewody taśmą izolacyjną w miejscu lutowania, aby uniknąć zwarć

Krok 3: OPROGRAMOWANIE

OPROGRAMOWANIE
OPROGRAMOWANIE
OPROGRAMOWANIE
OPROGRAMOWANIE

Użyłem aplikacji o nazwie „Remotr” ze sklepu Play, aby przesłać wideo z laptopa na telefon

2.1) ZDALNY-

Zainstaluj aplikację REMOTR na swoim komputerze i utwórz konto

Tutaj jest link-

remotrapp.com/#download

Zainstaluj aplikację REMOTR na swoim smartfonie

2.2) STRUMIENIOWE WIDEO

Najpierw podłącz komputer i tę samą sieć Wi-Fi i wprowadź swoje konto REMOTR w obu urządzeniach

teraz ręcznie dodaj grę, którą chcesz przesyłać strumieniowo w oprogramowaniu

teraz aplikacja pokaże komputer jako administrator kliknij go, aby rozpocząć transmisję

Aby przesyłać strumieniowo w VR, włącz tryb VR w swoim smartfonie

Jeśli nie możesz zrozumieć, sprawdź ten link, aby uzyskać szczegółowe informacje

remotrapp.com/en/howto

Krok 4: GŁÓWNY KOD

Kod tego projektu nie jest trudny ani skomplikowany, ale długi

Oto kod, po prostu skopiuj go i wklej do swojego pliku arduino

ARDUINO

LEONARDO Mysz-

Poleciłem Gabry295. Ten kod myszy jest oparty na jego głowie

#włączać

#włączać

#włączać

#włączać

int szpilka_celu;

int shoot_pin;

MPU6050 mpu;

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

int vx, vy;

pusta konfiguracja () {

Serial.początek(9600);

Mysz.początek();

Wire.początek();

mpu.initialize();

if (!mpu.testConnection()) {

natomiast (1);

}

pinMode(7, WEJŚCIE);

pinMode(8, WEJŚCIE);

}

pusta pętla () {

shoot_pin = digitalRead(7);

aim_pin = digitalRead(8);

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

vx = (gx-300)/200; // Wstawiłem -300 i +490, ponieważ mój mpu6050 pokazuje te wartości, gdy nie przesuwam czeku

vy = -(gz+490)/200; // sprawdź kod myszy głównej autorstwa Gabry295, aby dowiedzieć się więcej o tych wartościach

Mouse.move(vx, vy);

opóźnienie(20);

while(shoot_pin == WYSOKI);

{

Kliknięcie myszką();

}

while(aim_pin == WYSOKI);

{

Kliknięcie myszką();

}

}

Klawiatura Leonarda

#włączać

granat wewnętrzny;

int szpilka_broni;

int reload_pin;

int ruch1_pin;

int ruch2_pin;

int posture_pin;

znak noktowizor_pin;

pusta konfiguracja()

{

pinMode(7, WEJŚCIE);

pinMode(8, WEJŚCIE);

pinMode(9, WEJŚCIE);

pinMode(10, WEJŚCIE);

pinMode(11, WEJŚCIE);

pinMode(12, WEJŚCIE);

pinMode(A0, WEJŚCIE);

pinMode(A1, WEJŚCIE);

Klawiatura.początek();

}

pusta pętla()

{

Grenade_pin=digitalRead(8);

bron_pin = digitalRead(9);

ruch1_pin = odczyt analogowy (A1);

motion2_pin = analogRead (A2);

posture_pin = analogRead (A0);

reload_pin = digitalRead(12);

nightvision_pin = digitalRead(10);

jeśli(granat==WYSOKI)

{

Klawiatura.naciśnij('g');

}

while (weapon_pin == WYSOKI)

{

Klawiatura.press('q');

}

while(reload_pin == WYSOKI)

{

Keyboard.press('r');

}

while (ruch1_pin>340&&ruch1_pin<420)

{

Keyboard.press('w');

}

while (ruch1_pin>420)

{

Keyboard.press('w');

Keyboard.press('p');

}

while (ruch2_pin>340&&ruch2_pin<420)

{

Keyboard.press('w');

}

while (ruch2_pin>420)

{

Keyboard.press('p');

Keyboard.press('w');

}

while (posture_pin>340&&posture_pin<420)

{

Keyboard.press('c');

}

podczas (posture_pin>420)

{

Klawiatura.naciśnij('l');

}

podczas (posture_pin<340)

{

Keyboard.press('z');

}

podczas (noktowizor_pin==WYSOKI)

{

Keyboard.press('n');

}

}

}

Krok 5: KODY TESTOWE

Oto kilka kodów oddzielonych od głównego kodu zgodnie z funkcją

STRZELANIE-

#włączać

int x;

pusta konfiguracja () {

pinMode(8, WEJŚCIE);

Mysz.początek();

}

pusta pętla () {

x=odczyt cyfrowy(8);

jeśli(x==WYSOKI)

{

Mysz.klik('g');

}

}

CEL-

#włączać

#włączać

#włączać

#włączać

MPU6050 mpu;

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

int vx, vy;

pusta konfiguracja () {

Serial.początek(9600);

Mysz.początek();

Wire.początek();

mpu.initialize();

if (!mpu.testConnection()) {

natomiast (1);

}

}

pusta pętla () {

shoot_pin = digitalRead(7);

aim_pin = digitalRead(8);

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

vx = (gx+300)/200; // "+300", ponieważ oś x żyroskopu daje wartości około -350 gdy się nie porusza. Zmień tę wartość, jeśli uzyskasz coś innego za pomocą kodu TEST, sprawdzając, czy istnieją wartości dalekie od zera.

vy = -(gz_-100)/200; // to samo tutaj o "-100"

PRZEŁADUNEK-

#włączać

int x;

pusta konfiguracja () {

pinMode(8, WEJŚCIE);

Klawiatura.początek();

}

pusta pętla () {

x=odczyt cyfrowy(8);

jeśli(x==WYSOKI)

{

Keyboard.press('r');

}

w przeciwnym razie

{

Keyboard.release('r');

}

}

NOCNA WIZJA #zawiera

int x;

pusta konfiguracja () {

pinMode(8, WEJŚCIE);

Klawiatura.początek();

}

pusta pętla () {

x=odczyt cyfrowy(8);

jeśli(x==WYSOKI)

{

Keyboard.press('g');

}

w przeciwnym razie

{

Keyboard.release('g');

}

}

Przykucnięcie i skłon-

#włączać

int y;

pusta konfiguracja () {

pinMode(A0, WEJŚCIE);

Serial.początek(9600);

}

pusta pętla () {

y=analogowyOdczyt(A0);

jeśli (y<260)

{

Keyboard.release('c');

Keyboard.release('p');

}

inaczej, jeśli (y>260&&y<310)

{

Keyboard.press('c');

}

inaczej, jeśli (y>310)

{

Keyboard.press('p');

}

}

Krok 6: STEROWANIE GRY

zmień sterowanie grą w następujący sposób

kucanie - x

podatny - l

zmiana broni - q

sprint - p

stanąć/skoczyć - z

noktowizor - nie

ruch do przodu - w

granat - g

Krok 7: KONFIGURACJA

KONFIGURACJA
KONFIGURACJA
KONFIGURACJA
KONFIGURACJA
KONFIGURACJA
KONFIGURACJA

Wreszcie doszliśmy do ostatniego kroku, teraz połóż arduino

deski w pudełku i wsuń do torby

Teraz podłącz micro USB arduino do portów USB laptopa, teraz podłącz czujniki zgodnie z powyższymi wskazówkami

*strzałki na powyższych zdjęciach oznaczają kierunek, w który czujnik musi być skierowany

Jeśli masz jakiekolwiek wątpliwości, nie wahaj się zostawić komentarza i nie zapomnij podzielić się swoim doświadczeniem

To wszystko, dziękuję i

ŻEGNAJ.

Zalecana: