Sadržaj:

Arduino pucačka igra V3: 4 koraka
Arduino pucačka igra V3: 4 koraka

Video: Arduino pucačka igra V3: 4 koraka

Video: Arduino pucačka igra V3: 4 koraka
Video: Текстовые LCD дисплей на контроллере HD44780, Уроки Arduino 2024, Srpanj
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

Ova igra je za vas koji koristite airsoft ili co2 za gađanje ciljeva. To je igra.

Za najnovije informacije o igri i podršci:

www.facebook.com/arduinoshooting/

Za moju blog stranicu o igri:

shootinggameblog.wordpress.com

Za kodove o igri:

github.com/shootinggame82/Shooting-game-v3

Streljačka igra je x bežične mete, svaka meta ima senzor vibracija koji osjeća vibracije koje se dobiju pri udarcu. Bežični senzori su čip Atmega328 (čip Arduino Uno) i imaju punjivu Li-Po bateriju.

Glavni kontroler za ovu igru kontrolira Arduino, a serijski se kontrolira s Raspberry Pi.

Pa kako ova igra radi? Pa to su 3 načina igre:

Quicktime: Igrajte X rundi i pucajte tako brzo da možete na svaku metu.

Vremenski način: Pucajte što više meta na X sekundi.

Rapidfire: Snimite X snimke najbrže vrijeme.

Sustav koristi odašiljače NRF24L01 kako bi se dobro distancirali od glavnog kontrolera. Rade na 2,6 GHz (isto kao i WiFi)

U mojim prošlim projektima koristio sam Piezo za vibraciju, ali sada se koriste prekidači za osjetnike vibracija. Ali još uvijek možete koristiti Piezo ako ste napravili moju staru verziju ove igre.

Igra ima Raspberry Pi 7 zaslon osjetljiv na dodir koji drži web sustav kroz koji kontrolirate igru. Terminalni pisač ispisuje rezultate.

Pribor

Za odašiljače:

  • X Atmega328 s Arduino Bootloader -om (ovisno o tome koliko meta)
  • X Prekidač osjetnika vibracija
  • X Plava Led
  • X Green Led
  • X Crveno Led
  • X 3,7v Li-Po baterija
  • X FC-75 Li-Po modul punjača (ili neki drugi model)
  • X 100 uF kondenzator
  • X Kućišta za senzore
  • X LD1117V33 (Čini siguran 3,3 V za odašiljač)
  • X moduli NRF24L01
  • X x 3 220 Ohm otpornici (3 su potrebna za jednu metu)
  • X 16 MHz kristal
  • X x 2 Neplorizirani kondenzatori 22 pF (2 su potrebna za jednu metu)

Za glavni Arduino:

  • 1 Arduino (preporučuje se Nano ili Uno, potrebno je imati USB)
  • 1 Modul NRF24L01
  • 1 10 uF kondenzator

Za malinu Pi:

  • Raspberry Pi (koristio sam 3B)
  • 7 "zaslon osjetljiv na dodir
  • ATXRaspi (opcijski, ali dobar modul gumba za napajanje)
  • RTCRaspi (izborno, ali dobar RTC modul za čuvanje vremena i datuma)
  • Termalni pisač (izborno, ali potrebno za ispis)
  • Skener za crtični kod (USB verzija koja radi poput tipkovnice, izborno)
  • Dobra snaga 5V (koristio sam stari 12v USB sa napajanjem 2.5 A)

Druge stvari:

  • Snaga 12v (imam jedan na 12 Ah)
  • Mrežna utičnica (Olakšajte povezivanje s mrežom)
  • Kablovi

Korak 1: Bežični senzori

Bežični senzori
Bežični senzori
Bežični senzori
Bežični senzori
Bežični senzori
Bežični senzori

Počnimo s izradom senzora. Za ovu igru koristim 4 senzora. Ali možete jednostavno dodati još senzora. Senzori komuniciraju s 4 brojem koda kada glavni sustav pošalje kôd s kojom funkcijom će senzor s pravim kodom zasvijetliti i biti spreman za cilj. Plavo svjetlo obavještava vas da ćete pogoditi tu metu.

Također imamo zelenu i crvenu LED diodu. Zelena uvijek svijetli kako bi obavijestila da je senzor uključen. Crvena će zasvijetliti samo ako je baterija manja od 3,1 V (koristi ugrađenu funkciju u čipu za izračunavanje koliko ima u bateriji.

Osjetnik vibracija spojen je na analogni pin i očitava njegovu vrijednost. Kad vrijednost opada, senzor je pokupio vibraciju i tu registriramo pogodak.

Cilj ima sigurnosnu funkciju, u slučaju da ne pogodite za X sekundi (zadana vrijednost je 15 sekundi) ili ako odašiljanje nije moguće, vratit će se na početnu poziciju.

Neću vam objašnjavati kako ćete ožičiti, provjerite električnu ploču kako biste vidjeli kako ćete to učiniti. Jedina stvar koja nije na njoj su baterija, prekidač za napajanje i punjač. Na vama je da odlučite kako želite.

NEZNAČAJNO O NRF24L+ modulu:

To može biti bol u… učiniti ih stabilnima, u kombinaciji s dobrom snagom i izolacijom oko njih, a kod ćete ih natjerati na rad. Za mene će kondenzator od 10 uF dati stabilnu i dobru vezu, ali pokušajte prvo u slučaju da vam je potrebno, na primjer, 100 uF kondenzator. Također ih omotajte prvo plastičnom folijom, a zatim aluminijskom folijom kako biste ih zaštitili od smetnji

Također u kodu, brzina prijenosa podataka ne treba vam veća od 250 Kb pa to neće biti problem. Ali PA: myRadio.setPALevel (RF24_PA_MIN);

U kodu koji sam postavio na MIN (Ovo je tijekom testa), on je najniži i neće trošiti toliko energije, ali raspon neće biti tako dug. Ako imate stabilnu i dobru snagu za njih, možete otići do RF24_PA_MAX kako biste dobili najduži domet, ALI za to im je potrebna GOOOOOD stabilna snaga. Pokušajte i LOW AND HIGH (samo promijenite MAX tekst) kako biste vidjeli imate li dobru komunikaciju. Također ćete dobiti dobar domet na LOW i HIGH osim ako nećete biti snajperist

Također, predajnike držite udaljene najmanje jedan metar, jer zatvaranje može učiniti signal lošim

Testirajte komunikaciju s nekim primjerom pinga u knjižnici NRF24 (veza na GitHubu)

U kodu morate postaviti jedinstveni identifikacijski broj za taj cilj:

int targID = 3401; // Ovo je ciljni ID

int sendID = 2401; // Ovo je ID odgovora

Postoje i 3 DEFINE funkcije:

#define DEBUG

#definirajte BATERIJU

#define SHAKE // AKO SE UMJESTO STAROG PIEZA -a KORISTI SHAKE SWITCH

Uklanjanje pogrešaka:

Tijekom ispitivanja to je dobro definirati. Ali kad ih učinite dostupnima, nemojte ih aktivirati.

BATERIJA:

Ako ne želite imati provjeru baterije za ciljeve, morate ukloniti ovu definiciju.

TRESTI:

Ako ste izgradili moju staru verziju, imate piezo senzore, uklonite ovo da biste za njih dobili ispravan kod.

ATMEGA328 Čip

Umjesto Arduino nano odlučio sam koristiti čip ATMEGA328 (s Uno pokretačkim programom), jednostavno ih je programirati samo uklonite čip iz Arduino Uno i dodajte ovaj čip i postavite kod. Provjerite električnu shemu o tome kako izgraditi mete.

Kod

Kod sam napisao sa PlatformIO umjesto Arduino IDE. Bolji je softver za programiranje. Dakle, kod je malo drugačiji. Preporučujem da umjesto toga koristite ovaj softver.

Okvir za metu i odašiljač

Priključio sam senzor i plavu LED lampicu na metu, a pomoću 3, 5 mm fono kabela na 2 m povezujem ga zajedno u odašiljačku kutiju koja drži čip atmega, punjač baterija i zelenu i crvenu LED diodu. To se radi kako bi se zaštitilo od udara čeličnim mecima.

Korak 2: Kontroler igre

Kontroler igre
Kontroler igre
Kontroler igre
Kontroler igre
Kontroler igre
Kontroler igre
Kontroler igre
Kontroler igre

Sljedeća stvar koju moramo učiniti je napraviti kontroler za senzore. To je Arduino koji koristi NRF24L01 modul za komunikaciju sa senzorima. Ništa više. Arduino je zatim povezan s USB -om u malinovom pi radi rada.

Ovako će to funkcionirati. Koristi serijski broj da zna što treba učiniti. Pi će poslati serijske naredbe. Prvo tijekom postavljanja šalje koliko ste meta dodali i identifikacijske brojeve ciljeva. Zatim će obaviti funkciju testa i obavijestiti malinu pi ako međusobno komuniciraju.

Kad igrate igru, od pi će se poslati koja vrsta igre i koliko rundi/pogodaka treba upotrijebiti. To je to.

Moguće je koristiti module NRF24L01 u malini pi, ali za mene je Arduino bolja opcija grijesi koje nikad ne koristim u malini pa ne znam koliko dugo rade

Postoji modul za napajanje koji koristi 5 V za postizanje ispravne stabilne snage odašiljača. Možete ih koristiti sa sobom Arduino (vidi sliku) naziv je Socket Adapter Module Board

Kada igrate, mete će se nasumično aktivirati jedna po jedna. Kada je jedan pogođen, aktivirat će se drugi.

Tijekom testa možete aktivirati #DEFINE DEBUG da vidite kako radi, ali ne i kada ga koristite na pi računalu, tada neće raditi.

Preuzmite kôd na stranici GitHub.

Korak 3: Malina Pi

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

Sada smo došli do Raspberry Pi.

Dodao sam neke dodatne funkcije kako bih mogao imati gumb za uključivanje. ATXRaspi 3 je izvrstan modul, možete gumbom uključiti, isključiti i ponovno pokrenuti pi. Također RTCRaspi za zadržavanje vremena i datuma na pi. Također je omogućilo samo priključivanje mrežnog kabela u kućište. Moram izvršiti neka ažuriranja na sustavu. Naći ćete ih na Lowpowerlabu

Termalni pisač koji ćete pronaći na sparkfun -u, a čitač barkoda dostupan je na Amazonu.

Računalo Pi radi u načinu kioska pa će se preglednik otvoriti pri pokretanju. Prije svega trebate imati web poslužitelj s PHP 7 i mysql na računalu pi. (Za to postoji mnogo vodiča na webu)

NAPOMENA: ako ćete koristiti termalni pisač s malinom pi koji ima ugrađeni bluetooth, morate ga prvo onemogućiti

Skripti python je potreban pyserial, a vi ga instalirajte: sudo apt-get install python-serial

Da bi mysql funkcionirao, instalirajte sljedeće:

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

suso apt-get install pymysql

Sada možete kontrolirati Arduino kroz serijski i ažurirati mysql bazu podataka.

Sljedeći korak je napraviti python skriptu za povezivanje s mysql.

U sve tri python skripte promijenite vezu s vašom mysql bazom podataka.

Sljedeći korak je da se python skripta pokrene pri pokretanju.

Postoje tri python script.game.py je najvažniji od svih, jedan ima funkciju igre.print.py to je potrebno samo ako ćete za ispis.ean.py koristiti termalni pisač. upotrijebit će skener za crtični kod.

Uređujem kako bi se oni automatski pokrenuli:

sudo nano /etc/rc.local

i na dnu prije izlaza 0 dodajte sljedeće:

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

Promijenite ispravno mjesto za svoju python skriptu i ne zaboravite znak & na kraju

Sada moramo napraviti način kioska za webbrowser, prvo ukloniti pokazivač:

sudo apt-get install unclutter

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

sada u toj datoteci pronađi i komentiraj:

@xscreensaver -no -splash # komentirajte ovu liniju kako biste onemogućili čuvar zaslona

Ispod tog dodatka:

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

Sljedeći korak za uklanjanje svih tekstova za pokretanje i sličnih stvari te dodavanje vlastitog zaslona za pokretanje ovdje je kratki vodič:

sudo nano /boot/config.txt i pri dnu adddisable_splash = 1

Uklonite tekstualnu poruku ispod prskane slike:

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

Pronađite i uklonite (ili komentirajte):

message_sprite = Sprite (); message_sprite. SetPosition (širina ekrana * 0,1, visina ekrana * 0,9, 10000);

i:

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

Sada uklanjamo poruke za pokretanje:

sudo nano /boot/cmdline.txt

zamijenite “console = tty1” sa “console = tty3”

i na kraju retka dodajte:

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

I zamijenite pi splash vlastitim:

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

Sada imate svoj prilagođeni zaslon za pokretanje igre. Vaše pi računalo je sada spremno za rukovanje igrom. Dakle, prijeđite na sljedeći korak!

Korak 4: Postavite igru

Sada ste stvorili igru.

Prvo što trebate učiniti je postaviti web -sustav. Prenesite bazu podataka na svoj mysql poslužitelj. Datoteka se nalazi u mapi Uključuje i nazvana je database.sql

Sljedeći korak je uređivanje konfiguracijske datoteke koju ćete pronaći u nazivu mape config.php Promijenite podatke za prijavu u bazu podataka kako bi skripta radila.

Web sustav temelji se na više jezika i napisan je na engleskom jeziku. Dostupan je prijevod sa švedskog. Za više jezika potreban vam je softver pod nazivom Poedit.

Za dodavanje više jezika u web sustav morate urediti i18n_setup.php i dodati u niz:

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

Također za promjenu zadanog jezika morate promijeniti u retku 27: $ lang = 'en_US'; promijenite en_US u svoj jezik.

jezične datoteke moraju biti smještene u locales/LANGCODE/LC_MESSAGES/i imati naziv main.mo (Promijenite langcode u jezik)

za promjenu tipkovnice u datoteci selectplayers.php mijenjate jezik: "en", // en za engleski sv za švedski izgled: 'qwerty', // qwerty za engleski švedski-qwerty za švedski

Naći ćete ih na linijama 218 i 219

Dostupni jezici nalaze se u mapi: imovina/js/tipkovnica/jezici i rasporedi nalaze se u imovini/js/tipkovnici/rasporedima i dodajte ispravne datoteke u retke 118 i 119 (zamijenite onu koju sada pronađete)

Dodajte ciljeve

Da biste dodali ciljeve, idite na localhost/ admin/ i kliknite na dodavanje ciljeva.

Morate dodati naziv meti i jedinstveni ID cilja te poslati ID, dodati što više ciljeva koje imate.

Dodajte igre

Također morate dodati neke igre. Idite na localhost/ admin/ i kliknite Dodaj igru

Morate dodati naziv igre, opis, min i maks. Igrača koju vrstu igre, kao i koliko je teška igra između 1 do 5. I kako je igra, pa za igru rapidfire dodajete koliko pogodaka (primjer 30) za brzo izvlačenje koliko rundi (na primjer 8) i za određeno vrijeme koliko će igrati (na primjer 60 za jednu minutu)

Započni igru

Kad uključite igru, izvršit će ciljano testiranje. Dakle, ciljevi moraju biti uključeni prije nego pokrenete glavni sustav. Ako svi prođu test, možete koristiti sustav, ali ako ne, ne možete ga koristiti. Pokušat će komunicirati sve dok ne dobiju odgovor.

Sretno

Pa to je sve, za podršku i informacije o ažuriranju koda slijedite moju Facebook stranicu za ovu igru, tako da vam mogu brzo odgovoriti. Ovdje ćete pronaći veze na vrhu.

Preporučeni: