
Სარჩევი:
2025 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2025-01-23 14:50

ეს ინსტრუქცია გაივლის ინფრაწითელი ლაზერული თამაშის თამაშის შექმნის პროცესს ძირითადი სერვერის კომპიუტერის და ჟოლოს პი ნულის გამოყენებით თითოეული მოთამაშისთვის. პროექტი დიდწილად ეყრდნობა Wifi კავშირს სერვერთან კომუნიკაციისთვის, რაც Pi დიდ კანდიდატს ხდის.
ამ პროექტში გამოყენებული სერვერი იყო ძველი დესკტოპის კომპიუტერი Linux- ით. კომპიუტერი არ საჭიროებს რაიმე განსაკუთრებულს და შესაძლოა ის Raspberry Pi 3. -დან იყოს გაშვებული. სერვერი და თითოეული პი ნული უნდა იყოს დაკავშირებული იმავე ქსელთან თამაშის დროს.
ნაბიჯი 1: მასალები


აღწერილობა და ზოგიერთი ბმული საჭირო მასალებისათვის ნაჩვენებია ქვემოთ. ქვემოთ მოყვანილი მასალების ჩამონათვალი არის 3 იარაღისთვის.
- სერვერის კომპიუტერი (1)
- Raspberry Pi Zero W (3) ადაფრუტი
- მინიმუმ 4 GB SD ბარათი (3) Amazon
- IR LED გადამცემი (3)
- IR მიმღები (6) ამაზონი
- წითელი LED (3)
- ლურჯი LED (3)
- მწვანე LED (3)
- პასიური ბუზერი (3) ამაზონი
- ღილაკი (6)
- LCD 16x2 ეკრანი I2C ადაპტერით (3) ამაზონი
- პორტატული ბატარეის პაკეტი (3) ამაზონი
- მიკრო და ჩვეულებრივი USB კაბელი (3) ამაზონი
- PN2222 ტრანზისტორი (3)
- 100Ω რეზისტორი (3)
- 1kΩ რეზისტორი (9)
არჩევითი ნივთები:
- ვესტი (3) ამაზონი
- ლენტი კაბელის გაფართოება (3) ამაზონი
ამ პროექტში ჩვენ დავასრულეთ IR LED გადამცემის აღება ლაზერული იარაღის ძველი კომპლექტიდან, რომელსაც ჰქონდა შავი კონუსი გადამცემი ირგვლივ, რათა დაგეხმარათ თითოეული იარაღის გასროლაში. თუმცა, ნებისმიერი გენერალური გადამცემი უნდა მუშაობდეს.
ზემოთ ჩამოთვლილი ნივთების გარდა, ლაზერული იარაღი თავად იყო 3D ბეჭდვით. ეს პროექტი ასევე მოითხოვს 3D პრინტერზე და ძაფზე წვდომას. საერთო ჯამში, სამი იარაღისთვის ჯამში 350 დოლარი შეადგინა.
ნაბიჯი 2: სერვერის დაყენება



პირველი რაც საჭიროა სერვერის დასაყენებლად არის Mosquitto MQTT საბროკერო სერვისის დაყენება. Mosquitto არის სერვისი, რომელიც უზრუნველყოფს თამაშის თითოეულ მოწყობილობას შორის კომუნიკაციის ჩარჩოს. ეს საშუალებას აძლევს სერვერს გაუგზავნოს შეტყობინებები სერვისთან დაკავშირებულ თითოეულ Pis- ს. ტერმინალში გაუშვით შემდეგი ბრძანებები.
sudo apt-get განახლება
sudo apt-get განახლება sudo apt-get ინსტალაცია mosquitto -y sudo apt-get install python3-pip -y sudo pip3 install paho-mqtt
ზოგიერთი GUI სერვერისთვის შეიქმნა GUI დიზაინერის გამოყენებით, სახელად Pygubu. ამის დაყენება შესაძლებელია გაშვებით:
pip3 დააინსტალირეთ pygubu
მეტი ინფორმაცია pygubu– ს შესახებ შეგიძლიათ იხილოთ
MQTT და Pygubu დაყენების შემდეგ შექმენით ახალი დირექტორია და დააკოპირეთ თანდართული ფაილები. დირექტორია უნდა შეიცავდეს:
- ltag.py
- წინასწარი თამაში.პია
- game_statistics.py
- gvars.py
- პიგუბუ.უი
- pygubu_limited.ui
- მთავარი. png
- self.png
- მტრები. png
- laser.jpg
შენიშვნა: ამ პროექტში გამოყენებული თანდართული სურათები არ არის შემქმნელი გუნდის მიერ და შესაბამისად არ ითხოვს ავტორიტეტს.
ნაბიჯი 3: ჟოლოს დაყენება

ეს ნაბიჯი უნდა გაიმეოროთ ჟოლოს თითოეულ პისზე.
1. დააინსტალირეთ ოპერაციული სისტემა
პირველი, დაიწყეთ Raspbian– ის ახალი ინსტალაციით. ჩვენ გირჩევთ გამოიყენოთ Lite ვერსია, რადგან Pi– სთვის ნაკლებია მისი მართვა, მაგრამ ორივე ვერსია კარგად უნდა მუშაობდეს. გადმოწერა შეგიძლიათ იხილოთ
2. დააინსტალირეთ MQTT
შემდეგი ჩვენ უნდა დავაინსტალიროთ MQTT საბროკერო სერვისი. ჩვენ ვიყენებთ Mosquitto– ს ამისათვის. ტერმინალში გაუშვით შემდეგი ბრძანებები.
sudo apt-get განახლება
sudo apt-get upgrade sudo apt-get დააინსტალირეთ კოღო -y sudo apt-get დააინსტალირეთ python3-pip -y sudo pip3 დააინსტალირეთ paho-mqtt
Mosquitto არის სერვისი, რომელიც უზრუნველყოფს თამაშის თითოეულ მოწყობილობას შორის კომუნიკაციის ჩარჩოს. ეს საშუალებას აძლევს სერვერს გაუგზავნოს შეტყობინებები სერვისთან დაკავშირებულ თითოეულ Pis- ს.
3. დააინსტალირეთ I2C ინსტრუმენტები
შემდეგი ბრძანება დააინსტალირებს ბიბლიოთეკებს, რომლებიც გამოიყენება LCD ეკრანისთვის.
sudo apt-get install -y python3-smbus i2c- ინსტრუმენტები
sudo apt -get დააინსტალირეთ rpi.gpio -y
I2c მისამართი შეიძლება შეიცვალოს lcddriver.py ფაილში. მისამართის პოვნა შესაძლებელია შემდეგი ბრძანების შეყვანის გზით.
i2cdetect -y 1
4. დააინსტალირეთ და დააკონფიგურირეთ LIRC
შექმენით ახალი დირექტორია და გადმოწერეთ თანდართული ფაილები ამ ადგილას.
ინტერნეტ ბრაუზერების უმეტესობა არ გადმოწერს ფაილებს გაფართოებების გარეშე. ამის თავიდან ასაცილებლად, ორი ფაილი აიტვირთა დროებითი გაფართოებით. ორივე "lircrc.deleteExtension" და "modules.deleteExtension" რეალურად უნდა იყოს გაფართოების გარეშე და ფაილებს უნდა დაერქვას "lircrc" და "modules" წარმატებული გადმოტვირთვის შემდეგ.
ეს ნაბიჯი აყენებს და კონფიგურაციას უწევს Linux ინფრაწითელი დისტანციური მართვის (LIRC) პაკეტს. დამატებითი ინფორმაციისთვის იხილეთ გაკვეთილი LIRC– ის შექმნის შესახებ:
ჯერ დააინსტალირეთ ბიბლიოთეკა, შემდეგ დააკოპირეთ ჩართული ფაილები მათ შესაბამის დირექტორიაში, როგორც ეს ნაჩვენებია ქვემოთ მოცემულ ბრძანებებში. დაბოლოს, გადატვირთეთ lircd სერვისი.
sudo apt-get დააინსტალირეთ python3-lirc -y
ახლად შექმნილი დირექტორიიდან შეასრულეთ შემდეგი ბრძანებები კონფიგურაციის ფაილების მათ სწორ ადგილას გადასატანად.
sudo mv lircd.conf hardware.conf lircrc lirc_options.conf/etc/lirc/
sudo mv მოდულები /etc /
შემდეგ გადატვირთეთ 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– ს კლიენტის ნომრის მინიჭება და სერვერის ადგილმდებარეობის დამატება. ეს ხდება თითოეული pi- სთვის შეტანილი "player.py" ფაილის რედაქტირებით ისე, რომ მათ ყველას ჰქონდეთ განსხვავებული კლიენტის ნომერი. კლიენტის ნომერი მინიჭებულია player.py მე -3 ხაზზე. მიანიჭეთ პირველი pi იყოს კლიენტი "1", მეორე იყოს "2" და მესამე იყოს კლიენტი "3".
LTSERVER ხაზი უნდა შეიცვალოს სერვერის IP მისამართით. ეს არის ნაპოვნი 'ifconfig | grep "inet addr" 'სერვერის კომპიუტერის ტერმინალში.
ნაბიჯი 4: იარაღის შეკრება


გააგრძელეთ თითოეული იარაღის მავთულხლართები გაყვანილობის დიაგრამისა და სქემატური სქემის მიხედვით.
თითოეული პერიფერიული მოწყობილობა უკავშირდება შემდეგ GPIO ქინძისთავებს Pi Zero– ზე:
- ბუზერი: GPIO5
- გამომწვევი: GPIO26
- გადატვირთვა: GPIO12
- IR გადამცემი: GPIO25
- IR მიმღებები: GPIO18
- წითელი LED: GPIO17
- მწვანე LED: GPIO27
- ცისფერი LED: GPIO22
- I2C_SDA: GPIO2
- I2C_SCL: GPIO3
იხილეთ სქემა უფრო დეტალურად.
თუ სასურველია, ლაზერული იარაღი შეიძლება 3D დაბეჭდოთ შემავალი საფეხურის მოდელის ფაილების გამოყენებით. გაითვალისწინეთ, რომ ორი "front1STL. STL" ფაილი უნდა იყოს დაბეჭდილი.
ნაბიჯი 5: თამაში



თამაში იწყება სერვერზე "ltag.py" ფაილის გაშვებით. ამის დასრულების შემდეგ, თითოეულ მოთამაშეს შეუძლია დაუკავშირდეს სერვერს შესაბამისი "player.py" ფაილის გაშვებით.
შენიშვნა: ბატარეის პაკეტის ჩართვის შემდეგ, pi- ს ჩატვირთვას შეიძლება ერთი წუთი დასჭირდეს.
ასევე შეიძლება სასარგებლო იყოს დაამატოთ cron სამუშაო, რომელიც ავტომატურად გაუშვებს player.py ფაილს pi დაწყებისთანავე. ჩვენ გაგვიჭირდა ამ სამუშაოს შესრულება და საბოლოოდ დავამატეთ ხაზი "/etc/rc.local" თითოეულ Pis ფაილზე "player.py" ფაილის გასაშვებად. ეს საშუალებას გაძლევთ დაიწყოთ თამაში PSH– ში Pi– ში მოთამაშის სკრიპტის გასაშვებად.
მას შემდეგ რაც თამაში დაიწყება მოთამაშეების მზადყოფნით, გამოჩნდება GUI, რომელიც იძლევა თამაშის რამდენიმე პარამეტრის კონფიგურაციის საშუალებას. თამაში იწყება დაწყების ღილაკზე დაჭერის შემდეგ.
ყოველი თამაშის შემდეგ გამოჩნდება დამთავრებული GUI სტატისტიკით წინა თამაშის შესახებ, მათ შორის ტეგებს, გლობალურ პროცენტებს და თამაშის ხანგრძლივობას.
შენიშვნა: პროგრამული ბიბლიოთეკების შეზღუდვების გამო, სიზუსტის მოხსენების ტეგების ადგილები არ წარმოადგენს რეალურ ლაზერულ ტეგებს. ახლანდელ ვერსიაში, მოთამაშეთა სიზუსტის ანგარიშის სურათი მხოლოდ ესთეტიკისთვის არის მომავლის ვერსიის იმედით, ტეგების ადგილმდებარეობის რეალური განხორციელებით.
ნაბიჯი 6: მომავალი გაუმჯობესება


საერთო ჯამში, პროექტი დიდი წარმატება იყო. გზად, ჩვენ ვიფიქრეთ რამდენიმე დამატებით მახასიათებელზე, რომელიც შეიძლება დაემატოს მომავალ გამოცემას.
- 3D ბეჭდვის იარაღის უფრო გამძლე დიზაინის დიზაინი
- GUI ჩამოსაშლელი მენიუს დასრულება წინა თამაშების სტატისტიკის საჩვენებლად
- უფრო ინფრაწითელი მიმღებები, რომლებიც შეიძლება დაერთოს მოთამაშეთა ჟილეტებს
- თამაშის დამატებითი რეჟიმები, რომელთა არჩევა შესაძლებელია Pregame GUI– ში
- მოთამაშეთა სტატისტიკის გვერდზე ტეგების უფრო ზუსტი ალგორითმი
გირჩევთ:
Arduino MFRC522 სამეურვეო პროგრამა - არის თუ არა RFID წარწერა ამოღებული?: 6 ნაბიჯი

Arduino MFRC522 სამეურვეო პროგრამა - არის თუ არა RFID ნიშანი ამოღებული?: ეს გაკვეთილი თავდაპირველად გამოქვეყნებულია მაღალ ძაბვებზე
არდუინოს ლაზერული ინფრაწითელი თერმომეტრი: 7 ნაბიჯი (სურათებით)

არდუინოს ლაზერული ინფრაწითელი თერმომეტრი: ამ პროექტში მე გაჩვენებთ თუ როგორ უნდა ავაშენოთ ციფრული ლაზერული ინფრაწითელი თერმომეტრი მორგებული 3D დაბეჭდილი გარსით
Canne Blanche ლაზერული / ლაზერული თეთრი ხელჯოხი არდუინოთი: 6 ნაბიჯი

Canne Blanche Laser / Laser White Cane with Arduino: Télémètre laser vibrant à une fréquence inversence proportnelle à la distance pointée. Assistance aux déficiences visuelles. ლაზერული დიაპაზონი ვიბრირებს სიხშირეზე შებრუნებულად პროპორციულად ხაზგასმულ მანძილზე. ვიზუალური დეფიციტის დახმარება
ლაზერული ყუთის მუსიკა ლაზერული სინათლის ჩვენება: 18 ნაბიჯი (სურათებით)

Laser Box Music Laser Light Show: მე ადრე გამოვაქვეყნე Instructable, რომელშიც აღწერილია როგორ გამოვიყენო კომპიუტერის მყარი დისკები მუსიკალური ლაზერული სინათლის შოუს გასაკეთებლად. მე გადავწყვიტე კომპაქტური ვერსიის გაკეთება ელექტრული ყუთისა და RC მანქანის ძრავების გამოყენებით. სანამ დავიწყებ, ალბათ უნდა გითხრათ, რომ lase
მინი CNC ლაზერული ხის გრავიურა და ლაზერული ქაღალდის საჭრელი .: 18 ნაბიჯი (სურათებით)

მინი CNC ლაზერული ხის გრავიურა და ლაზერული ქაღალდის საჭრელი. სათამაშო ფართობი არის 40 მმ x 40 მმ მაქს. არ არის სახალისო საკუთარი ნივთების დამზადება ძველი ნივთებისგან?