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, Novembar
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 vibracije 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.

Dakle, kako ova igra funkcionira? Pa to su 3 načina igre:

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

Režim vremena: Pucajte što više meta na X sekundi.

Rapidfire: Snimite X snimke što je brže moguće.

Sustav koristi odašiljače NRF24L01 kako bi dobili dobre udaljenosti od glavnog kontrolera. Rade na 2,6 GHz (isto što radi i WiFi)

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

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

Supplies

Za predajnike:

  • X Atmega328 sa Arduino Bootloader -om (ovisno o tome koliko meta)
  • X Prekidač senzora vibracija
  • X Plava Led
  • X Green Led
  • X Crvena 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 predajnik)
  • 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)
  • Ekran osetljiv na dodir od 7"
  • ATXRaspi (opcionalno, ali dobar modul dugmeta za uključivanje)
  • RTCRaspi (opcionalno, ali dobar RTC modul za čuvanje vremena i datuma)
  • Termalni štampač (opcionalno, ali potrebno za štampanje)
  • Skener bar koda (USB verzija koja radi poput tastature, opcionalno)
  • Dobra snaga 5V (koristio sam stari 12v USB sa napajanjem 2.5 A)

Ostale stvari:

  • 12v napajanje (imam jedan na 12 Ah)
  • Mrežna utičnica (Olakšajte povezivanje na mrežu)
  • Cables

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 sa 4 -brojnim kodom kada glavni sistem pošalje kôd sa kojom funkcijom će senzor sa pravim kodom zasvijetliti i biti spreman za cilj. Plavo svjetlo obavještava vas da ćete cilj pogoditi.

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

Senzor vibracije je spojen na analogni pin i očitava njegovu vrijednost. Kada vrijednost opada, senzor je pokupio vibraciju i tu registriramo pogodak.

Meta 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čni list kako biste vidjeli kako ćete to učiniti. Jedina stvar koja se ne nalazi na njemu su baterija, prekidač za napajanje i punjač. Na vama je da odlučite kako želite.

NAPOMENA O NRF24L+ modulu:

Može biti bol u… da ih učinite stabilnima, u kombinaciji s dobrom snagom i izolacijom oko njih, i kodom ćete ih natjerati na rad. Za mene će kondenzator od 10 uF dati stabilnu i dobru vezu, ali pokušajte prvo ako 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 za vrijeme testa) najniži je i neće trošiti toliko energije, ali domet 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 (Promijenite samo MAX tekst) da vidite da li imate dobru komunikaciju. Također ćete dobiti dobar domet na LOW i HIGH osim ako nećete biti snajperist

Takođe, predajnike držite udaljene najmanje jedan metar, jer zatvaranje može pogoršati signal

Testirajte komunikaciju s nekim primjerom pinga u biblioteci NRF24 (veza na GitHubu)

U kodu morate postaviti jedinstveni identifikacijski broj za tu metu:

int targID = 3401; // Ovo je ciljni ID

int sendID = 2401; // Ovo je ID odgovora

Postoje i 3 DEFINE funkcije:

#define DEBUG

#define BATERIJA

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

DEBUG:

Tokom testa to je dobro definirati. Ali kad ih učinite dostupnima, nemojte ih aktivirati.

BATERIJA:

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

PROTRAŠI:

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

ATMEGA328 Chip

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

Kodeks

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.

Kutija mete i odašiljača

Priključio sam senzor i plavu LED lampu na metu, a pomoću 3, 5 mm fono kabela na 2 m povezujem ga zajedno u kutiju predajnika koja drži atmega čip, punjač baterija i zeleno -crvenu LED diodu. Ovo služi 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 drugo. Arduino je zatim povezan s USB -om u malinovom pi da bi radio.

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

Kada igrate igru, od pi će vam poslati koju vrstu 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 funkcioniraju

Postoji modul za napajanje koji koristi 5 V za ispravno i stabilno napajanje predajnika. 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.

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

Preuzmite kôd na stranici GitHub.

Korak 3: Raspberry Pi

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

Sada smo došli do Raspberry Pi.

Dodao sam neke dodatne funkcije kako bih mogao imati dugme za napajanje. ATXRaspi 3 je odličan modul, možete da uključite, isključite i ponovo pokrenete pi pomoću dugmeta. Takođe RTCRaspi za držanje 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 sistemu. Naći ćete ih na Lowpowerlabu

Termalni štampač koji ćete pronaći na sparkfun -u, a čitač bar koda dostupan je na Amazonu.

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

NAPOMENA: ako ćete koristiti termalni štampač sa malinom pi koji ima ugrađen bluetooth, morate ga prvo onemogućiti

Python skripti treba pyserial i vi je 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 svoj Arduino kroz serijski i ažurirati mysql bazu podataka.

Sljedeći korak je da napravite python skriptu za povezivanje sa mysql -om.

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

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

Postoje tri python script.game.py je najvažniji od svih, jedan sadrži funkciju game.print.py to je potrebno samo ako ćete koristiti print termal printer za print.ean.py samo ako ste upotrijebit će skener za crtični kod.

Da ih učinim automatskim pokretanjem, uređujem:

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 na ispravno mjesto za svoju python skriptu i ne zaboravite znak & na kraju

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

sudo apt-get install unclutter

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

sada u toj datoteci pronađite i komentirajte:

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

Ispod toga dodajte:

@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 ekrana 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 ostavite komentar):

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 ekran za pokretanje igre. Vaš pi računar je sada spreman za rukovanje igrom. Dakle, pređite na sljedeći korak!

Korak 4: Postavite igru

U ovom trenutku ste kreirali igru.

Prvo što trebate učiniti je postaviti web -sustav. Prenesite bazu podataka na svoj mysql server. Datoteka se nalazi u uključenoj mapi i ima naziv database.sql

Sljedeći korak je uređivanje konfiguracijske datoteke, koju ćete pronaći u ime direktorija config.php Promijenite podatke za prijavu u bazu podataka kako bi skripta funkcionirala.

Web sistem je zasnovan na više jezika i napisan je na engleskom jeziku. Dostupan je prijevod sa švedskog. Za više jezika potreban vam je softver pod imenom Poedit.

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

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

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

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

za promjenu tastature 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 se nalaze u fascikli: assets/js/keyboard/languages & Layouts su u assets/js/keyboard/layouts i dodajte ispravne datoteke u retke 118 i 119 (zamijenite onu koju sada pronađete)

Dodajte ciljeve

Za dodavanje ciljeva idite na localhost/ admin/ i kliknite na dodaj ciljeve.

Morate dodati ime za cilj i jedinstveni ID cilja i poslati ID, dodati što više ciljeva koje imate.

Dodajte igre

Morate dodati i neke igre. Idite na localhost/ admin/ i kliknite na 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 dodajte 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 ciljno testiranje. Dakle, ciljevi moraju biti postavljeni prije nego pokrenete glavni sistem. Ako svi prođu test, možete koristiti sistem, 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čuje se: