Kazalo:

Arduino Shooting Game V3: 4 koraki
Arduino Shooting Game V3: 4 koraki

Video: Arduino Shooting Game V3: 4 koraki

Video: Arduino Shooting Game V3: 4 koraki
Video: НОЧЬ В СТРАШНОМ ДОМЕ С ДЕМОНОМ / НЕ СТОИЛО СЮДА ПРИХОДИТЬ 2024, Julij
Anonim
Image
Image
Arduino Shooting Game V3
Arduino Shooting Game V3
Arduino Shooting Game V3
Arduino Shooting Game V3
Arduino Shooting Game V3
Arduino Shooting Game V3

Ta igra je za vas, ki uporabljate airsoft ali co2 za streljanje na tarče. To je igra.

Za najnovejše informacije o igri in podpori:

www.facebook.com/arduinoshooting/

Za mojo spletno stran o igri:

shootinggameblog.wordpress.com

Za kode o igri:

github.com/shootinggame82/Shooting-game-v3

Strelska igra je x brezžičnih tarč, vsaka tarča ima senzor vibracij, ki zazna vibracije, ki nastanejo ob zadetku. Brezžični senzorji so čip Atmega328 (čip Arduino Uno) in imajo napolnjeno Li-Po baterijo.

Glavni krmilnik te igre upravlja Arduino, serijsko pa ga upravlja Raspberry Pi.

Torej, kako ta igra deluje? No, to so 3 načini igre:

Quicktime: igrajte X kroge in streljajte tako hitro, da lahko na vsako tarčo.

Časovni način: v X sekundah ustrelite čim več tarč.

Rapidfire: Najhitreje posnemite X posnetke.

Sistem uporablja oddajnike NRF24L01, da dobimo dobre razdalje od glavnega krmilnika. Delujejo na 2,6 GHz (enako kot deluje na WiFi)

V mojih preteklih projektih sem za vibracije uporabljal Piezo, zdaj pa uporabljam stikalo za senzor vibracij. Toda še vedno lahko uporabljate Piezo, če ste naredili mojo staro različico te igre.

Igra ima 7 -palčni zaslon na dotik Raspberry Pi, ki vsebuje spletni sistem, skozi katerega nadzirate igro. Terminalni tiskalnik natisne rezultate.

Zaloge

Za oddajnike:

  • X Atmega328 z zagonskim nalagalnikom Arduino (odvisno od tega koliko ciljev)
  • X Stikalo senzorja vibracij
  • X Blue Led
  • X Zelena Led
  • X Rdeča Led
  • X 3,7v Li-Po baterija
  • X FC-75 Li-Po polnilni modul (ali drug model)
  • Kondenzator X 100 uF
  • X Etuiji za senzorje
  • X LD1117V33 (Varno 3,3 V za oddajnik)
  • X moduli NRF24L01
  • X x 3 220 ohmski upori (3 so potrebni za eno tarčo)
  • X 16 MHz kristal
  • X x 2 Neplorizirani kondenzatorji 22 pF (2 sta potrebna za eno tarčo)

Za glavni Arduino:

  • 1 Arduino (priporoča se Nano ali Uno, imeti mora USB)
  • 1 Modul NRF24L01
  • 1 10 uF kondenzator

Za malinovo pi:

  • Raspberry Pi (uporabil sem 3B)
  • 7 -palčni zaslon na dotik
  • ATXRaspi (izbirno, vendar dober gumb za vklop)
  • RTCRaspi (izbirno, vendar dober modul RTC za shranjevanje časa in datuma)
  • Termalni tiskalnik (izbirno, vendar je potrebno za tiskanje)
  • Optični bralnik črtne kode (različica USB, ki deluje kot tipkovnica, neobvezno)
  • Dobra moč 5V (uporabil sem star 12v USB z napajanjem 2.5 A)

Druge stvari:

  • 12v moč (imam eno pri 12 Ah)
  • Omrežna vtičnica (olajša povezavo z omrežjem)
  • Kabli

Korak: Brezžični senzorji

Brezžični senzorji
Brezžični senzorji
Brezžični senzorji
Brezžični senzorji
Brezžični senzorji
Brezžični senzorji

Začnimo izdelovati senzorje. Za to igro uporabljam 4 senzorje. Lahko pa preprosto dodate več senzorjev. Tipala komunicirajo s kodo s 4 številkami, ko glavni sistem pošlje kodo, s katero funkcijo se bo senzor s pravo kodo prižgal in pripravljen na cilj. Modra luč sporoča, da boste zadeli to tarčo.

Imamo tudi zeleno in rdečo led. Zelena vedno zasveti in obvesti, da je senzor vklopljen. Rdeča bo zasvetila šele, ko je baterija manjša od 3,1 V (uporablja vgrajeno funkcijo v čipu za izračun, koliko je v bateriji.

Tipalo vibracij je priključeno na analogni zatič in odčita njegovo vrednost. Ko vrednost pada, senzor zazna vibracijo in tam registriramo zadetek.

Tarča ima funkcijo varovanja pred napak, da v primeru, da ne zadenete v X sekundah (privzeto je 15 sekund) ali če pošiljanja ni mogoče izvesti, se vrne v začetni položaj.

Ne bom razlagal, kako boste ožičili, preverite električni list, da vidite, kako boste to storili. Edina stvar, ki ni na njem, je baterija, stikalo za vklop in polnilnik. Na vas je, da se odločite, kako želite.

POMEMBNO O modulu NRF24L+:

To je lahko bolečina v…, da jih vzpostavimo stabilne, v kombinaciji z dobro močjo in izolacijo okoli sebe, ter s kodo, ki jih boste spravili v delo. Zame imam 10 uF kondenzator stabilno in dobro povezavo, vendar najprej poskusite, če potrebujete na primer kondenzator 100 uF. Zavijte jih tudi najprej s plastično folijo in nato z aluminijasto, da jih zaščitite pred vmešavanjem

Tudi v kodi ne potrebujete več kot 250 Kb podatkovne hitrosti, zato to ne bo problem. Toda PA: myRadio.setPALevel (RF24_PA_MIN);

V kodi, ki sem jo nastavil na MIN (to je med preskusom), je najnižja in ne bo porabila toliko energije, vendar obseg ne bo tako dolg. Če imate stabilno in dobro moč, se lahko povzpnete na RF24_PA_MAX, da dobite najdaljši doseg, vendar za to potrebujejo GOOOOOD stabilno moč. Poskusite tudi NIZKO IN VISOKO (spremenite samo besedilo MAX), da preverite, ali imate dobro komunikacijo. Prav tako boste dobili dober doseg pri LOW in HIGH, razen če boste ostrostrelec

Oddajnike imejte tudi na razdalji najmanj enega metra, če zaprete, lahko signal postane slab

Preizkusite komunikacijo z nekim primerom pinga v knjižnici NRF24 (povezava na GitHub)

V kodi morate nastaviti edinstveno identifikacijsko številko za ta cilj:

int targID = 3401; // To je ciljni ID

int sendID = 2401; // To je ID odziva

Obstajajo tudi 3 funkcije DEFINE:

#define DEBUG

#define BATERIJA

#define SHAKE // Če se namesto starega pieza uporablja stikalo za tresenje

ODLAGANJE:

Med preskusom je to dobro določiti. Ko pa jih omogočite, jih ne aktivirajte.

BATERIJA:

Če za cilje ne želite imeti preverjalca baterije, morate to definicijo odstraniti.

STREŠITE:

Če ste zgradili mojo staro različico, imate piezo senzorje, odstranite to, da dobite pravilno kodo zanje.

ATMEGA328 čip

Namesto Arduino nano sem se odločil za uporabo čipa ATMEGA328 (z zagonskim nalagalnikom Uno), ki jih je enostavno programirati, samo odstraniti čip iz Arduino Uno in dodati ta čip ter naložiti kodo. Preverite električno shemo, kako zgraditi cilje.

Kodeks

Kodo sem napisal s PlatformIO namesto z Arduino IDE. To je boljša programska oprema. Tako je koda nekoliko drugačna. Priporočam, da namesto tega uporabite to programsko opremo.

Škatla za tarčo in oddajnik

Senzor in modro LED priklopil sem na tarčo, s 3, 5 mm fono kablom na 2 m pa ga povežem skupaj v oddajniško omarico, ki drži čip atmega, polnilec baterij in zeleno in rdečo LED. To je zato, da ga zaščitimo pred udarci z jeklenimi kroglami.

2. korak: Krmilnik iger

Krmilnik iger
Krmilnik iger
Krmilnik iger
Krmilnik iger
Krmilnik iger
Krmilnik iger
Krmilnik iger
Krmilnik iger

Naslednja stvar, ki jo moramo narediti, je, da naredimo krmilnik za senzorje. To je Arduino, ki za komunikacijo s senzorji uporablja modul NRF24L01. Nič drugega. Arduino je nato povezan z USB -jem v maline pi za delo.

Tako bo delovalo. Uporablja serijsko, da ve, kaj storiti. Pi bo poslal serijske ukaze. Najprej med nastavitvijo pošlje, koliko ciljev ste dodali, in identifikacijske številke ciljev. Nato bo opravil preskusno funkcijo in obvestil malinovo pi, če med seboj komunicirajo.

Ko igrate igro, bo od pi poslala, kakšno vrsto igre in koliko krogov/zadetkov naj uporabi. To je to.

Mogoče je uporabiti module NRF24L01 v malini pi, vendar je zame Arduino boljša možnost grehov, nikoli jih ne uporabljam v malinah, zato ne vem, kako dolgoročno delujejo

Obstaja napajalni modul, ki uporablja 5 V za pravilno stabilno napajanje oddajnikov. Uporabite jih lahko s seboj Arduino (glej sliko), ime je Socket Adapter Module Board

Ko igrate, se bodo tarče naključno aktivirale ena za drugo. Ko je eden zadet, se aktivira še en.

Med preskusom lahko aktivirate #DEFINE DEBUG, da vidite, kako deluje, vendar ne, ko ga uporabljate v računalniku pi, potem ne bo deloval.

Prenesite kodo na stran GitHub.

3. korak: Raspberry Pi

Malina Pi
Malina Pi
Malina Pi
Malina Pi
Malina Pi
Malina Pi
Malina Pi
Malina Pi

Zdaj smo prišli do Raspberry Pi.

Dodal sem nekaj dodatnih funkcij, da lahko imam gumb za vklop. ATXRaspi 3 je odličen modul, pi lahko vklopite, izklopite in znova zaženete gumb z gumbom. Tudi RTCRaspi za shranjevanje časa in datuma na pi. Omogočil sem tudi samo priključitev omrežnega kabla, da moram narediti nekaj posodobitev sistema. Najdete jih v Lowpowerlabu

Termalni tiskalnik, ki ga najdete na sparkfun, in čitalnik črtne kode je na voljo na Amazon.

Računalnik Pi deluje v načinu kioska, zato se brskalnik odpre ob zagonu. Najprej morate imeti na računalniku pi spletni strežnik s PHP 7 in mysql. (Za to obstaja veliko vodnikov po spletu)

OPOMBA: če boste uporabljali termalni tiskalnik z malinovim pi, ki ima vgrajen bluetooth, ga morate najprej onemogočiti

Skript python potrebuje pyserial in ga namestite: sudo apt-get install python-serial

Če želite, da mysql deluje, namestite naslednje:

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

suso apt-get install pymysql

Zdaj lahko nadzirate Arduino skozi serijo in posodobite tudi bazo podatkov mysql.

Naslednji korak je, da se python skript poveže z mysql.

V vseh treh skriptih python spremenite povezavo z bazo podatkov mysql.

Naslednji korak je, da se skript python zažene ob zagonu.

Obstajajo trije python script.game.py je najpomembnejši od vseh, eden ima funkcijo igre.print.py je to potrebno le, če boste za tiskanje.ean.py uporabljali termalni tiskalnik. bom uporabil skener črtne kode.

Za samodejni zagon jih uredim:

sudo nano /etc/rc.local

in spodaj pred izhodom 0 dodajte naslednje:

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

Prosimo, da spremenite pravilno mesto za skript python in ne pozabite na koncu podpisati znaka &

Zdaj moramo za brskalnik narediti način kioska, najprej odstranimo kazalec:

sudo apt-get install unclutter

sudo nano/etc/xdg/lxsession/LXDE-pi/samodejni zagon

zdaj v tej datoteki poišči in komentiraj:

@xscreensaver -no -splash # komentirajte to vrstico, da onemogočite ohranjevalnik zaslona

Spodaj dodaj:

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

Naslednji korak, da odstranite vsa zagonska besedila in stvari ter dodate svoj zagonski zaslon, tukaj je kratek vodnik:

sudo nano /boot/config.txt in na dnu adddisable_splash = 1

Odstranite besedilno sporočilo pod splash sliko:

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

Poiščite in odstranite (ali komentirajte):

message_sprite = Sprite (); message_sprite. SetPosition (širina zaslona * 0,1, višina zaslona * 0,9, 10000);

in:

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

Zdaj odstranimo zagonska sporočila:

sudo nano /boot/cmdline.txt

"console = tty1" zamenjajte z "console = tty3"

in na koncu vrstice dodaj:

splash quiet plymouth.ignore-serial-consoles logo.nologo vt.global_cursor_default = 0

In pi splash zamenjajte z lastnim:

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

Zdaj imate za igranje svoj zagonski zaslon po meri. Vaš računalnik pi je zdaj pripravljen za igro. Torej, na naslednji korak!

4. korak: Nastavite igro

Na tej točki ste zdaj ustvarili igro.

Najprej morate nastaviti spletno mesto. Naložite bazo podatkov na strežnik mysql. Datoteka je v mapi include in imenovana database.sql

Naslednji korak je urejanje konfiguracijske datoteke, ki jo najdete v imenu mape config.php Spremenite podatke za prijavo v zbirko podatkov, da bo skript deloval.

Spletni sistem temelji na več jezikih in je napisan v angleščini. Na voljo je švedski prevod. Za več jezika potrebujete programsko opremo z imenom Poedit.

Če želite spletnemu sistemu dodati več jezika, morate urediti i18n_setup.php in v polje dodati:

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

Če želite spremeniti privzeti jezik, morate spremeniti v vrstici 27: $ lang = 'en_US'; spremenite en_US v svoj jezik.

jezikovne datoteke morajo biti postavljene v locales/LANGCODE/LC_MESSAGES/in biti poimenovane main.mo (spremenite langcode v jezik)

za spremembo tipkovnice v datoteki selectplayers.php spremenite jezik: "en", // sl za angleško sv za švedsko postavitev: 'qwerty', // qwerty za angleško švedsko-qwerty za švedsko

Najdete jih na linijah 218 in 219

Razpoložljivi jeziki so v mapi: sredstva/js/tipkovnica/jeziki in postavitve so v sredstvih/js/tipkovnica/postavitve in dodajte pravilne datoteke v vrstice 118 in 119 (zamenjajte tisto, ki jo trenutno najdete)

Dodajte cilje

Če želite dodati cilje, pojdite na localhost/ admin/ in kliknite na dodajanje ciljev.

Dodati morate ime za cilj in edinstven ID cilja ter poslati ID, dodati čim več ciljev, ki jih imate.

Dodajte igre

Dodati morate tudi nekaj iger. Pojdite na localhost/ admin/ in kliknite na dodajanje igre

Dodati morate ime igre, opis, najmanjše in največje število igralcev, kakšno vrsto igre, pa tudi, kako težka je igra med 1 in 5. In kako je igra, zato za igro rapidfire dodate, koliko zadetkov (primer 30) za hitri žreb, koliko rund (na primer 8) in časovno omejeno, koliko časa bodo igrali (na primer 60 za eno minuto)

Začni igro

Ko vklopite igro, izvede testiranje cilja. Zato morajo biti cilji vklopljeni, preden zaženete glavni sistem. Če vsi opravijo test, lahko uporabite sistem, če pa ne, ga ne morete uporabiti. Poskušala bo komunicirati, dokler ne dobijo odgovora.

Vso srečo

No, to je to, za podporo in informacije o posodobitvi kode sledite moji Facebook strani za to igro, da vam lahko hitro odgovorim. Tu boste našli povezave na vrhu.

Priporočena: