Sadržaj:
- Supplies
- Korak 1: Bežični senzori
- Korak 2: Kontroler igre
- Korak 3: Raspberry Pi
- Korak 4: Postavite igru
Video: Arduino pucačka igra V3: 4 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-31 10:17
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
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
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
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:
DIY 37 Leds Arduino Roulette igra: 3 koraka (sa slikama)
DIY 37 Leds Arduino Roulette igra: Roulette je casino igra nazvana po francuskoj riječi koja znači mali kotačić
ARDUINO + SCRATCH Igra pucanja: 6 koraka
ARDUINO + SCRATCH Igra pucanja: Sačuvajte tortu! U opasnosti je. Pristupaju mu četiri muhe. Imate samo 30 sekundi da odstrelite muhe i spremite tortu
Arduino Sorta Sudoku igra: 3 koraka (sa slikama)
Arduino Sorta Sudoku igra: Mnogi ljudi vole igrati Sudoku, a unuci vole igre pogađanja pa sam odlučio napraviti prijenosnu igru „Sorta Sudoku“. U mojoj verziji igra je 4x4, ali je naveden samo jedan broj. Ideja je pogoditi ostatak brojeva u
Aruduino LED igra Brza igra za dva igrača: 8 koraka
Aruduino LED igra Brza igra za dva igrača: Ovaj projekat je inspirisan @HassonAlkeim. Ako ste voljni detaljno pogledati, evo linka koji možete provjeriti https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Ova igra je poboljšana verzija Alkeima. To je
Interaktivna igra Tic-Tac Toe igra kojom se upravlja pomoću Arduina: 6 koraka
Interaktivna igra Tic-Tac Toe nogom kontrolirana s Arduinom: Cilj projekta Physical Tic-Tac-Toe je premjestiti dobro poznatu igru u fizičko područje. U početku igru igraju dva igrača na komadu papira - stavljajući naizmjence simbole 'X' i 'O'. Naša ideja je bila ispitati ponašanje igrača