Satura rādītājs:

Arduino šaušanas spēle V3: 4 soļi
Arduino šaušanas spēle V3: 4 soļi

Video: Arduino šaušanas spēle V3: 4 soļi

Video: Arduino šaušanas spēle V3: 4 soļi
Video: А ВЫ ЗНАЛИ, ЧТО В FALLOUT 3 #fallout #fallout3 #секреты #факты #авызнали #авы 2024, Jūlijs
Anonim
Image
Image
Arduino šaušanas spēle V3
Arduino šaušanas spēle V3
Arduino šaušanas spēle V3
Arduino šaušanas spēle V3
Arduino šaušanas spēle V3
Arduino šaušanas spēle V3

Šī spēle ir paredzēta jums, kas izmanto airsoft vai co2, lai šautu uz mērķiem. Tā ir spēle.

Lai iegūtu jaunāko informāciju par spēli un atbalstu:

www.facebook.com/arduinoshooting/

Manai emuāra lapai par spēli:

shootinggameblog.wordpress.com

Par kodiem par spēli:

github.com/shootinggame82/Shooting-game-v3

Šaušanas spēle ir x bezvadu mērķi, katram mērķim ir vibrācijas sensors, kas uztver vibrāciju, kas rodas, kad tiek izdarīts trāpījums. Bezvadu sensori ir Atmega328 mikroshēma (Arduino Uno mikroshēma), un tiem ir uzlādējams Li-Po akumulators.

Šīs spēles galveno kontrolieri kontrolē Arduino, un to sērijveidā kontrolē Raspberry Pi.

Tātad, kā šī spēle darbojas? Nu, tas ir 3 spēles režīmi:

Ātrais laiks: izspēlējiet X raundus un šaujiet tik ātri, cik vien iespējams.

Laika režīms: uzšaujiet pēc iespējas vairāk mērķu X sekundēs.

Ātrā uguns: uzņemiet X kadrus ātrākajā laikā.

Sistēma ir mūsu NRF24L01 raidītāji, lai iegūtu labu attālumu no galvenā kontroliera. Tie darbojas 2,6 GHz frekvencē (tāpat kā darbojas WiFi)

Iepriekšējos projektos vibrācijai esmu izmantojis Pjezo, bet tagad tiek izmantots vibrācijas sensora slēdzis. Bet jūs joprojām varat izmantot Pjezo, ja esat izveidojis manu veco šīs spēles versiju.

Spēlei ir Raspberry Pi 7 collu skārienekrāns, kurā ir tīmekļa sistēma, kurā jūs kontrolējat spēli. Termināla printeris izdrukā rezultātus.

Piegādes

Raidītājiem:

  • X Atmega328 ar Arduino sāknēšanas ielādētāju (atkarībā no mērķu skaita)
  • X vibrācijas sensora slēdzis
  • X Zils LED
  • X Zaļās gaismas diodes
  • X Sarkanās gaismas diodes
  • X 3.7v Li-Po akumulators
  • X FC-75 Li-Po lādētāja modulis (vai cits modelis)
  • X 100 uF kondensators
  • X Korpusi sensoriem
  • X LD1117V33 (padara raidītāju drošu 3,3 V)
  • X NRF24L01 moduļi
  • X x 3 220 omi rezistori (3 ir nepieciešami vienam mērķim)
  • X 16 MHz kristāls
  • X x 2 neizsūknētie kondensatori 22 pF (2 ir nepieciešami vienam mērķim)

Galvenajam Arduino:

  • 1 Arduino (ieteicams Nano vai Uno, nepieciešams USB)
  • 1 NRF24L01 modulis
  • 1 10 uF kondensators

Aveņu Pi:

  • Raspberry Pi (es izmantoju 3B)
  • 7 collu skārienekrāns
  • ATXRaspi (pēc izvēles, bet labs barošanas pogas modulis)
  • RTCRaspi (pēc izvēles, bet labs RTC modulis, lai saglabātu laiku un datumu)
  • Terminālais printeris (pēc izvēles, bet nepieciešams, lai varētu drukāt)
  • Svītrkodu skeneris (USB versija, kas darbojas kā tastatūra, pēc izvēles)
  • Laba 5 V jauda (es izmantoju veco 12 V USB ar 2,5 A jaudu)

Citas lietas:

  • 12v jauda (man tāda ir pie 12 Ah)
  • Tīkla ligzda (atvieglo savienojumu ar tīklu)
  • Kabeļi

1. darbība: bezvadu sensori

Bezvadu sensori
Bezvadu sensori
Bezvadu sensori
Bezvadu sensori
Bezvadu sensori
Bezvadu sensori

Sāksim veidot sensorus. Šai spēlei es izmantoju 4 sensorus. Bet jūs varat viegli pievienot vairāk sensoru. Sensori sazinās ar 4 ciparu kodu, kad galvenā sistēma izsūta kodu, ar kādu funkciju sensors ar pareizo kodu iedegsies un būs gatavs mērķim. Zilā gaisma ir jāinformē, ka tas ir tas mērķis, kuru jūs trāpīsit.

Mums ir arī zaļa un sarkana gaismas diode. Zaļais vienmēr iedegas, lai informētu, ka sensors ir ieslēgts. Sarkanais iedegsies tikai tad, kad akumulatora uzlādes līmenis ir mazāks par 3,1 V (tā izmanto mikroshēmā iebūvēto funkciju, lai aprēķinātu, cik daudz akumulatora ir.

Vibrācijas sensors ir savienots ar analogo tapu un nolasa tā vērtību. Kad vērtība samazinās, sensoram ir vibrācija, un mēs reģistrējam trāpījumu.

Mērķim ir droša funkcija, kas nozīmē, ka jūs nesasitīsit X sekundēs (noklusējums ir 15 sekundes) vai, ja pārraidi nevarēs veikt, tie atgriezīsies sākuma stāvoklī.

Es neskaidrošu, kā jūs vadīsit, pārbaudiet elektrisko loksni, lai redzētu, kā jūs to darīsit. Viena lieta, kas tajā nav, ir akumulators, barošanas slēdzis un lādētājs. Tas ir jūsu ziņā, lai izlemtu, kā jūs to vēlaties.

SVARĪGI PAR NRF24L+ moduli:

Var būt sāpīgi…, lai tie kļūtu stabili, apvienojumā ar labu jaudu un izolāciju ap to, un kods, kas ļaus viņiem strādāt. Man 10 uF kondensators nodrošinās stabilu un labu savienojumu, bet, lūdzu, vispirms izmēģiniet, ja jums nepieciešams, piemēram, 100 uF kondensators. Aptiniet tos arī ar pirmo plastmasas foliju un pēc tam ar alumīnija foliju, lai pasargātu tos no traucējumiem

Arī kodā datu pārraides ātrums jums nav nepieciešams vairāk par 250 Kb, lai tā nebūtu problēma. Bet PA: myRadio.setPALevel (RF24_PA_MIN);

Kodā, kuru esmu iestatījis uz MIN (tas ir pārbaudes laikā), tas ir zemākais un neizmantos tik daudz enerģijas, taču diapazons nebūs tik garš. Ja jums ir stabila un laba jauda, varat doties uz RF24_PA_MAX, lai iegūtu vislielāko diapazonu, BET viņiem tam ir nepieciešama GOOOOOD stabila jauda. Izmēģiniet arī LOW AND HIGH (mainiet tikai MAX tekstu), lai redzētu, vai jums ir laba komunikācija. Arī jūs iegūsit labu diapazonu LOW un HIGH, ja vien jūs nebūsit snaiperis

Turiet arī raidītājus vismaz viena metra attālumā viens no otra, jo to aizvēršana var pasliktināt signālu

Pārbaudiet saziņu ar kādu ping piemēru NRF24 bibliotēkā (saite uz GitHub)

Kodā jāiestata šī mērķa unikālais identifikācijas numurs:

int targID = 3401; // Šis ir mērķa ID

int sendID = 2401; // Šis ir atbildes ID

Ir arī 3 DEFINE funkcijas:

#define DEBUG

#definējiet AKUMULATORU

#define SHAKE // JA SHAKE SWITCH tiek izmantots vecā PIEZO vietā

DEBUG:

Pārbaudes laikā to ir labi definēt. Bet, kad tos darāt pieejamus, neaktivizējiet tos.

AKUMULATORS:

Ja nevēlaties, lai mērķiem būtu akumulatora pārbaudītājs, šī definīcija ir jānoņem.

Kratīt:

Ja esat izveidojis manu veco versiju, jums ir pjezo sensori, pēc tam noņemiet to, lai iegūtu tiem pareizo kodu.

ATMEGA328 mikroshēma

Arduino nano vietā es nolēmu izmantot ATMEGA328 mikroshēmu (ar Uno sāknēšanas ielādētāju), tās ir vienkārši ieprogrammēt, vienkārši noņemiet mikroshēmu no Arduino Uno un pievienojiet šo mikroshēmu un augšupielādes kodu. Pārbaudiet elektrisko shēmu, kā izveidot mērķus.

Kods

Es esmu uzrakstījis kodu, izmantojot PlatformIO, nevis Arduino IDE. Tā ir labāka programmatūra, ko programmēt. Tātad kods ir nedaudz atšķirīgs. Tā vietā iesaku izmantot šo programmatūru.

Mērķa un raidītāja kaste

Man ir piestiprināts sensors un zilā gaismas diode uz mērķa, un ar 3, 5 mm fono kabeli uz 2 m es savienoju to kopā raidītāja kastē, kurā ir atmega mikroshēma, akumulatora lādētājs un zaļā un sarkanā gaismas diode. Tas ir tāpēc, lai pasargātu to no trieciena ar tērauda lodēm.

2. darbība. Spēļu kontrolieris

Spēļu kontrolieris
Spēļu kontrolieris
Spēļu kontrolieris
Spēļu kontrolieris
Spēļu kontrolieris
Spēļu kontrolieris
Spēļu kontrolieris
Spēļu kontrolieris

Nākamā lieta, kas mums jādara, ir izveidot sensoru kontrolieri. Tas ir Arduino, kas saziņai ar sensoriem izmanto NRF24L01 moduli. Nekas cits. Pēc tam Arduino ir savienots ar USB aveņu pi, lai tas darbotos.

Šādi tas darbosies. Tas izmanto sērijas, lai uzzinātu, ko darīt. Pi nosūtīs sērijas komandas. Vispirms iestatīšanas laikā tā nosūta pievienoto mērķu skaitu un mērķa identifikācijas numurus. Tad tas veiks pārbaudes funkciju un informēs aveņu pi, ja viņi sazinās viens ar otru.

Spēlējot spēli, tā no pi nosūtīs, kāda veida spēli un cik raundus/trāpījumus izmantot. Tieši tā.

Aveņu pi ir iespējams izmantot NRF24L01 moduļus, bet man Arduino ir labāks risinājums, un es tos nekad neizmantoju avenēs, tāpēc es nezinu, cik labi tie darbojas ilgtermiņā

Ir barošanas modulis, kas izmanto 5 v, lai raidītājiem nodrošinātu pareizu stabilu jaudu. Jūs varat tos izmantot kopā ar jums Arduino (skatiet attēlu), nosaukums ir Socket Adapter Module Board

Spēlējot, mērķi tiks nejauši aktivizēti pa vienam. Kad trāpīs viens, tiks aktivizēts vēl viens.

Pārbaudes laikā varat aktivizēt #DEFINE DEBUG, lai redzētu, kā tas darbojas, bet ne tad, kad to izmantojat pi datorā, tad tas nedarbosies.

Lejupielādējiet kodu GitHub lapā.

3. darbība: Raspberry Pi

Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi
Raspberry Pi

Tagad mēs esam nonākuši pie Raspberry Pi.

Esmu pievienojis dažas papildu funkcijas, lai man būtu barošanas poga. ATXRaspi 3 ir lielisks modulis, jūs varat ieslēgt, izslēgt un pārstartēt pi ar pogu. Arī RTCRaspi, lai saglabātu laiku un datumu uz pi. Tas arī ļāva vienkārši pievienot tīkla kabeli, ja man ir jāveic daži sistēmas atjauninājumi. Jūs tos atradīsit vietnē Lowpowerlab

Termiskais printeris, ko atradīsit vietnē sparkfun, un svītrkoda lasītājs ir pieejams vietnē Amazon.

Pi dators darbojas kioska režīmā, tāpēc pārlūkprogramma tiks atvērta sākumā. Pirmkārt, datorā pi ir jābūt tīmekļa serverim ar PHP 7 un mysql. (Šim nolūkam tīmeklī ir daudz ceļvežu)

LŪDZU, PIEZĪME: ja plānojat izmantot termoprinteri ar aveņu pi, kurā ir iebūvēts Bluetooth, vispirms tas ir jāatspējo

Python skriptam ir nepieciešama pyserial, un jūs to instalējat: sudo apt-get install python-serial

Lai mysql darbotos, instalējiet šādi:

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

suso apt-get install pymysql

Tagad jūs varat kontrolēt savu Arduino caur sēriju, kā arī atjaunināt mysql datu bāzi.

Nākamais solis ir izveidot python skriptu, lai izveidotu savienojumu ar mysql.

Visos trīs python skriptos mainiet savienojumu ar savu mysql datu bāzi.

Nākamais solis ir likt python skriptam darboties sākumā.

Ir trīs python skripti.game.py ir vissvarīgākais no visiem, kam ir spēles funkcija.print.py tas ir nepieciešams tikai tad, ja drukāšanai izmantosit terminālo printeri. gatavojas izmantot svītrkodu skeneri.

Lai tos rediģētu automātiski, veiciet tālāk norādītās darbības.

sudo nano /etc/rc.local

un apakšā pirms izejas 0 pievienojiet šādu tekstu:

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

Lūdzu, nomainiet vietu uz sava python skripta un neaizmirstiet & zīmi beigās

Tagad mums ir jāizveido tīmekļa pārlūkprogrammas kioska režīms, vispirms noņemiet kursoru:

sudo apt-get install unclutter

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

Tagad atrodiet un komentējiet šajā failā:

@xscreensaver -no -splash # komentējiet šo rindiņu, lai atspējotu ekrānsaudzētāju

Zemāk pievienojiet:

@xset s izslēgts @xset -dpms @xset s noblank @chromium-browser --noerrdialogs --force-device-scale-factor = 1,25 --kiosk https:// localhost

Nākamais solis, lai noņemtu visus sāknēšanas tekstus un citas lietas, kā arī pievienot savu sāknēšanas ekrānu, ir īss ceļvedis:

sudo nano /boot/config.txt un apakšā adddisable_splash = 1

Noņemt īsziņu zem šļakatu attēla:

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

Atrodiet un noņemiet (vai komentējiet):

message_sprite = Sprite (); message_sprite. SetPosition (ekrāna platums * 0,1, ekrāna augstums * 0,9, 10000);

un:

my_image = Image. Text (teksts, 1, 1, 1); message_sprite. SetImage (my_image);

Tagad mēs noņemam sāknēšanas ziņojumus:

sudo nano /boot/cmdline.txt

aizstāt “konsole = tty1” ar “konsole = tty3”

un rindas beigās pievienojiet:

šļakat klusu plymouth.ignore-serial-consoles logo.nologo vt.global_cursor_default = 0

Un nomainiet pi splash ar savu:

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

Tagad jūsu spēlei ir savs pielāgotais sāknēšanas ekrāns. Jūsu pi dators tagad ir gatavs darbam ar spēli. Tātad pāriet uz nākamo soli!

4. solis: iestatiet spēli

Šajā brīdī jūs esat izveidojis spēli.

Vispirms jums ir jāiestata webbsystem. Augšupielādējiet datu bāzi savā mysql serverī. Fails atrodas iekļautajā mapē un nosaukts database.sql

Nākamais solis ir rediģēt konfigurācijas failu, jūs to atradīsit iekļautajā mapes nosaukumā config.php Mainiet datubāzes pieteikšanās informāciju, lai skripts darbotos.

Tīmekļa sistēma ir balstīta uz vairākām valodām un ir uzrakstīta angļu valodā. Ir pieejams tulkojums zviedru valodā. Lai iegūtu vairāk valodas, jums ir nepieciešama programmatūra ar nosaukumu Poedit.

Lai tīmekļa sistēmai pievienotu vairāk valodas, jums jārediģē i18n_setup.php un jāpievieno masīvs:

return in_array ($ locale, ['en_US', 'sv_SE']); (23. rinda)

Arī, lai mainītu noklusējuma valodu, kas jāmaina 27. rindā: $ lang = 'en_US'; nomainiet en_US uz savu valodu.

valodu faili ir jāievieto lokalizācijās/LANGCODE/LC_MESSAGES/un jānorāda nosaukums main.mo (Mainīt langcode uz jūsu valodu)

lai mainītu tastatūru failā selectplayers.php, jūs maināt valodu: "lv", // lv angļu val. sv zviedru izkārtojumam: 'qwerty', // qwerty angļu valodā zviedru-qwerty zviedru

Jūs tos atradīsit 218. un 219. rindā

Pieejamās valodas ir mapē.

Pievienojiet mērķus

Lai pievienotu mērķus, dodieties uz vietni localhost/ admin/ un noklikšķiniet uz Pievienot mērķus.

Jums jāpievieno mērķa nosaukums un unikālais mērķa ID un jānosūta ID, jāpievieno pēc iespējas vairāk mērķu.

Pievienot spēles

Jums arī jāpievieno dažas spēles. Dodieties uz localhost/ admin/ un noklikšķiniet uz Pievienot spēli

Jums jāpievieno spēles nosaukums, apraksts, min un max spēlētāji, kāda veida spēle, kā arī tā, cik smaga ir spēle no 1 līdz 5. Un kā spēle ir, tāpēc ātrās uguns spēles gadījumā pievienojiet trāpījumu skaitu (piemērs 30) ātrai izlozei, cik raundu (piemēram, 8) un cik ilgi viņi gatavojas spēlēt (piemēram, 60 minūtes)

Sāciet spēli

Ieslēdzot spēli, tā veiks mērķa pārbaudi. Tātad mērķiem jābūt ieslēgtiem pirms galvenās sistēmas palaišanas. Ja viss ir nokārtots, jūs varat izmantot sistēmu, bet, ja nē, jūs to nevarat izmantot. Tā mēģinās sazināties, līdz viņi saņems atbildi.

Veiksmi

Tas ir par to, lai saņemtu atbalstu un informāciju par koda atjaunināšanu, lūdzu, sekojiet manai šīs spēles Facebook lapai, lai es varētu jums ātri atbildēt. Šeit jūs atradīsit saites augšpusē.

Ieteicams: