جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
سوف يسير هذا Instructable خلال عملية إنشاء لعبة Infrared Laser Tag باستخدام كمبيوتر خادم أساسي و Raspberry Pi صفر لكل لاعب. يعتمد المشروع بشكل كبير على اتصال Wifi للتواصل مع الخادم مما يجعل Pi مرشحًا رائعًا.
كان الخادم المستخدم في هذا المشروع عبارة عن كمبيوتر مكتبي قديم يعمل بنظام Linux. لا يحتاج الكمبيوتر إلى أي شيء خاص ، ويمكن تشغيله على الأرجح من Raspberry Pi 3. يجب توصيل الخادم وكل من pi zero's بنفس الشبكة أثناء اللعب.
الخطوة 1: المواد
يتم عرض الوصف وبعض الروابط للمواد المطلوبة أدناه. قائمة المواد أدناه لثلاث بنادق.
- كمبيوتر الخادم (1)
- Raspberry Pi Zero W (3) Adafruit
- بطاقة SD سعة 4 جيجابايت على الأقل (3) أمازون
- مرسل IR LED (3)
- مستقبل الأشعة تحت الحمراء (6) أمازون
- أحمر ليد (3)
- الأزرق ليد (3)
- أخضر ليد (3)
- الجرس السلبي (3) أمازون
- زر ضغط (6)
- شاشة LCD 16x2 مع محول I2C (3) Amazon
- حزمة بطارية محمولة (3) أمازون
- كابل Micro إلى USB عادي (3) Amazon
- الترانزستور PN2222 (3)
- 100Ω المقاوم (3)
- 1kΩ المقاوم (9)
العناصر الاختيارية:
- فيست (3) أمازون
- تمديد كابل الشريط (3) أمازون
في هذا المشروع ، انتهى بنا الأمر بأخذ IR LED Transmitter من مجموعة قديمة من مسدسات الليزر التي تحتوي على مخروط أسود حول جهاز الإرسال للمساعدة في تضييق لقطة كل بندقية. ومع ذلك ، يجب أن يعمل أي جهاز إرسال عام.
بالإضافة إلى العناصر المذكورة أعلاه ، كانت مسدسات الليزر نفسها مطبوعة ثلاثية الأبعاد. لذلك سيتطلب هذا المشروع أيضًا الوصول إلى طابعة ثلاثية الأبعاد وخيوط. بشكل عام ، وصل الإجمالي لثلاث بنادق إلى حوالي 350 دولارًا.
الخطوة 2: إعداد الخادم
أول شيء مطلوب لإعداد الخادم هو تثبيت Mosquitto MQTT Broker Service. Mosquitto هي الخدمة التي توفر إطار عمل للاتصال بين كل جهاز من الأجهزة في اللعبة. هذا يسمح للخادم بإرسال رسائل إلى كل Pis متصل بالخدمة. في المحطة ، قم بتشغيل الأوامر التالية.
sudo apt-get update
sudo apt-get Upgrade sudo apt-get install mosquitto -y sudo apt-get install python3-pip -y sudo pip3 install paho-mqtt
تم إنشاء بعض واجهات المستخدم الرسومية للخادم باستخدام مصمم واجهة المستخدم الرسومية يسمى Pygubu. يمكن تثبيت هذا عن طريق تشغيل:
pip3 تثبيت pygubu
يمكن العثور على مزيد من المعلومات حول pygubu على
بمجرد تثبيت MQTT و Pygubu ، قم بإنشاء دليل جديد وانسخ الملفات المرفقة. يجب أن يتضمن الدليل:
- ltag.py
- pregame.py
- game_statistics.py
- gvars.py
- pygubu.ui
- pygubu_limited.ui
- home.png
- self.png
- أعداء. png
- laser.jpg
ملاحظة: الصور المرفقة المستخدمة في هذا المشروع لم يتم إنشاؤها من قبل فريق التطوير وبالتالي لا تدعي حقوق التأليف.
الخطوة 3: إعداد Raspberry Pi
يجب تكرار هذه الخطوة على كل من Raspberry Pis.
1. تثبيت نظام التشغيل
أولاً ، ابدأ بتثبيت جديد لـ Raspbian. نوصي باستخدام الإصدار Lite نظرًا لأنه لا يمكن لـ Pi التعامل معه ، ولكن يجب أن يعمل أي من الإصدارين بشكل جيد. يمكن العثور على التنزيل على
2. تثبيت MQTT
بعد ذلك نحتاج إلى تثبيت خدمة وسيط MQTT. سنستخدم Mosquitto لهذا الغرض. في المحطة ، قم بتشغيل الأوامر التالية.
sudo apt-get update
sudo apt-get Upgrade sudo apt-get install mosquitto -y sudo apt-get install python3-pip -y sudo pip3 install paho-mqtt
Mosquitto هي الخدمة التي توفر إطار عمل للاتصال بين كل جهاز من الأجهزة في اللعبة. هذا يسمح للخادم بإرسال رسائل إلى كل Pis متصل بالخدمة.
3. تثبيت أدوات I2C
سيقوم الأمر التالي بتثبيت المكتبات المستخدمة لشاشة LCD.
sudo apt-get install -y python3-smbus i2c-tools
sudo apt-get install rpi.gpio -y
قد يلزم تغيير عنوان i2c في ملف lcddriver.py. يمكن العثور على العنوان عن طريق إدخال الأمر التالي.
i2cdetect -y 1
4. تثبيت وتكوين LIRC
قم بإنشاء دليل جديد وقم بتنزيل الملفات المرفقة بهذا الموقع.
لن تقوم معظم متصفحات الإنترنت بتنزيل الملفات بدون ملحقات. للتغلب على هذا ، تم تحميل ملفين بامتدادات مؤقتة. في الواقع ، يجب أن يكون كل من "lircrc.deleteExtension" و "modules.deleteExtension" أقل امتدادًا ويجب إعادة تسمية الملفات إلى "lircrc" و "modules" بعد أن يتم تنزيلها بنجاح.
تقوم هذه الخطوة بتثبيت وتكوين التبعيات لحزمة Linux Infrared Remote Control (LIRC). لمزيد من المعلومات ، راجع البرنامج التعليمي لإعداد LIRC على:
قم أولاً بتثبيت المكتبة ، ثم انسخ الملفات المضمنة إلى الدلائل الخاصة بها كما هو موضح في الأوامر أدناه. أخيرًا ، أعد تشغيل خدمة lircd.
sudo apt-get install python3-lirc -y
من الدليل الذي تم إنشاؤه حديثًا ، قم بتنفيذ الأوامر التالية لنقل ملفات التكوين إلى مواقعها الصحيحة.
sudo mv lircd.conf Hardware.conf lircrc lirc_options.conf / etc / lirc /
وحدات sudo mv / إلخ /
ثم أعد تشغيل خدمة lircd عن طريق تشغيل:
إعادة تشغيل sudo /etc/init.d/lircd
بعد ذلك ، قم بتحرير ملف /boot/config.txt وأضف السطر التالي
dtoverlay = lirc-rpi ، gpio_in_pin = 18 ، gpio_out_pin = 25
أعد تشغيل pi للسماح بتنفيذ التغييرات.
sudo إعادة التشغيل
5. قم بتمكين I2C وتحرير العميل لكل لاعب
بعد ذلك ، سنقوم بتمكين واجهة I2C. يمكن القيام بذلك باستخدام
sudo raspi-config
وتمكين I2C في قائمة "خيارات الواجهة".
6. تحرير Player CLIENT و LTSERVER
يجب أن يتضمن دليل اللعبة الآن الملفات الأربعة المتبقية.
- i2c_lib.py
- lcddriver.py
- ltsounds.py
- player.py
تتمثل الخطوة الأخيرة في تكوين pi في تخصيص رقم عميل لكل pi وإضافة موقع الخادم. يتم ذلك عن طريق تحرير ملف "player.py" المضمن لكل pi بحيث يكون لكل منهم رقم عميل مختلف. يتم تعيين رقم العميل في السطر 3 من player.py. تعيين pi الأول ليكون العميل "1" ، والثاني ليكون "2" ، والثالث ليكون العميل "3".
يجب تغيير خط LTSERVER إلى عنوان IP الخاص بالخادم. تم العثور على هذا عن طريق كتابة 'ifconfig | grep "inet addr" "في محطة كمبيوتر الخادم.
الخطوة 4: تجميع البندقية
تابع توصيل كل من البنادق وفقًا لمخطط الأسلاك والتخطيطي أعلاه.
يتم توصيل كل من الأجهزة الطرفية بدبابيس GPIO التالية على Pi Zero:
- الجرس: GPIO5.0
- الزناد: GPIO26
- إعادة التحميل: GPIO12
- مرسل الأشعة تحت الحمراء: GPIO25
- مستقبلات الأشعة تحت الحمراء: GPIO18
- الصمام الأحمر: GPIO17
- الصمام الأخضر: GPIO27
- الصمام الأزرق: GPIO22
- I2C_SDA: GPIO2
- I2C_SCL: GPIO3
انظر التخطيطي لمزيد من التفاصيل.
إذا رغبت في ذلك ، يمكن طباعة مسدسات الليزر ثلاثية الأبعاد باستخدام ملفات نموذج الخطوة المضمنة. ضع في اعتبارك أنه يجب طباعة اثنين من ملفات "front1STL. STL".
الخطوة 5: تشغيل اللعبة
تبدأ اللعبة بتشغيل ملف "ltag.py" على الخادم. بمجرد القيام بذلك ، يمكن لكل لاعب الاتصال بالخادم عن طريق تشغيل ملف "player.py" الخاص به.
ملاحظة: بعد توصيل حزمة البطارية ، قد يستغرق تشغيل pi ما يصل إلى دقيقة.
قد يكون من المفيد أيضًا إضافة وظيفة cron تعمل تلقائيًا على تشغيل ملف player.py بمجرد بدء pi. لقد واجهنا صعوبة في تشغيل هذا الأمر وانتهى بنا الأمر بإضافة سطر إلى ملف "/etc/rc.local" على كل ملف من ملفات Pis لتشغيل ملف "player.py". يسمح هذا ببدء اللعبة دون الحاجة إلى SSH في Pi لتشغيل البرنامج النصي للاعب.
بمجرد بدء اللعبة مع استعداد اللاعبين ، ستظهر واجهة المستخدم الرسومية التي تسمح بتهيئة عدد قليل من إعدادات اللعبة. تبدأ اللعبة بعد الضغط على زر البدء.
بعد كل لعبة ، ستظهر واجهة المستخدم الرسومية النهائية مع إحصاءات حول اللعبة السابقة بما في ذلك العلامات والنسب المئوية العالمية ومدة اللعبة.
ملاحظة: نظرًا للقيود في مكتبات البرامج ، فإن مواقع علامات تقرير الدقة لا تمثل علامات الليزر الفعلية. في الإصدار الحالي ، صورة تقرير دقة المشغل مخصصة فقط للجمال على أمل إصدار مستقبلي مع تطبيق موقع العلامة الفعلي.
الخطوة 6: التحسينات المستقبلية
بشكل عام ، حقق المشروع نجاحًا كبيرًا. على طول الطريق ، فكرنا في بعض الميزات الإضافية التي يمكن إضافتها إلى إصدار مستقبلي.
- تصميم زناد أكثر ثباتًا للمسدسات المطبوعة ثلاثية الأبعاد
- القائمة المنسدلة لإنهاء واجهة المستخدم الرسومية لعرض الإحصائيات من الألعاب السابقة
- المزيد من مستقبلات الأشعة تحت الحمراء التي يمكن تركيبها على سترات اللاعبين
- أوضاع اللعبة الإضافية التي يمكن اختيارها في واجهة المستخدم الرسومية Pregame
- خوارزمية موقع العلامة أكثر دقة على صفحة إحصائيات اللاعبين