Kazalo:
- Zaloge
- Korak: Brezžični senzorji
- 2. korak: Krmilnik iger
- 3. korak: Raspberry Pi
- 4. korak: Nastavite igro
Video: Arduino Shooting Game V3: 4 koraki
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-31 10:24
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
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
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
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:
DIY 37 Leds Arduino Roulette Game: 3 koraki (s slikami)
DIY 37 Leds Arduino Roulette Game: Roulette je igralniška igra, poimenovana po francoski besedi, ki pomeni malo kolo
Crack the Code Game, Arduino Puzzle Box: 4 koraki (s slikami)
Crack the Code Game, Arduino Based Puzzle Box: V tem navodilu vam bom pokazal, kako zgraditi svojo lastno igro s kodo crack, v kateri z vrtljivim gumbom za kodirnik uganite naključno generirano kodo na varno. Na sprednji strani sefa je 8 LED, ki vam povedo, koliko od
Arduino OLED Snake Game: 3 koraki
Arduino OLED Snake Game: Pozdravljeni in dobrodošli, v naših navodilih o tem, kako narediti in arduino OLED Game, je ta projekt nastal, ko smo poskušali narediti prvo igro z arduinom, takoooo, mislili smo, kje je bolje začeti kot nokia klasična kača (no vsaj
Arduino Game Controller + Unity Game: 5 korakov
Arduino Game Controller + Unity Game: V tem navodilu vam bom pokazal, kako sestaviti/programirati arduino krmilnik iger, ki se lahko poveže v enoto
Laserski rez Nerf Ball Shooting Lego EV3 Tank: 4 koraki
Laser Cut Nerf Ball Shooting Lego EV3 Tank: Za končni projekt mojega 1A mandata na področju inženiringa mehatronike na Univerzi v Waterloou smo ustvarili lasersko rezano posodo s kompletom Lego EV3 (to je bilo potrebno), ki je streljala žoge Nerf. nikakor ne celotno poročilo o načrtovanju. Če y