Სარჩევი:

Arduino სროლა თამაშის V3: 4 ნაბიჯი
Arduino სროლა თამაშის V3: 4 ნაბიჯი

ვიდეო: Arduino სროლა თამაშის V3: 4 ნაბიჯი

ვიდეო: Arduino სროლა თამაშის V3: 4 ნაბიჯი
ვიდეო: რა ხდება კანონიერი ქურდების საკნებში 2024, ივლისი
Anonim
Image
Image
Arduino სროლა თამაშის V3
Arduino სროლა თამაშის V3
Arduino სროლა თამაშის V3
Arduino სროლა თამაშის V3
Arduino სროლა თამაშის V3
Arduino სროლა თამაშის 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 თამაშის რეჟიმი:

სწრაფი დრო: ითამაშეთ X რაუნდი და ისროლეთ ისე სწრაფად, რამდენადაც შეგიძლიათ თითოეულ სამიზნეზე.

დრო: გადაიღეთ რაც შეიძლება მეტი სამიზნე X წამში.

Rapidfire: გადაიღეთ X კადრები უმოკლეს დროში.

სისტემა გვაძლევს NRF24L01 გადამცემებს, რომ კარგი დისტანციები მივიღოთ მთავარი კონტროლერისგან. ისინი მუშაობენ 2.6 GHz– ზე (იგივეა რაც WiFi მუშაობს)

ჩემს წარსულ პროექტებში ვიყენებდი პიეზოს ვიბრაციისთვის, მაგრამ ახლა ვიბრაციის სენსორის გადამრთველს იყენებენ. მაგრამ თქვენ მაინც შეგიძლიათ გამოიყენოთ პიეზო, თუ ამ თამაშის ძველი ვერსია გააკეთეთ.

თამაშს აქვს Raspberry Pi 7 სენსორული ეკრანი, რომელიც ფლობს ვებ სისტემას, რომელსაც თქვენ აკონტროლებთ თამაშს. ტერმინალური პრინტერი ბეჭდავს შედეგებს.

მარაგები

გადამცემებისთვის:

  • X Atmega328 Arduino Bootloader– ით (დამოკიდებულია რამდენი სამიზნეზე)
  • X ვიბრაციის სენსორის გადამრთველი
  • X ლურჯი ლედი
  • X მწვანე ლედი
  • X წითელი ლედი
  • X 3.7v Li-Po ბატარეა
  • X FC-75 Li-Po დამტენი მოდული (ან სხვა მოდელი)
  • X 100 uF კონდენსატორი
  • X ქეისი სენსორებისთვის
  • X LD1117V33 (ქმნის უსაფრთხო 3.3 V გადამცემს)
  • X NRF24L01 მოდულები
  • X x 3 220 Ohm რეზისტორები (3 საჭიროა სამიზნეზე)
  • X 16 MHz კრისტალი
  • X x 2 Unplorized Capacitors 22 pF (2 საჭიროა ერთი სამიზნეზე)

ძირითადი არდუინოსთვის:

  • 1 არდუინო (ნანო ან უნო რეკომენდირებულია, საჭიროა USB- ის ქონა)
  • 1 NRF24L01 მოდული
  • 1 10 uF კონდენსატორი

ჟოლოს პიისთვის:

  • ჟოლო Pi (მე გამოვიყენე 3B)
  • 7 "სენსორული ეკრანი
  • ATXRaspi (სურვილისამებრ, მაგრამ კარგი დენის ღილაკის მოდული)
  • RTCRaspi (სურვილისამებრ, მაგრამ კარგი RTC მოდული დროის და თარიღის შესანახად)
  • ტერმინალური პრინტერი (სურვილისამებრ, მაგრამ საჭიროა დაბეჭდვის საშუალება)
  • შტრიხკოდების სკანერი (USB ვერსია, რომელიც მუშაობს კლავიატურის მსგავსად, სურვილისამებრ)
  • კარგი 5 ვ სიმძლავრე (მე გამოვიყენე ძველი 12 ვ USB 2.5 ა სიმძლავრით)

Სხვა რაღაცეები:

  • 12 ვ სიმძლავრე (მაქვს ერთი 12 აჰზე)
  • ქსელის სოკეტი (გაუადვილეთ ქსელთან დაკავშირება)
  • კაბელები

ნაბიჯი 1: უკაბელო სენსორები

უკაბელო სენსორები
უკაბელო სენსორები
უკაბელო სენსორები
უკაბელო სენსორები
უკაბელო სენსორები
უკაბელო სენსორები

დავიწყოთ სენსორების დამზადება. ამ თამაშისთვის ვიყენებ 4 სენსორს. მაგრამ თქვენ შეგიძლიათ მარტივად დაამატოთ მეტი სენსორი. სენსორები დაუკავშირდებიან 4 ნომრის კოდს, როდესაც ძირითადი სისტემა გამოაგზავნის კოდს, რა ფუნქციით აანთებს სენსორი სწორი კოდით და მზად იქნება სამიზნეზე. ცისფერი შუქი აცნობებს, რომ ეს არის ის სამიზნე, რომელსაც აპირებ დარტყმა.

ჩვენ ასევე გვაქვს მწვანე და წითელი led. მწვანე ყოველთვის ანათებს იმის შესახებ, რომ სენსორი ჩართულია. წითელი მხოლოდ მაშინ ანათებს, როდესაც ბატარეა 3.1 ვ -ზე ნაკლებია (ის იყენებს ჩიპში ჩაშენებულ ფუნქციას, რათა გამოთვალოს რამდენი არის ბატარეაში.

ვიბრაციის სენსორი უკავშირდება ანალოგიურ პინს და კითხულობს მის მნიშვნელობას. როდესაც ღირებულება იძირება, სენსორი ახდენს ვიბრაციის სურათს და ეს არის ადგილი, სადაც ჩვენ აღვნიშნავთ დარტყმას.

სამიზნეს აქვს failsafe ფუნქცია, რომელიც მოიცავს თქვენ არ მოხვდა X წამში (ნაგულისხმევი არის 15 წამი) ან თუ გადაცემის არ შეიძლება გაკეთდეს ისინი დაბრუნდებიან საწყის პოზიციაში.

მე არ ვაპირებ ახსნას, თუ როგორ აპირებთ მავთულხლართებს, შეამოწმეთ ელექტრო ფურცელი, რომ ნახოთ როგორ აპირებთ ამას. ერთი რამ, რაც მასზე არ არის, არის ბატარეა, დენის გადამრთველი და დამტენი. შენი გადასაწყვეტია, როგორ გინდა.

მნიშვნელოვანია NRF24L+ მოდულის შესახებ:

ეს შეიძლება იყოს ტკივილი… მათი სტაბილურობის მიღწევაში, კარგ ძალასა და მის ირგვლივ იზოლაციასთან ერთად და კოდს თქვენ მიიღებთ მათ სამუშაოდ. ჩემთვის 10 uF კონდენსატორი მომცემს სტაბილურ და კარგ კავშირს, მაგრამ გთხოვთ სცადოთ ჯერ, თუ გჭირდებათ მაგალითად 100 uF კონდენსატორი. ასევე გადააფარეთ ისინი ჯერ პლასტმასის კილიტა და შემდეგ ალუმინის ფოლგა, რომ დაიცვათ ჩარევისგან

ასევე კოდში, მონაცემთა სიჩქარე არ გჭირდებათ 250 Kb ზე მეტი, ასე რომ პრობლემა არ იქნება. მაგრამ PA: myRadio.setPALevel (RF24_PA_MIN);

კოდში, რომელიც მე დავადგინე MIN (ეს არის გამოცდის დროს), ის ყველაზე დაბალია და არ გამოიყენებს ამდენ ძალას, მაგრამ დიაპაზონი არც თუ ისე გრძელი იქნება. თუ თქვენ მიიღებთ მათ სტაბილურ და კარგ ძალას, შეგიძლიათ მიაღწიოთ RF24_PA_MAX– ს, რომ მიიღოთ ყველაზე გრძელი დიაპაზონი, მაგრამ მათ სჭირდებათ GOOOOOD სტაბილური ენერგია ამისათვის. სცადეთ ასევე დაბალი და მაღალი (შეცვალეთ მხოლოდ MAX ტექსტი) რომ ნახოთ კარგი კომუნიკაცია გაქვთ თუ არა. ასევე თქვენ მიიღებთ კარგ დიაპაზონს LOW და HIGH, თუ არ აპირებთ სნაიპერი იყოთ

ასევე შეინახეთ გადამცემები ერთმანეთისგან მინიმუმ ერთი მეტრის დაშორებით, დახურვას შეუძლია სიგნალი ცუდი გახადოს

შეამოწმე ურთიერთობა პინგის მაგალითთან NRF24 ბიბლიოთეკაში (ბმული GitHub– ზე)

კოდში თქვენ უნდა დააყენოთ უნიკალური საიდენტიფიკაციო ნომერი ამ მიზნისთვის:

int targID = 3401; // ეს არის სამიზნე ID

int sendID = 2401; // ეს არის პასუხის ID

ასევე არსებობს 3 განსაზღვრული ფუნქცია:

#განსაზღვრეთ DEBUG

#განსაზღვრეთ ბატარეა

#define SHAKE // თუ SHAKE SWITCH გამოიყენება ძველი პიეზოს ნაცვლად

შეცდომა:

ტესტის დროს ეს კარგია რომ განისაზღვროს. მაგრამ როდესაც მათ ხელმისაწვდომს გახდით, ნუ გააქტიურებთ მას.

ბატარეა:

თუ არ გსურთ გქონდეთ სამიზნეების ბატარეის შემოწმება, თქვენ უნდა ამოიღოთ ეს განსაზღვრება.

შეარყიე:

თუ თქვენ ააშენეთ ჩემი ძველი ვერსია, გაქვთ პიეზო სენსორები, შემდეგ წაშალეთ ისინი სწორი კოდის მისაღებად.

ATMEGA328 ჩიპი

Arduino nano– ს ნაცვლად გადავწყვიტე გამოვიყენო ATMEGA328 ჩიპი (Uno boot loader– ით), მათი პროგრამირება მარტივია, უბრალოდ ამოიღეთ ჩიპი Arduino Uno– დან და დაამატეთ ეს ჩიპი და ატვირთეთ კოდი. შეამოწმეთ ელექტრო სქემა, თუ როგორ უნდა ავაშენოთ სამიზნეები.

Კოდი

მე დავწერე კოდი PlatformIO– ით Arduino IDE– ს ნაცვლად. ეს არის უკეთესი პროგრამული უზრუნველყოფა. ასე რომ, კოდი ოდნავ განსხვავებულია. მე გირჩევთ გამოიყენოთ ეს პროგრამა ამის ნაცვლად.

სამიზნე და გადამცემი ყუთი

მე დავამატე სენსორი და ლურჯი led სამიზნეზე და 3, 5 მმ -იანი ფონო კაბელით 2 მ -ზე ვუკავშირებ მას გადამცემ ყუთში, რომელსაც აქვს ატმეგა ჩიპი, ბატარეის დამტენი და მწვანე და წითელი led. ეს არის იმისათვის, რომ დაიცვას იგი ფოლადის ტყვიებით დარტყმისგან.

ნაბიჯი 2: თამაშის კონტროლერი

თამაშის კონტროლერი
თამაშის კონტროლერი
თამაშის კონტროლერი
თამაშის კონტროლერი
თამაშის კონტროლერი
თამაშის კონტროლერი
თამაშის კონტროლერი
თამაშის კონტროლერი

შემდეგი რაც ჩვენ უნდა გავაკეთოთ არის სენსორების კონტროლერი. ეს არის Arduino, რომელიც იყენებს NRF24L01 მოდულს სენსორებთან დასაკავშირებლად. Არაფერი სხვა. Arduino შემდეგ უკავშირდება USB ჟოლოს პი მუშაობას.

ეს ასე იქნება. ის იყენებს სერიალს, რომ იცოდეს რა უნდა გააკეთოს. Pi გამოგიგზავნით სერიულ ბრძანებებს. პირველი დაყენების დროს ის აგზავნის რამდენი სამიზნე დაამატეთ და სამიზნეების საიდენტიფიკაციო ნომრები. შემდეგ ის შეასრულებს ტესტის ფუნქციას და აცნობებს ჟოლოს პის, თუკი ისინი დაუკავშირდებიან ერთმანეთს.

როდესაც თამაშობთ, ის გამოგიგზავნით პიდან რა ტიპის თამაშს და რამდენ რაუნდს/ჰიტს გამოიყენებთ. Ის არის.

შესაძლებელია NRF24L01 მოდულების გამოყენება ჟოლოს პიში, მაგრამ ჩემთვის Arduino არის უკეთესი ვარიანტი, მე არასოდეს ვიყენებ მათ ჟოლოში, ასე რომ არ ვიცი რამდენად კარგია ისინი გრძელვადიან პერსპექტივაში

არსებობს სიმძლავრის მოდული, რომელიც იყენებს 5 v- ს გადამცემებისთვის სწორი სტაბილური სიმძლავრის შესაქმნელად. თქვენ შეგიძლიათ გამოიყენოთ ისინი Arduino– სთან ერთად (იხილეთ სურათი) სახელი არის Socket Adapter Module Board

როდესაც თამაშობთ მიზნები შემთხვევით გააქტიურდება სათითაოდ. როდესაც ერთი მოხვდა, მეორე გააქტიურდება.

ტესტის დროს შეგიძლიათ გააქტიუროთ #DEFINE DEBUG, რომ ნახოთ როგორ მუშაობს, მაგრამ არა როდესაც მას იყენებთ პი კომპიუტერში, ის მაშინ არ იმუშავებს.

ჩამოტვირთეთ კოდი GitHub გვერდზე.

ნაბიჯი 3: ჟოლო პი

ჟოლო პი
ჟოლო პი
ჟოლო პი
ჟოლო პი
ჟოლო პი
ჟოლო პი
ჟოლო პი
ჟოლო პი

ჩვენ ახლა მივედით Raspberry Pi– სთან.

მე დავამატე რამდენიმე დამატებითი ფუნქცია, ასე რომ მე შემიძლია დენის ღილაკი. ATXRaspi 3 არის შესანიშნავი მოდული, შეგიძლიათ ჩართოთ, გამორთოთ და გადატვირთოთ pi ღილაკით. ასევე RTCRaspi დროსა და თარიღზე პი. ასევე შესაძლებელი გახდა ქსელის კაბელის მხოლოდ დანამატი, მე უნდა განახლება სისტემაში. თქვენ ნახავთ მათ Lowpowerlab– ში

თერმული პრინტერი თქვენ ნახავთ sparkfun– ზე და შტრიხკოდების მკითხველი ხელმისაწვდომია ამაზონზე.

Pi კომპიუტერი მუშაობს კიოსკის რეჟიმში, ასე რომ ბრაუზერი გაიხსნება თავიდან. უპირველეს ყოვლისა თქვენ უნდა გქონდეთ ვებ სერვერი PHP 7 და mysql pi კომპიუტერზე. (ინტერნეტში ბევრი სახელმძღვანელოა ამისათვის)

გთხოვთ გაითვალისწინოთ: თუ თქვენ აპირებთ თერმული პრინტერის გამოყენებას ჟოლოს პი -ით, რომელიც ჩაშენებულია bluetooth– ში, თქვენ ჯერ უნდა გამორთოთ ის

პითონის სკრიპტს სჭირდება pyserial და თქვენ დააინსტალირეთ: sudo apt-get install python-serial

იმისათვის, რომ mysql მუშაობდეს დააინსტალირეთ შემდეგი:

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

suso apt-get დააინსტალირეთ pymysql

ახლა თქვენ შეგიძლიათ აკონტროლოთ Arduino სერიის საშუალებით და ასევე განაახლოთ mysql მონაცემთა ბაზა.

შემდეგი ნაბიჯი არის პითონის სკრიპტის შექმნა mysql– თან დასაკავშირებლად.

სამივე პითონის სკრიპტში შეცვალეთ კავშირი თქვენს mysql მონაცემთა ბაზასთან.

შემდეგი ნაბიჯი არის პითონის სკრიპტის გაშვება თავიდანვე.

სამი პითონის სკრიპტი არსებობს. აპირებს შტრიხკოდების სკანერის გამოყენებას.

მათი ავტომატური დაწყების მიზნით მე ვარედაქტირებ:

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 &

გთხოვთ შეცვალოთ თქვენი პითონის სკრიპტის სწორი ადგილი და არ დაივიწყოთ & ნიშანი ბოლოს

ახლა ჩვენ უნდა შევქმნათ კიოსკის რეჟიმი ვებ ბრაუზერისთვის, ჯერ მოვაშოროთ კურსორი:

sudo apt-get ინსტალაცია unclutter

sudo nano/etc/xdg/lxsession/LXDE-pi/autostart

ახლა ამ ფაილში იპოვეთ და დატოვეთ კომენტარი:

@xscreensaver -no -splash # კომენტარი გააკეთეთ ამ ხაზზე ეკრანის დამცავის გამორთვის მიზნით

ქვემოთ დაამატეთ:

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

შემდეგი ნაბიჯი ყველა ჩატვირთვის ტექსტისა და პერსონალის ამოღების მიზნით, ასევე დაამატეთ თქვენი საკუთარი ჩატვირთვის ეკრანი აქ არის სწრაფი სახელმძღვანელო:

sudo nano /boot/config.txt და ბოლოში adddisable_splash = 1

წაშალეთ ტექსტური შეტყობინება splash გამოსახულების ქვეშ:

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

იპოვეთ და წაშალეთ (ან დატოვეთ კომენტარი):

message_sprite = Sprite (); message_sprite. SetPosition (ეკრანის_სიგანე * 0.1, ეკრანის სიმაღლე * 0.9, 10000);

და:

my_image = Image. Text (ტექსტი, 1, 1, 1); message_sprite. SetImage (my_image);

ახლა ჩვენ ამოვიღებთ ჩატვირთვის შეტყობინებებს:

sudo nano /boot/cmdline.txt

შეცვალეთ "კონსოლი = tty1" "კონსოლი = tty3"

და ხაზის ბოლოს დაამატეთ:

splash հանգիստ plymouth.ignore-serial-consoles logo.nologo vt.global_cursor_default = 0

და შეცვალეთ pi splash თქვენით:

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

ახლა თქვენ გაქვთ თქვენი პერსონალური ჩატვირთვის ეკრანი თქვენს თამაშზე. თქვენი pi კომპიუტერი ახლა მზადაა გაუმკლავდეს თამაშს. ასე რომ გადადით შემდეგ საფეხურზე!

ნაბიჯი 4: დააინსტალირეთ თამაში

ამ ეტაპზე თქვენ შექმენით თამაში.

პირველი რაც თქვენ უნდა გააკეთოთ არის ვებ – სისტემის დაყენება. ატვირთეთ მონაცემთა ბაზა თქვენს mysql სერვერზე. ფაილი შედის საქაღალდეში და დასახელებულია database.sql

შემდეგი ნაბიჯი არის კონფიგურაციის ფაილის რედაქტირება, რომელსაც პოულობთ საქაღალდის სახელში config.php შეცვალეთ მონაცემთა ბაზაში შესვლის ინფორმაცია ისე რომ სკრიპტი იმუშავებს.

ვებ სისტემა მრავალ ენაზეა დაფუძნებული და დაწერილია ინგლისურად. არსებობს შვედური თარგმანი. მეტი ენის გასაკეთებლად გჭირდებათ პროგრამული უზრუნველყოფა სახელად Poedit.

ვებ სისტემაში მეტი ენის დასამატებლად თქვენ უნდა შეცვალოთ i18n_setup.php და დაამატოთ მასივი:

დაბრუნება in_array ($ locale, ['en_US', 'sv_SE']); (სტრიქონი 23)

ასევე ნაგულისხმევი ენის შესაცვლელად თქვენ უნდა შეცვალოთ სტრიქონი 27: $ lang = 'en_US'; შეცვალეთ en_US თქვენს ენაზე.

ენის ფაილები უნდა განთავსდეს ლოკალებში/LANGCODE/LC_MESSAGES/და დასახელდეს main.mo (შეცვალეთ ენაზე კოდი თქვენს ენაზე)

კლავიატურის შეცვლა ფაილში

თქვენ ნახავთ მათ ხაზებზე 218 და 219

ხელმისაწვდომი ენები არის საქაღალდეში: აქტივები/js/კლავიატურა/ენები და განლაგება არის აქტივებში/js/კლავიატურა/განლაგება და დაამატეთ სწორი ფაილები 118 და 119 სტრიქონებში (შეცვალეთ ის, რასაც ახლა იქ ნახავთ)

სამიზნეების დამატება

სამიზნეების დასამატებლად გადადით localhost/ admin/ და დააწკაპუნეთ სამიზნეების დამატებაზე.

თქვენ უნდა დაამატოთ სამიზნის სახელი და უნიკალური სამიზნე ID და გაგზავნოთ ID, დაამატოთ იმდენი სამიზნე, რაც გაქვთ.

თამაშების დამატება

თქვენ ასევე უნდა დაამატოთ რამდენიმე თამაში. გადადით localhost/ admin/ და დააწკაპუნეთ თამაშის დამატებაზე

თქვენ უნდა დაამატოთ თამაშის სახელი, აღწერა, მინიმალური და მაქსიმალური მოთამაშე რა ტიპის თამაშია, ასევე რამდენად რთულია თამაში 1 – დან 5 – მდე. მაგალითი 30) რამდენი რაუნდისათვის (მაგალითად, 8) და დროულად რამდენ ხანს აპირებენ თამაშს (მაგალითად, 60 წუთი ერთი წუთის განმავლობაში).

Თამაშის დაწყება

როდესაც თამაშს გაააქტიურებთ ის გააკეთებს სამიზნე ტესტირებას. ასე რომ, სამიზნეები უნდა იყოს მთავარი სისტემის დაწყებამდე. თუ ყველა გაივლის გამოცდას, შეგიძლიათ გამოიყენოთ სისტემა, მაგრამ თუ არა, თქვენ ვერ გამოიყენებთ მას. ის შეეცდება დაუკავშირდეს სანამ პასუხს არ მიიღებენ.

Წარმატებები

ეს ასეა, კოდში განახლების მხარდაჭერისა და ინფორმაციისათვის გთხოვთ მიჰყევით ამ თამაშს ჩემს ფეისბუქ გვერდზე, ასე რომ მე შემიძლია სწრაფად მოგაწოდოთ პასუხი. თქვენ ნახავთ ბმულებს ზემოთ.

გირჩევთ: