สารบัญ:

ชุดเสมือนจริงโดยใช้ Arduino: 7 ขั้นตอน (พร้อมรูปภาพ)
ชุดเสมือนจริงโดยใช้ Arduino: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ชุดเสมือนจริงโดยใช้ Arduino: 7 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ชุดเสมือนจริงโดยใช้ Arduino: 7 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: ขั้นตอนการลงไลบรารี่ Arduino Libraries เเบบง่ายๆไม่ยุ่งยากมาสนุกกับ Microcontroller กันครับ #Arduino 2024, พฤศจิกายน
Anonim
ชุดเสมือนจริงโดยใช้ Arduino
ชุดเสมือนจริงโดยใช้ Arduino

ฉันได้สร้างโปรเจ็กต์นี้ขึ้นเพื่อเล่นเกมคอมพิวเตอร์ทั่วไปใน VR เต็มรูปแบบ โปรเจ็กต์นี้เลียนแบบการเคลื่อนไหวของคุณโดยการกดหรือกดแป้นคีย์บอร์ดของคุณ

ตัวอย่าง- เมื่อคุณก้าวไปข้างหน้า การกดปุ่ม 'w' จะถูกจำลอง

ฉันได้เลียนแบบเกม Call of Duty 4: Modern Warfare แต่ไม่ได้เลือกเกมที่มีการหดตัวขณะยิงเพราะมันจะเปลี่ยนตำแหน่งเริ่มต้นของเมาส์

ขั้นตอนที่ 1: ข้อกำหนด

ข้อกำหนดคือ-

มีรายการของที่คุณต้องทำชุดนี้ให้ครบ

เซ็นเซอร์สัมผัส-5

เซ็นเซอร์แรง-1

GPU 6050 - 4

(หรือ)

GPU 6050 - 2 & มาตรความเร่ง - 2

แว่นตา VR

โทรศัพท์ที่เปิดใช้งาน Vr

พีซี

ฮอตสปอตไร้สาย

ปืนของเล่น

เกมพีซี (ฉันเคยใช้ Call of Duty- Modern Warfare 1)

สายไฟเขียงหั่นขนม (ชาย-หญิง)

ARDUINO ลีโอนาโด-2

Auton ชีลด์ - 2

แหล่งพลังงาน (ไลโป)

สายสายรุ้ง

ขั้นตอนที่ 2: ฮาร์ดแวร์

ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์

*reload_pin, shoot_pin, night vision_pin, grenade_pin, change_pin ของอาวุธเป็นเซ็นเซอร์สัมผัส aim_pin เป็นเซ็นเซอร์แรงและเมาส์ถูกจำลองโดย MPU6050 เซ็นเซอร์อื่น ๆ เป็นมาตรความเร่ง (ท่าทาง, การเคลื่อนไหว1&2)

1.1) การบัดกรี

SOLDER MPU 6050, มาตรความเร่ง, เซ็นเซอร์สัมผัส & เซ็นเซอร์แรงพร้อมสายไฟ

1.2) สายไฟ

สำหรับ MPU 6050-

พิน 2- SDA

พิน 3- SCL

GND - GND

5v - PWR/VCC

สำหรับการเคลื่อนไหว_pin1-

ปักหมุดแกน A1- x

GND-GND

5v - PWR/VCC

สำหรับการเคลื่อนไหว_pin2-

ปักหมุดแกน A2-x

GND-GND

5v - PWR/VCC

สำหรับ posture_pin-

ปักหมุดแกน A0- x

GND-GND

5v - PWR/VCC

สำหรับอาวุธ_pin –

sig-5v

GND-GND

5v - PWR/VCC

สำหรับ Reload_pin –

pin12 – 5v

GND-GND

5v - PWR/VCC

สำหรับ Nightvision_pin –

พิน 10 – 5v

GND-GND

5v - PWR/VCC

สำหรับ shoot_pin –

Pin7 – 5v

GND-GND

5v - PWR/VCC

สำหรับ aim_pin –

พิน 8 – 5v

5v - PWR/VCC

1.3)สายบัดกรี

บัดกรีสายกระดานขนมปังด้วยสายสีรุ้ง

1.4) ฉนวน

พันสายไฟด้วยเทปฉนวนที่จุดที่คุณบัดกรีเพื่อหลีกเลี่ยงการลัดวงจร

ขั้นตอนที่ 3: ซอฟต์แวร์

ซอฟต์แวร์
ซอฟต์แวร์
ซอฟต์แวร์
ซอฟต์แวร์

ฉันใช้แอพชื่อ 'Remotr' จาก Play store เพื่อส่งวิดีโอจากแล็ปท็อปไปยังโทรศัพท์

2.1) REMOTR-

ติดตั้งแอปพลิเคชั่น REMOTR ลงในคอมพิวเตอร์ของคุณและสร้างบัญชี

นี่คือลิงค์-

remotrapp.com/#download

ติดตั้งแอพ REMOTR ในสมาร์ทโฟนของคุณ

2.2) การสตรีมวิดีโอ

ขั้นแรกให้เชื่อมต่อทั้งคอมพิวเตอร์และเครือข่าย WiFi เดียวกันและป้อนบัญชี REMOTR ของคุณในอุปกรณ์ทั้งสอง

ตอนนี้เพิ่มเกมที่คุณต้องการสตรีมในซอฟต์แวร์ด้วยตนเอง

ตอนนี้แอพจะแสดงให้คอมพิวเตอร์เห็นว่าเป็นแอดมิน คลิกเพื่อเริ่มการสตรีม

ในการสตรีมใน VR เปิดใช้งานโหมด vr ในสมาร์ทโฟนของคุณ

หากคุณไม่เข้าใจ ตรวจสอบลิงค์นี้เพื่อดูข้อมูลโดยละเอียด

remotrapp.com/en/howto

ขั้นตอนที่ 4: รหัสหลัก

รหัสสำหรับโครงการนี้ไม่ยากหรือซับซ้อน แต่ยาว

นี่คือรหัสเพียงแค่คัดลอกและวางลงในไฟล์ Arduino ของคุณ

ARDUINO

เลโอนาร์โด เมาส์-

ฉันได้อ้างอิง Gabry295 แล้ว รหัสเมาส์นี้ขึ้นอยู่กับหัวของเขา เมาส์สั่งได้

#รวม

#รวม

#รวม

#รวม

int aim_pin;

int shoot_pin;

MPU6050 เอ็มพียู;

int16_t ขวาน, ay, az, gx, gy, gz;

int vx, vy;

การตั้งค่าเป็นโมฆะ () {

Serial.begin(9600);

Mouse.begin();

Wire.begin();

mpu.initialize();

ถ้า (!mpu.testConnection()) {

ในขณะที่ (1);

}

โหมดพิน (7, อินพุต);

โหมดพิน (8, อินพุต);

}

วงเป็นโมฆะ () {

shoot_pin = digitalRead(7);

aim_pin = digitalRead (8);

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

vx = (gx-300)/200; // ฉันใส่ -300 และ +490 เนื่องจาก mpu6050 ของฉันแสดงค่าเหล่านี้เมื่อไม่ย้ายการตรวจสอบ

vy = -(gz+490)/200; // ตรวจสอบโค้ดของ head mouse โดย Gabry295 สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับค่าเหล่านี้

Mouse.move(vx, vy);

ล่าช้า (20);

ในขณะที่ (shoot_pin == สูง);

{

Mouse.click();

}

ในขณะที่ (aim_pin == สูง);

{

Mouse.click();

}

}

แป้นพิมพ์เลโอนาร์โด

#รวม

ระเบิดมือ;

int อาวุธ_pin;

int reload_pin;

การเคลื่อนไหวภายใน1_pin;

การเคลื่อนไหวภายใน2_pin;

int posture_pin;

ถ่าน nightvision_pin;

การตั้งค่าเป็นโมฆะ ()

{

โหมดพิน (7, อินพุต);

โหมดพิน (8, อินพุต);

โหมดพิน (9, อินพุต);

โหมดพิน (10, อินพุต);

โหมดพิน (11, อินพุต);

โหมดพิน (12, อินพุต);

โหมดพิน (A0, INPUT);

โหมดพิน (A1, INPUT);

แป้นพิมพ์.begin();

}

วงเป็นโมฆะ ()

{

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

ถ้า(ระเบิด==สูง)

{

Keyboard.press('g');

}

ในขณะที่ (weapon_pin == สูง)

{

Keyboard.press('q');

}

ในขณะที่ (reload_pin == สูง)

{

Keyboard.press('r');

}

ในขณะที่ (movement1_pin>340&&movement1_pin<420)

{

Keyboard.press('w');

}

ในขณะที่ (การเคลื่อนไหว1_pin>420)

{

Keyboard.press('w');

Keyboard.press('p');

}

ในขณะที่ (movement2_pin>340&&movement2_pin<420)

{

Keyboard.press('w');

}

ในขณะที่ (การเคลื่อนไหว2_pin>420)

{

Keyboard.press('p');

Keyboard.press('w');

}

ในขณะที่ (posture_pin>340&&posture_pin<420)

{

Keyboard.press('c');

}

ในขณะที่ (posture_pin>420)

{

Keyboard.press('l');

}

ในขณะที่ (posture_pin<340)

{

Keyboard.press('z');

}

ในขณะที่ (nightvision_pin==HIGH)

{

Keyboard.press('n');

}

}

}

ขั้นตอนที่ 5: รหัสทดสอบ

นี่คือรหัสบางส่วนที่แบ่งจากรหัสหลักตามฟังก์ชัน

การยิง-

#รวม

int x;

การตั้งค่าเป็นโมฆะ () {

โหมดพิน (8, อินพุต);

Mouse.begin();

}

วงเป็นโมฆะ () {

x=digitalRead(8);

ถ้า(x==สูง)

{

Mouse.click('g');

}

}

เล็ง-

#รวม

#รวม

#รวม

#รวม

MPU6050 เอ็มพียู;

int16_t ขวาน, ay, az, gx, gy, gz;

int vx, vy;

การตั้งค่าเป็นโมฆะ () {

Serial.begin(9600);

Mouse.begin();

Wire.begin();

mpu.initialize();

ถ้า (!mpu.testConnection()) {

ในขณะที่ (1);

}

}

วงเป็นโมฆะ () {

shoot_pin = digitalRead(7);

aim_pin = digitalRead (8);

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

vx = (gx+300)/200; // "+300" เพราะแกน x ของไจโรสโคปให้ค่าประมาณ -350 ในขณะที่มันไม่เคลื่อนที่ เปลี่ยนค่านี้หากคุณได้รับสิ่งที่แตกต่างโดยใช้รหัส TEST โดยจะตรวจสอบว่ามีค่าห่างจากศูนย์หรือไม่

vy = -(gz_-100)/200; // เหมือนกันที่นี่เกี่ยวกับ "-100"

กำลังโหลด-

#รวม

int x;

การตั้งค่าเป็นโมฆะ () {

โหมดพิน (8, อินพุต);

แป้นพิมพ์.begin();

}

วงเป็นโมฆะ () {

x=digitalRead(8);

ถ้า(x==สูง)

{

Keyboard.press('r');

}

อื่น

{

Keyboard.release('r');

}

}

NIGHT VISIO #รวม

int x;

การตั้งค่าเป็นโมฆะ () {

โหมดพิน (8, อินพุต);

แป้นพิมพ์.begin();

}

วงเป็นโมฆะ () {

x=digitalRead(8);

ถ้า(x==สูง)

{

Keyboard.press('g');

}

อื่น

{

Keyboard.release('g');

}

}

หมอบและคว่ำ-

#รวม

int y;

การตั้งค่าเป็นโมฆะ () {

โหมดพิน (A0, INPUT);

Serial.begin(9600);

}

วงเป็นโมฆะ () {

y=analogRead(A0);

ถ้า (y<260)

{

Keyboard.release('c');

Keyboard.release('p');

}

อื่น if(y>260&&y<310)

{

Keyboard.press('c');

}

อื่น if(y>310)

{

Keyboard.press('p');

}

}

ขั้นตอนที่ 6: การควบคุมเกม

เปลี่ยนการควบคุมเกมดังนี้

หมอบ - x

คว่ำ - l

การเปลี่ยนอาวุธ - q

วิ่ง - p

ยืน/กระโดด - z

การมองเห็นตอนกลางคืน - n

การเคลื่อนที่ไปข้างหน้า - w

ระเบิดมือ - g

ขั้นตอนที่ 7: การตั้งค่า

การตั้งค่า
การตั้งค่า
การตั้งค่า
การตั้งค่า
การตั้งค่า
การตั้งค่า

ในที่สุดเราก็มาถึงขั้นตอนสุดท้ายแล้ว ใส่ Arduino

บอร์ดในกล่องแล้วสอดเข้าไปในกระเป๋า

ตอนนี้เชื่อมต่อ micro USB ของ arduino กับพอร์ต USB ของแล็ปท็อป ตอนนี้เชื่อมต่อเซ็นเซอร์ตามคำแนะนำด้านบน

*เครื่องหมายลูกศรในภาพด้านบนแสดงถึงทิศทางที่เซ็นเซอร์ต้องเผชิญ

หากคุณมีข้อสงสัยอย่าลังเลที่จะแสดงความคิดเห็นและอย่าลืมแบ่งปันประสบการณ์ของคุณ

แค่นั้นแหละขอบคุณและ

ลาก่อน.

แนะนำ: