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

لعبة اطلاق النار اردوينو V3: 4 خطوات
لعبة اطلاق النار اردوينو V3: 4 خطوات

فيديو: لعبة اطلاق النار اردوينو V3: 4 خطوات

فيديو: لعبة اطلاق النار اردوينو V3: 4 خطوات
فيديو: بسبب فري فاير كسرت هاتفي😭💔 2024, شهر نوفمبر
Anonim
Image
Image
اردوينو لعبة اطلاق النار V3
اردوينو لعبة اطلاق النار V3
اردوينو لعبة اطلاق النار V3
اردوينو لعبة اطلاق النار V3
اردوينو لعبة اطلاق النار V3
اردوينو لعبة اطلاق النار V3

هذه اللعبة مخصصة لك التي تستخدم airsoft أو co2 لإطلاق النار على الأهداف. انها لعبة.

للحصول على معلومات محدثة حول اللعبة والدعم:

www.facebook.com/arduinoshooting/

لصفحة المدونة الخاصة بي حول اللعبة:

shootinggameblog.wordpress.com

للرموز الخاصة باللعبة:

github.com/shootinggame82/Shooting-game-v3

لعبة الرماية هي أهداف x لاسلكية ، كل هدف به مستشعر اهتزاز يستشعر الاهتزاز الذي يحدث عند حدوث إصابة. المستشعرات اللاسلكية عبارة عن شريحة Atmega328 (شريحة Arduino Uno) وتقوم بإعادة شحن بطارية Li-Po.

يتم التحكم في وحدة التحكم الرئيسية لهذه اللعبة بواسطة Arduino ويتم التحكم في المسلسل من Raspberry Pi.

إذن كيف تعمل هذه اللعبة؟ حسنًا ، إنها 3 أوضاع للعبة:

Quicktime: العب جولات X وأطلق النار بسرعة كبيرة على كل هدف.

الوضع الزمني: أطلق النار على أكبر عدد ممكن من الأهداف في X ثانية.

Rapidfire: التقط صور X في أسرع وقت.

يستخدم النظام أجهزة الإرسال NRF24L01 للحصول على مسافات جيدة من وحدة التحكم الرئيسية. أنها تعمل على 2.6 جيجاهرتز (نفس شبكة WiFi تعمل)

في مشاريعي السابقة ، كنت أستخدم Piezo للاهتزاز ، ولكن الآن يتم استخدام مفتاح مستشعر الاهتزاز ، ولكن لا يزال بإمكانك استخدام Piezo إذا كنت قد صنعت نسختي القديمة من هذه اللعبة.

تحتوي اللعبة على شاشة لمس Raspberry Pi مقاس 7 بوصات تحمل نظام الويب الذي تتحكم فيه باللعبة من خلال طابعة طرفية تطبع النتائج.

اللوازم

لأجهزة الإرسال:

  • X Atmega328 مع Arduino Bootloader (اعتمادًا على عدد الأهداف)
  • X مفتاح مستشعر الاهتزاز
  • X بلو ليد
  • X أخضر ليد
  • X الأحمر الصمام
  • بطارية ليثيوم بو 3.7 فولت
  • وحدة شاحن X FC-75 Li-Po (أو طراز آخر)
  • X 100 uF مكثف
  • X حالات لأجهزة الاستشعار
  • X LD1117V33 (يجعل جهاز الإرسال 3.3 فولت آمنًا)
  • وحدات X NRF24L01
  • X x 3220 أوم مقاومات (مطلوب 3 لهدف واحد)
  • X 16 ميجا هرتز كريستال
  • X x 2 مكثفات غير مستكشفة 22 pF (مطلوب 2 لهدف واحد)

لاردوينو الرئيسي:

  • 1 Arduino (يوصى باستخدام Nano أو Uno ، يجب أن يكون لديك USB)
  • 1 وحدة NRF24L01
  • 1 10 مكثف فائق التوهج

بالنسبة لـ Raspberry Pi:

  • Raspberry Pi (استخدمت 3B)
  • شاشة تعمل باللمس مقاس 7 بوصات
  • ATXRaspi (اختياري ولكنه وحدة زر طاقة جيدة)
  • RTCRaspi (اختياري ولكنه وحدة RTC جيدة للحفاظ على الوقت والتاريخ)
  • طابعة ترمال (اختيارية ولكن يجب أن تكون قادرة على الطباعة)
  • ماسح الباركود (إصدار USB يعمل مثل لوحة المفاتيح ، اختياري)
  • طاقة 5 فولت جيدة (لقد استخدمت USB قديم بجهد 12 فولت بقوة 2.5 أمبير)

اشياء اخرى:

  • طاقة 12 فولت (لدي واحدة في 12 آه)
  • مقبس الشبكة (اجعل من السهل الاتصال بالشبكة)
  • الكابلات

الخطوة الأولى: أجهزة الاستشعار اللاسلكية

المستشعرات اللاسلكية
المستشعرات اللاسلكية
المستشعرات اللاسلكية
المستشعرات اللاسلكية
المستشعرات اللاسلكية
المستشعرات اللاسلكية

لنبدأ في صنع المستشعرات ، أستخدم 4 أجهزة استشعار لهذه اللعبة. ولكن يمكنك بسهولة إضافة المزيد من المستشعرات. تتصل المستشعرات برمز مكون من 4 أرقام عندما يرسل النظام الرئيسي الرمز مع الوظيفة التي سيضيء المستشعر مع الرمز الصحيح ويكون جاهزًا للهدف. الضوء الأزرق هو إعلام بأنك ستضرب هذا الهدف.

لدينا أيضًا مصباح أخضر وأحمر. يضيء اللون الأخضر دائمًا للإبلاغ عن تشغيل المستشعر. سيضيء اللون الأحمر فقط عندما تكون البطارية أقل من 3.1 فولت (يستخدم الوظيفة المضمنة في الشريحة لحساب مقدار البطارية.

مستشعر الاهتزاز متصل بالدبوس التناظري ويقرأ قيمته. عندما تنخفض القيمة ، يقوم المستشعر بإصدار اهتزاز وهذا هو المكان الذي نسجل فيه الضربة.

الهدف لديه وظيفة آمنة من الفشل ، والتي في حالة عدم ضربك في غضون X ثانية (الافتراضي هو 15 ثانية) أو إذا كان الإرسال لا يمكن القيام به ، فسوف يعودون إلى وضع البداية.

لن أشرح كيف ستقوم بتوصيل الأسلاك ، والتحقق من اللوح الكهربائي لمعرفة كيف ستفعل ذلك الشيء الوحيد غير الموجود فيه ، هو البطارية ومفتاح الطاقة والشاحن. الأمر متروك لك لتقرر كيف تريد ذلك.

استيراد حول الوحدة النمطية NRF24L +:

قد يكون الأمر مؤلمًا في … أن تجعلهم مستقرين ، جنبًا إلى جنب مع القوة الجيدة والعزلة من حوله ، والرمز الذي ستجعلهم يعملون. بالنسبة لي ، سيعطيني مكثف 10 uF اتصالًا مستقرًا وجيدًا ، ولكن يرجى المحاولة أولاً في حالة احتياجك إلى مكثف 100 uF على سبيل المثال. لفهم أيضًا بورق بلاستيكي أولًا ثم ورق ألومنيوم لحمايتهم من التداخل

أيضًا في الكود ، معدل البيانات لا تحتاج إلى أكثر من 250 كيلو بايت حتى لا تكون هذه هي المشكلة. لكن السلطة الفلسطينية: myRadio.setPALevel (RF24_PA_MIN) ؛

في الكود الذي قمت بتعيينه على MIN (هذا أثناء الاختبار) ، إنه الأدنى ولن يستخدم الكثير من الطاقة ، لكن النطاق لن يكون طويلاً. إذا حصلت على طاقة مستقرة وجيدة لهم ، فيمكنك الصعود إلى RF24_PA_MAX للحصول على أطول مدى ، لكنهم يحتاجون إلى قوة GOOOOOD المستقرة لذلك. جرب أيضًا LOW AND HIGH (تغيير نص MAX فقط) لمعرفة ما إذا كنت تحصل على اتصال جيد. ستحصل أيضًا على مجموعة جيدة من LOW و HIGH ما لم تكن قناصًا

احتفظ أيضًا بجهاز الإرسال بعيدًا عن بعضها بمقدار متر واحد على الأقل ، فقد يؤدي الإغلاق إلى جعل الإشارة سيئة

اختبر الاتصال ببعض أمثلة ping في مكتبة NRF24 (رابط على GitHub)

في الكود ، تحتاج إلى تعيين رقم التعريف الفريد لهذا الهدف:

int targID = 3401 ؛ // هذا هو معرف الهدف

int sendID = 2401 ؛ // هذا هو معرف الاستجابة

هناك أيضًا 3 وظائف محددة:

#define DEBUG

# تعريف البطارية

#define SHAKE // إذا تم استخدام مفتاح الاهتزاز بدلاً من PIEZO القديم

تصحيح:

أثناء الاختبار ، من الجيد أن تكون محددًا. ولكن عندما تجعلها متاحة ، لا تقم بتنشيطها.

البطارية:

إذا كنت لا تريد أن يكون لديك فاحص بطارية للأهداف ، فأنت بحاجة إلى إزالة هذا التعريف.

هزة:

إذا كنت قد قمت ببناء الإصدار القديم الخاص بي ، فلديك مستشعرات بيزو ، فقم بإزالة هذا للحصول على الكود الصحيح لها.

ATMEGA328 رقاقة

بدلاً من Arduino nano ، قررت استخدام شريحة ATMEGA328 (مع محمل التمهيد Uno) ، فهي سهلة البرمجة ، فقط قم بإزالة الشريحة من Arduino Uno وإضافة هذه الشريحة وتحميل الكود. تحقق من المخطط الكهربائي حول كيفية بناء الأهداف.

الرمز

لقد كتبت الكود باستخدام PlatformIO بدلاً من Arduino IDE. إنه برنامج أفضل للبرمجة فيه. لذا فإن الكود مختلف قليلاً. أوصي باستخدام هذا البرنامج بدلاً من ذلك.

الهدف ومربع الإرسال

لقد قمت بتوصيل المستشعر والصمام الأزرق على الهدف ، وبكابل فونو 3 ، 5 مم على 2 متر ، أقوم بتوصيله معًا في صندوق الإرسال الذي يحتوي على شريحة atmega وشاحن البطارية والمصباح الأخضر والأحمر. وذلك لحمايته من التعرض للرصاص الفولاذي.

الخطوة 2: وحدة تحكم اللعبة

وحدة تحكم اللعبة
وحدة تحكم اللعبة
وحدة تحكم اللعبة
وحدة تحكم اللعبة
وحدة تحكم اللعبة
وحدة تحكم اللعبة
وحدة تحكم اللعبة
وحدة تحكم اللعبة

الشيء التالي الذي يتعين علينا القيام به هو صنع وحدة تحكم لأجهزة الاستشعار. إنها Arduino تستخدم وحدة NRF24L01 للتواصل مع المستشعرات. لا شيء آخر. ثم يتم توصيل Arduino بـ USB في Raspberry Pi للعمل.

هذه هي الطريقة التي سوف تعمل. يستخدم المسلسل لمعرفة ما يجب فعله. سيرسل pi أوامر تسلسلية. أولاً أثناء الإعداد ، يرسل عدد الأهداف التي أضفتها وأرقام تعريف الأهداف. ثم ستقوم بوظيفة الاختبار وإبلاغ التوت إذا كانوا يتواصلون مع بعضهم البعض.

عندما تلعب اللعبة ، سترسل من pi نوع اللعبة وعدد الجولات / الزيارات التي يجب استخدامها. هذا كل شيء.

من الممكن استخدام وحدات NRF24L01 في raspberry pi ، لكن بالنسبة لي فإن Arduino يعد خيارًا أفضل للخطايا التي لا أستخدمها أبدًا في توت العليق ، لذلك لا أعرف مدى جودة عملها على المدى الطويل

هناك وحدة طاقة تستخدم 5 فولت لتوليد طاقة ثابتة صحيحة لأجهزة الإرسال. يمكنك استخدامها معك Arduino (انظر الصورة) الاسم هو Socket Adapter Module Board

عندما تلعب الأهداف سيتم تنشيطها بشكل عشوائي واحدًا تلو الآخر. عندما يتم ضرب أحدهم ، سيتم تنشيط واحد آخر.

أثناء الاختبار ، يمكنك تنشيط #DEFINE DEBUG لمعرفة كيفية عمله ، ولكن ليس عند استخدامه في كمبيوتر pi ، فلن يعمل بعد ذلك.

قم بتنزيل الكود على صفحة GitHub.

الخطوة 3: Raspberry Pi

فطيرة التوت
فطيرة التوت
فطيرة التوت
فطيرة التوت
فطيرة التوت
فطيرة التوت
فطيرة التوت
فطيرة التوت

لقد وصلنا الآن إلى Raspberry Pi.

لقد أضفت بعض الوظائف الإضافية حتى أتمكن من الحصول على زر تشغيل. تعد ATXRaspi 3 وحدة رائعة ، يمكنك تشغيلها وإيقاف تشغيلها وإعادة تشغيلها باستخدام زر. أيضا RTCRaspi للحفاظ على الوقت والتاريخ على بي. أتاح أيضًا إمكانية توصيل كبل شبكة فقط إذا احتجت إلى إجراء بعض التحديثات على النظام. سوف تجدهم على Lowpowerlab

الطابعة الحرارية التي ستجدها على Sparkfun وقارئ الباركود متاح على أمازون.

يعمل كمبيوتر Pi في وضع kiosk حتى يفتح المتصفح في البداية. أولاً وقبل كل شيء تحتاج إلى خادم ويب مع PHP 7 و mysql على كمبيوتر pi. (هناك الكثير من الأدلة حول الويب لهذا)

يرجى ملاحظة: إذا كنت ستستخدم طابعة حرارية مع raspberry pi التي تحتوي على تقنية البلوتوث ، فأنت بحاجة إلى تعطيل هذه الطابعة أولاً

يحتاج نص Python إلى pyserial وتثبيته: sudo apt-get install python-serial

لجعل عمل mysql ، قم بتثبيت ما يلي:

sudo apt-get install mysql-python sudo apt-get install python-mysql.connector

suso apt-get install pymysql

الآن يمكنك التحكم في Arduino من خلال المسلسل وكذلك تحديث قاعدة بيانات mysql.

الخطوة التالية هي إنشاء نص بيثون للاتصال بـ mysql.

في كل نصوص Python الثلاثة ، قم بتغيير الاتصال بقاعدة بيانات mysql الخاصة بك.

الخطوة التالية هي تشغيل نص python في البداية.

هناك ثلاثة برامج نصية للبيثون. ذاهب لاستخدام ماسح الباركود.

لجعلها تعمل تلقائيًا ، قمت بالتعديل:

sudo nano /etc/rc.local

وأضف ما يلي في الأسفل قبل الخروج 0:

sudo python /home/pi/Gamefiles/game.py & sudo python /home/pi/Gamefiles/print.py & sudo python /home/pi/Gamefiles/ean.py &

يرجى التغيير إلى المكان الصحيح لنص بايثون الخاص بك ولا تنس علامة & في النهاية

نحتاج الآن إلى إنشاء وضع kiosk لمتصفح الويب ، قم أولاً بإزالة المؤشر:

sudo apt-get install unclutter

sudo nano / etc / xdg / lxsession / LXDE-pi / تشغيل تلقائي

الآن في هذا الملف ابحث عن وعلق:

xscreensaver-no-splash # علّق على هذا السطر لتعطيل شاشة التوقف

أدناه إضافة:

xset s offxset -dpmsxset s noblank @ chromium-browser --noerrdialogs --force-device-scale-factor = 1.25 --kiosk https:// localhost

الخطوة التالية لإزالة جميع نصوص التمهيد والأشياء تضيف أيضًا شاشة التمهيد الخاصة بك هنا دليل سريع:

sudo nano /boot/config.txt وفي الجزء السفلي adddisable_splash = 1

إزالة رسالة نصية من صورة البداية:

sudo nano /usr/share/plymouth/themes/pix/pix.script

البحث عن وإزالة (أو التعليق):

message_sprite = Sprite () ؛ message_sprite. SetPosition (عرض الشاشة * 0.1 ، ارتفاع الشاشة * 0.9 ، 10000) ؛

و:

my_image = Image. Text (text، 1، 1، 1)؛ message_sprite. SetImage (my_image) ؛

الآن نقوم بإزالة رسائل التمهيد:

sudo نانو / التمهيد / cmdline.txt

استبدل "console = tty1" بـ "console = tty3"

وفي نهاية السطر أضف:

دفقة هادئة plymouth.ignore-serial-console logo.nologo vt.global_cursor_default = 0

واستبدل pi splash بنفسك:

sudo cp ~ / my_splash-p.webp" />

الآن لديك شاشة تمهيد مخصصة للعبتك. جهاز الكمبيوتر الخاص بك جاهز الآن للتعامل مع اللعبة ، لذا انتقل إلى الخطوة التالية!

الخطوة 4: قم بإعداد اللعبة

في هذه المرحلة ، قمت الآن بإنشاء اللعبة.

أول ما عليك القيام به هو إعداد نظام الويب. قم بتحميل قاعدة البيانات إلى خادم mysql الخاص بك. الملف موجود في مجلد التضمين والمسمى database.sql

الخطوة التالية هي تحرير ملف التكوين ، ستجده في ملف التضمين اسم المجلد config.php قم بتغيير معلومات تسجيل الدخول إلى قاعدة البيانات حتى يعمل البرنامج النصي.

نظام الويب متعدد اللغات ومكتوب باللغة الإنجليزية. هناك ترجمة سويدية متوفرة ، ولزيادة اللغة تحتاج إلى برنامج يسمى Poedit.

لإضافة المزيد من اللغة إلى نظام الويب ، يجب تحرير i18n_setup.php وإضافة المصفوفة:

return in_array ($ locale، ['en_US'، 'sv_SE'])؛ (السطر 23)

أيضًا لتغيير اللغة الافتراضية ، يجب تغييرها في السطر 27: $ lang = 'en_US'؛ تغيير en_US إلى لغتك.

يجب وضع ملفات اللغة باللغات / LANGCODE / LC_MESSAGES / وتسميتها main.mo (قم بتغيير كود اللغة إلى لغتك)

لتغيير لوحة المفاتيح في ملف selectplayers.php قمت بتغيير اللغة: "en" ، // en للغة الإنجليزية sv للتخطيط السويدي: 'qwerty' ، // qwerty للغة الإنجليزية swedish-qwerty للسويدية

تجدهم على الخط 218 و 219

اللغات المتوفرة في المجلد: الأصول / js / لوحة المفاتيح / اللغات والتخطيطات موجودة في الأصول / js / لوحة المفاتيح / التخطيطات وإضافة الملفات الصحيحة إلى السطر 118 و 119 (استبدل الملف الذي تجده هناك الآن)

أضف الأهداف

لإضافة أهداف ، انتقل إلى localhost / admin / وانقر فوق إضافة أهداف.

تحتاج إلى إضافة اسم للهدف ومعرف الهدف الفريد ومعرف الإرسال ، أضف أكبر عدد من الأهداف لديك.

أضف الألعاب

تحتاج أيضًا إلى إضافة بعض الألعاب. انتقل إلى localhost / admin / وانقر فوق إضافة لعبة

تحتاج إلى إضافة اسم للعبة ، ووصف ، والحد الأدنى والحد الأقصى للاعبين ، ونوع اللعبة ، وأيضًا مدى صعوبة اللعبة بين 1 إلى 5. وكيف هي اللعبة ، لذلك بالنسبة للعبة fastfire ، تضيف عدد الزيارات (المثال 30) للرسم السريع ، كم عدد الجولات (على سبيل المثال 8) وللمدة الزمنية التي ستلعب فيها (على سبيل المثال 60 لدقيقة واحدة)

ابدأ اللعبة

عند تشغيل اللعبة ، ستقوم بإجراء الاختبار المستهدف. لذلك يجب أن تكون الأهداف قيد التشغيل قبل أن تبدأ النظام الرئيسي. إذا نجح الجميع في الاختبار ، يمكنك استخدام النظام ، ولكن إذا لم يجتازوا الاختبار ، فلا يمكنك استخدامه. سيحاول التواصل حتى يحصلوا على رد.

حظا طيبا وفقك الله

حسنًا ، هذا كل شيء ، للحصول على الدعم والمعلومات حول التحديث في الكود ، يرجى اتباع صفحتي على Facebook لهذه اللعبة ، حتى أتمكن من الرد عليك بسرعة. ستجد روابط في الأعلى هنا.

موصى به: