جدول المحتويات:

بدلة الواقع الافتراضي باستخدام Arduino: 7 خطوات (بالصور)
بدلة الواقع الافتراضي باستخدام Arduino: 7 خطوات (بالصور)

فيديو: بدلة الواقع الافتراضي باستخدام Arduino: 7 خطوات (بالصور)

فيديو: بدلة الواقع الافتراضي باستخدام Arduino: 7 خطوات (بالصور)
فيديو: درس 516 من دورة الاردوينو -- شاشة السيريال ارسال و استقبال 2024, شهر نوفمبر
Anonim
بدلة الواقع الافتراضي باستخدام اردوينو
بدلة الواقع الافتراضي باستخدام اردوينو

لقد أنشأت هذا المشروع لألعب ألعاب الكمبيوتر العادية في الواقع الافتراضي الكامل. يحاكي هذا المشروع حركاتك بالضغط أو الضغط على مفاتيح لوحة المفاتيح

مثال - عندما تمضي قدمًا ، تتم محاكاة إجراء الضغط على المفتاح "w".

لقد قمت بمحاكاة لعبة Call of Duty 4: Modern Warfare ولكن لا تختار الألعاب التي لها ارتداد أثناء التصوير لأنها ستغير الوضع الافتراضي للماوس

الخطوة 1: المتطلبات

المتطلبات هي-

هناك قائمة مليئة بالأشياء التي تحتاجها لصنع هذه البدلة

مستشعرات اللمس -5

مستشعر القوة -1

وحدة معالجة الرسومات 6050-4

(أو)

وحدة معالجة الرسوميات GPU 6050 - 2 ومقياس تسارع - 2

نظارات الواقع الافتراضي

هاتف يدعم الواقع الافتراضي

الكمبيوتر

نقطة اتصال WiFi

مسدس لعبة

لعبة كمبيوتر (لقد استخدمت Call of Duty- Modern Warfare 1)

أسلاك لوح الخبز (ذكر - أنثى)

أردوينو ليوناردو -2

أوتون شيلد - 2

مصدر الطاقة (ليبو)

أسلاك قوس قزح

الخطوة 2: الأجهزة

المعدات
المعدات
المعدات
المعدات
المعدات
المعدات

* reload_pin، shoot_pin، night vision_pin، grenade_pin، تغيير السلاح هي مستشعرات تعمل باللمس. الهدف_بين هو مستشعر القوة والفأرة التي تمت محاكاتها بواسطة MPU6050 مستشعرات أخرى هي مقياس التسارع (الموقف ، الحركة 1 & 2)

1.1) اللحام

SOLDER MPU 6050 ، مقياس التسارع ، مستشعر اللمس ومستشعر القوة بالأسلاك

1.2) الأسلاك

لـ MPU 6050-

دبوس 2- SDA

دبوس 3- SCL

GND - GND

5 فولت - PWR / VCC

للحركة_pin1-

دبوس A1- المحور س

GND-GND

5 فولت - PWR / VCC

للحركة_pin2-

دبوس A2- المحور س

GND-GND

5 فولت - PWR / VCC

ل posture_pin-

دبوس A0- المحور السيني

GND-GND

5 فولت - PWR / VCC

لدبوس السلاح -

سيج -5 فولت

GND-GND

5 فولت - PWR / VCC

لـ Reload_pin -

دبوس 12 - 5 فولت

GND-GND

5 فولت - PWR / VCC

لـ Nightvision_pin -

دبوس 10-5 فولت

GND-GND

5 فولت - PWR / VCC

لـ shoot_pin -

دبوس 7 - 5 فولت

GND-GND

5 فولت - PWR / VCC

ل aim_pin -

دبوس 8-5 فولت

5 فولت - PWR / VCC

1.3) أسلاك اللحام

جندى أسلاك لوح الخبز بأسلاك قوس قزح

1.4) العزل

قم بربط الأسلاك بشريط العزل في المكان الذي تم لحامه فيه لتجنب حدوث ماس كهربائي

الخطوة 3: البرنامج

البرمجيات
البرمجيات
البرمجيات
البرمجيات

لقد استخدمت تطبيقًا يسمى "Remotr" من متجر Play لإرسال الفيديو من الكمبيوتر المحمول إلى الهاتف

2.1) جهاز التحكم عن بعد-

قم بتثبيت تطبيق REMOTR على جهاز الكمبيوتر الخاص بك وإنشاء حساب

ها هو الرابط الالكتروني-

remotrapp.com/#download

قم بتثبيت تطبيق REMOTR على هاتفك الذكي

2.2) تدفق الفيديو

قم أولاً بتوصيل كل من الكمبيوتر ونفس شبكة WiFi وأدخل حساب REMOTR في كلا الجهازين

أضف الآن يدويًا اللعبة التي تريد بثها في البرنامج

الآن سيعرض التطبيق الكمبيوتر كمسؤول انقر عليه لبدء البث

للبث في VR ، قم بتمكين وضع vr في هاتفك الذكي

إذا كنت لا تستطيع الفهم تحقق من هذا الرابط للحصول على معلومات مفصلة

remotrapp.com/en/howto

الخطوة 4: الرمز الرئيسي

رمز هذا المشروع ليس صعبًا أو معقدًا ولكنه طويل

هذا هو الكود فقط قم بنسخه ولصقه في ملف اردوينو الخاص بك

أردوينو

ليوناردو ماوس-

لقد رجعت Gabry295. يعتمد رمز الماوس هذا على رأسه الماوس القابل للتوجيه

#يشمل

#يشمل

#يشمل

#يشمل

الهدف int_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) ؛

}

pinMode (7 ، الإدخال) ؛

pinMode (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 ؛ // تحقق من كود الماوس الرئيسي بواسطة Gabry295 لمزيد من التفاصيل حول هذه القيم

Mouse.move (vx، vy) ؛

تأخير (20) ؛

بينما (shoot_pin == HIGH) ؛

{

النقر بالماوس()؛

}

بينما (aim_pin == عالية) ؛

{

النقر بالماوس()؛

}

}

لوحة مفاتيح ليوناردو

#يشمل

قنبلة يدوية

سلاح int_pin ؛

int reload_pin؛

حركة int1_pin ؛

حركة int2_pin ؛

int posture_pin؛

char nightvision_pin؛

الإعداد باطل()

{

pinMode (7 ، الإدخال) ؛

pinMode (8 ، الإدخال) ؛

pinMode (9 ، الإدخال) ؛

pinMode (10 ، الإدخال) ؛

pinMode (11 ، الإدخال) ؛

pinMode (12 ، الإدخال) ؛

pinMode (A0، INPUT) ؛

pinMode (A1 ، INPUT) ؛

Keyboard.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 == HIGH)

{

Keyboard.press ('q') ؛

}

بينما (reload_pin == HIGH)

{

Keyboard.press ('r') ؛

}

بينما (Movement1_pin> 340 && Movement1_pin <420)

{

Keyboard.press ('w') ؛

}

بينما (motion1_pin> 420)

{

Keyboard.press ('w') ؛

Keyboard.press ('p') ؛

}

بينما (motion2_pin> 340 && Movement2_pin <420)

{

Keyboard.press ('w') ؛

}

بينما (motion2_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: اختبار الرموز

فيما يلي بعض الرموز المقسمة من الكود الرئيسي وفقًا للوظيفة

اطلاق الرصاص-

#يشمل

كثافة العمليات س ؛

الإعداد باطل() {

pinMode (8 ، الإدخال) ؛

Mouse.begin () ،

}

حلقة فارغة() {

س = ديجيتال ريد (8) ؛

إذا (س == عالية)

{

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 بينما لا يتحرك. غيّر هذه القيمة إذا حصلت على شيء مختلف باستخدام رمز الاختبار ، مع ملاحظة إذا كانت هناك قيم بعيدة عن الصفر.

vy = - (gz_-100) / 200 ؛ // نفس الشيء هنا حول "-100"

تحميل-

#يشمل

كثافة العمليات س ؛

الإعداد باطل() {

pinMode (8 ، الإدخال) ؛

Keyboard.begin () ،

}

حلقة فارغة() {

س = ديجيتال ريد (8) ؛

إذا (س == عالية)

{

Keyboard.press ('r') ؛

}

آخر

{

Keyboard.release ('r') ؛

}

}

تتضمن الرؤية الليلية #

كثافة العمليات س ؛

الإعداد باطل() {

pinMode (8 ، الإدخال) ؛

Keyboard.begin () ،

}

حلقة فارغة() {

س = ديجيتال ريد (8) ؛

إذا (س == عالية)

{

Keyboard.press ("g") ؛

}

آخر

{

Keyboard.release ("g") ؛

}

}

الصراخ والانبطاح-

#يشمل

int ذ ؛

الإعداد باطل() {

pinMode (A0، INPUT) ؛

Serial.begin (9600) ؛

}

حلقة فارغة() {

y = analogRead (A0) ؛

إذا (ص <260)

{

Keyboard.release ('c') ؛

Keyboard.release ("p") ؛

}

وإلا إذا (y> 260 && y <310)

{

Keyboard.press ('c') ؛

}

وإلا إذا (ص> 310)

{

Keyboard.press ('p') ؛

}

}

الخطوة 6: ضوابط اللعبة

قم بتغيير ضوابط اللعبة على النحو التالي

الانحناء - x

عرضة - ل

تغيير السلاح - q

العدو - ص

الوقوف / القفز - ض

رؤية ليلية - ن

حركة إلى الأمام - دبليو

قنبلة يدوية - g

الخطوة 7: الإعداد

اعداد
اعداد
اعداد
اعداد
اعداد
اعداد

أخيرًا وصلنا إلى الخطوة الأخيرة الآن وضع اردوينو

ألواح في صندوق ووضعها في الحقيبة

الآن قم بتوصيل micro USB الخاص بـ arduino بمنافذ USB للكمبيوتر المحمول الآن قم بتوصيل المستشعرات كما هو موضح أعلاه

* تمثل علامات الأسهم في الصور أعلاه الاتجاه الذي يجب أن يواجهه المستشعر

إذا كانت لديك أي شكوك فلا تتردد في ترك تعليق ولا تنس مشاركة تجربتك

هذا كل شيء شكرا لك و

وداعا.

موصى به: