Sisukord:

Arduino tulistamismäng V3: 4 sammu
Arduino tulistamismäng V3: 4 sammu

Video: Arduino tulistamismäng V3: 4 sammu

Video: Arduino tulistamismäng V3: 4 sammu
Video: умоляю, не хейтите пж 2024, November
Anonim
Image
Image
Arduino tulistamismäng V3
Arduino tulistamismäng V3
Arduino tulistamismäng V3
Arduino tulistamismäng V3
Arduino tulistamismäng V3
Arduino tulistamismäng V3

See mäng on teile, kes kasutab sihtmärkide laskmiseks airsofti või CO2. See on mäng.

Mängu ja toe ajakohast teavet saate:

www.facebook.com/arduinoshooting/

Minu ajaveebi leht mängu kohta:

shootinggameblog.wordpress.com

Mängu koodid:

github.com/shootinggame82/Shooting-game-v3

Tulistamismäng on x juhtmeta sihtmärki, igal sihtmärgil on vibratsiooniandur, mis tuvastab löögi korral tekkiva vibratsiooni. Traadita andurid on Atmega328 kiip (Arduino Uno kiip) ja neil on Li-Po aku.

Selle mängu peamist kontrollerit juhib Arduino ja seda juhitakse seeriaviisiliselt Raspberry Pi kaudu.

Kuidas see mäng töötab? See on 3 mängurežiimi:

Kiire aeg: mängige X ringi ja tulistage nii kiiresti kui võimalik igale sihtmärgile.

Ajarežiim: tulistage X sekundiga nii palju sihtmärke kui võimalik.

Kiire tulekahju: tehke X -võtet kiireimal ajal.

Süsteem on meie NRF24L01 saatjad, et saada põhikontrollerist hea kaugus. Nad töötavad sagedusel 2,6 GHz (sama mis WiFi töötab)

Varasemates projektides kasutasin vibratsiooni jaoks Piezot, kuid nüüd kasutatakse vibratsioonianduri lülitit. Kuid kui olete teinud selle mängu vana versiooni, saate Piezot siiski kasutada.

Mängul on Raspberry Pi 7 -tolline puutetundlik ekraan, mis hoiab veebisüsteemi, mida saate mängu kaudu juhtida. Terminalprinter prindib tulemused välja.

Tarvikud

Saatjate jaoks:

  • X Atmega328 koos Arduino alglaaduriga (sõltuvalt sihtmärkide arvust)
  • X Vibratsioonianduri lüliti
  • X Sinine LED
  • X roheline LED
  • X Punane LED
  • X 3,7v Li-Po aku
  • X FC-75 Li-Po laadimismoodul (või mõni muu mudel)
  • X 100 uF kondensaator
  • X Andurite korpused
  • X LD1117V33 (teeb saatjale ohutuks 3,3 V)
  • X NRF24L01 moodulid
  • X x 3 220 oomi takistid (ühe sihtmärgi jaoks on vaja 3)
  • X 16 MHz kristall
  • X x 2 rikkumata kondensaatorit 22 pF (ühe sihtmärgi jaoks on vaja 2)

Peamine Arduino:

  • 1 Arduino (soovitatav on Nano või Uno, peab olema USB)
  • 1 NRF24L01 moodul
  • 1 10 uF kondensaator

Vaarika Pi jaoks:

  • Vaarika Pi (kasutasin 3B)
  • 7 "puutetundlik ekraan
  • ATXRaspi (valikuline, kuid hea toitenupumoodul)
  • RTCRaspi (valikuline, kuid hea RTC -moodul kellaaja ja kuupäeva hoidmiseks)
  • Terminalprinter (valikuline, kuid vajalik printimiseks)
  • Vöötkoodiskanner (USB -versioon, mis töötab nagu klaviatuur, valikuline)
  • Hea 5 V toide (kasutasin vana 12 V USB -d, mille võimsus oli 2,5 A)

Teised asjad:

  • 12v võimsus (mul on üks 12 Ah juures)
  • Võrgupesa (hõlbustage võrguga ühendamist)
  • Kaablid

Samm: traadita andurid

Traadita andurid
Traadita andurid
Traadita andurid
Traadita andurid
Traadita andurid
Traadita andurid

Alustame andurite valmistamist. Selle mängu jaoks kasutan 4 andurit. Kuid saate hõlpsalt lisada rohkem andureid. Andurid suhtlevad nelja numbrikoodiga, kui põhisüsteem saadab välja koodi, millise funktsiooniga õige koodiga andur süttib ja on sihtmärgiks valmis. Sinine tuli teatab, et tabate sihtmärgi.

Meil on ka roheline ja punane LED. Roheline süttib alati, andes teada, et andur on sisse lülitatud. Punane süttib ainult siis, kui aku on alla 3,1 V (see kasutab kiibis sisseehitatud funktsiooni, et arvutada, kui palju akus on.

Vibratsiooniandur on ühendatud analoogpistikuga ja loeb selle väärtust. Kui väärtus langeb, annab andur vibratsiooni ja seal registreerime tabamuse.

Sihtmärgil on tõrkekindel funktsioon, mis ei taba X sekundi jooksul (vaikimisi on 15 sekundit) või kui edastamist ei saa teha, lähevad nad tagasi algasendisse.

Ma ei hakka selgitama, kuidas te juhtmeid ühendate, kontrollige elektrilist lehte, et näha, kuidas te seda teete. Üks asi, mida sellel pole, on aku, toitelüliti ja laadija. See on teie otsustada, kuidas seda soovite.

TÄHTIS NRF24L+ moodulist:

See võib olla valus…, kui need muutuvad stabiilseks, koos hea võimsuse ja eraldatusega, ning kood, mille abil need tööle saavad. Minu jaoks annab 10 uF kondensaator mulle stabiilse ja hea ühenduse, kuid palun proovige kõigepealt, kui vajate näiteks 100 uF kondensaatorit. Samuti mähkige need esmalt kilega ja seejärel alumiiniumfooliumiga, et kaitsta neid segamise eest

Ka koodis pole andmeedastuskiirust vaja rohkem kui 250 Kb, nii et see pole probleem. Kuid PA: myRadio.setPALevel (RF24_PA_MIN);

Koodis, mille olen määranud MIN (see on testi ajal), on see madalaim ja ei kasuta nii palju energiat, kuid vahemik ei ole nii pikk. Kui teil on stabiilne ja hea võimsus, saate pikima tööulatuse saamiseks minna RF24_PA_MAX -i, AGA nad vajavad selleks GOOOOOD stabiilset energiat. Proovige ka madalat ja kõrget (muutke ainult MAX -teksti), et näha, kas teil on hea side. Samuti saate hea kauguse madalatel ja kõrgetel, kui te ei saa snaipriks

Samuti hoidke saatjaid vähemalt meetri kaugusel, sest sulgemine võib signaali halvaks teha

Kontrollige suhtlust mõne pinginäitega NRF24 raamatukogus (link GitHubis)

Koodis peate määrama selle sihtmärgi kordumatu identifitseerimisnumbri:

int targID = 3401; // See on sihtkoha ID

int sendID = 2401; // See on vastuse ID

Samuti on 3 DEFINE funktsiooni:

#define DEBUG

#määratle AKU

#define SHAKE // KUI LÖÖGILÜLITIT KASUTATAKSE VANA PIEZO SISSE

DEBUG:

Katse ajal on see hea määratleda. Kuid kui need kättesaadavaks muudate, ärge seda aktiveerige.

AKU:

Kui te ei soovi sihtmärkide jaoks aku kontrollijat kasutada, peate selle määratluse eemaldama.

RAPUTAMA:

Kui olete minu vana versiooni ehitanud, on teil piesoandurid, seejärel eemaldage see, et saada neile õige kood.

ATMEGA328 kiip

Arduino nano asemel otsustasin kasutada ATMEGA328 kiipi (Uno alglaaduriga), neid on lihtne programmeerida, lihtsalt eemaldage kiip Arduino Unost ja lisage see kiip ning laadige üles kood. Kontrollige elektriskeemi, kuidas sihtmärke üles ehitada.

Kood

Olen koodi kirjutanud Arduino IDE asemel PlatformIO -ga. See on parem tarkvara programmeerimiseks. Seega on kood pisut erinev. Soovitan selle tarkvara asemel kasutada.

Siht- ja saatjakast

Mul on andur ja sinine valgusdiood sihtmärgile kinnitatud ning 3 m, 5 mm fonokaabliga 2 m, ühendage see saatekarbis, mis hoiab atmega kiipi, akulaadijat ning rohelist ja punast LED -i. Seda selleks, et kaitsta seda teraskuulide eest löögi eest.

2. samm: mängukontroller

Mängujuht
Mängujuht
Mängujuht
Mängujuht
Mängujuht
Mängujuht
Mängujuht
Mängujuht

Järgmine asi, mida peame tegema, on teha anduritele kontroller. See on Arduino, mis kasutab anduritega suhtlemiseks NRF24L01 moodulit. Mitte midagi muud. Seejärel ühendatakse Arduino vaarika pi -ga USB -ga töötamiseks.

See toimib nii. See kasutab seeriat, et teada saada, mida teha. Pi saadab jadakäsklusi. Esmalt saadab see seadistamise ajal välja, kui palju sihtmärke olete lisanud, ja sihtmärkide identifitseerimisnumbrid. Seejärel täidab see testfunktsiooni ja teavitab vaarika pi, kui nad omavahel suhtlevad.

Mängu mängides saadab see pi -lt üle, millist tüüpi mängu ja mitu vooru/tabamust kasutada. See on see.

Vaarika pi -s on võimalik kasutada NRF24L01 mooduleid, kuid minu jaoks on Arduino parem variant, mida ma kunagi vaarikas ei kasuta, nii et ma ei tea, kui hästi need pikas perspektiivis töötavad

Seal on toite moodul, mis kasutab saatjaid õige stabiilse toite saamiseks 5 v abil. Saate neid kasutada koos teiega Arduino (vt pilti), nimi on Socket Adapter Module Board

Mängides aktiveeritakse sihtmärgid ükshaaval juhuslikult. Kui ühte tabatakse, aktiveeritakse teine.

Testi ajal saate aktiveerida #DEFINE DEBUG, et näha, kuidas see töötab, kuid mitte siis, kui kasutate seda pi arvutis, siis see ei tööta.

Laadige kood alla GitHubi lehelt.

3. samm: Raspberry Pi

Vaarika Pi
Vaarika Pi
Vaarika Pi
Vaarika Pi
Vaarika Pi
Vaarika Pi
Vaarika Pi
Vaarika Pi

Nüüd oleme jõudnud Raspberry Pi juurde.

Olen lisanud mõned lisafunktsioonid, et mul oleks toitenupp. ATXRaspi 3 on suurepärane moodul, saate nupu nupuga sisse, välja lülitada ja taaskäivitada. Samuti RTCRaspi, et kella ja kuupäeva pi peal hoida. Samuti võimaldas võrgukaabli lihtsalt ühendada, kui pean süsteemis värskendusi tegema. Need leiate Lowpowerlabist

Termoprinter, mille leiate saidilt sparkfun, ja vöötkoodilugeja on saadaval Amazonist.

Pi -arvuti töötab kioskirežiimis, nii et brauser avaneb alguses. Kõigepealt peab pi -arvutis olema PHP 7 ja mysql -ga veebiserver. (Selle jaoks on veebis palju juhendeid)

TÄHELEPANU: kui kavatsete kasutada Bluetoothi sisseehitatud vaarika pi termoprinterit, peate selle kõigepealt keelama

Pythoni skript vajab püsialust ja te installite selle: sudo apt-get install python-serial

Selleks, et mysql töötaks, installige järgmine:

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

suso apt-get install pymysql

Nüüd saate oma Arduino jada kaudu juhtida ja ka mysqli andmebaasi värskendada.

Järgmine samm on luua pythoni skript mysql -iga ühenduse loomiseks.

Kõigis kolmes pythoni skriptis muutke ühendus oma mysql andmebaasiga.

Järgmine samm on panna pythoni skript käivitama.

Seal on kolm pythoni skripti.game.py on kõige olulisem, millest üks omab mängufunktsiooni.print.py seda on vaja ainult siis, kui kavatsete printimiseks kasutada terminaalset printerit. hakkate kasutama vöötkoodiskannerit.

Nende automaatse käivitamise muutmiseks toimige järgmiselt.

sudo nano /etc/rc.local

ja lisage enne väljumist 0 allservas järgmine:

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

Muutke oma pythoni skripti jaoks õige koht ja ärge unustage lõpus & märki

Nüüd peame veebibrauseri jaoks tegema kioskirežiimi, eemaldage kõigepealt kursor:

sudo apt-get install unclutter

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

Nüüd leidke ja kommenteerige selles failis:

@xscreensaver -no -splash # kommenteerige seda rida ekraanisäästja keelamiseks

Selle alla lisage:

@xset s välja lülitatud @xset -dpms @xset s noblank @chromium-browser --noerrdialogs --force-device-scale-factor = 1,25 --kiosk https:// localhost

Järgmine samm kõigi algtekstide ja muu eemaldamiseks, samuti oma alglaadimisekraani lisamiseks, on siin lühijuhend:

sudo nano /boot/config.txt ja allosas adddisable_splash = 1

Eemaldage tekstisõnum pritsmepildi alt:

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

Leidke ja eemaldage (või kommenteerige):

message_sprite = Sprite (); message_sprite. SetPosition (ekraani laius * 0,1, ekraani kõrgus * 0,9, 10000);

ja:

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

Nüüd eemaldame alglaadimissõnumid:

sudo nano /boot/cmdline.txt

asendage “konsool = tty1” tekstiga “konsool = tty3”

ja lisage rea lõppu:

pritsima vaikne plymouth.ignore-serial-consoles logo.nologo vt.global_cursor_default = 0

Ja asendage pi splash omaga:

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

Nüüd on teie mängu jaoks kohandatud alglaadimisekraan. Teie pi arvuti on nüüd mängu käsitsemiseks valmis. Nii et järgmise sammu juurde!

Samm: seadistage mäng

Sel hetkel olete mängu loonud.

Kõigepealt peate seadistama veebisüsteemi. Laadige andmebaas üles oma mysql -serverisse. Fail asub kaustas sisaldab nimega database.sql

Järgmine samm on konfiguratsioonifaili muutmine, mille leiate kausta nimega config.php Muutke andmebaasi sisselogimisteavet, et skript töötaks.

Veebisüsteem on mitmekeelne ja kirjutatud inglise keeles. Saadaval on ka rootsi tõlge. Keele lisamiseks on vaja tarkvara nimega Poedit.

Veebisüsteemi keele lisamiseks peate muutma i18n_setup.php ja lisama massiivi:

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

Ka vaikekeele muutmiseks tuleb muuta rida 27: $ lang = 'en_US'; muutke en_US teie keeleks.

keelefailid tuleb paigutada lokaatidesse/LANGCODE/LC_MESSAGES/ja nende nimi on main.mo (muutke keele kood teie keeleks)

failide selectplayers.php klaviatuuri vahetamiseks muudate keelt: "en", // en inglise keeles sv rootsi paigutuse jaoks: 'qwerty', // qwerty inglise keeles rootsi-qwerty rootsi jaoks

Leiate need liinid 218 ja 219

Saadaolevad keeled on kaustas: Varad/js/klaviatuur/keeled ja paigutused on varades/js/klaviatuur/paigutused ning lisavad reale 118 ja 119 õiged failid (asendage sealt leitud keel)

Lisa sihtmärke

Sihtmärkide lisamiseks minge saidile localhost/ admin/ ja klõpsake nuppu Lisa sihtmärgid.

Peate lisama sihtmärgile nime ja kordumatu sihtmärgi ID ning saatma ID, lisama nii palju sihtmärke, kui teil on.

Lisage mänge

Samuti peate lisama mõned mängud. Minge saidile localhost/ admin/ ja klõpsake nuppu Lisa mäng

Peate lisama mängule nime, kirjelduse, minimaalsed ja maksimaalsed mängijad, millist tüüpi mängu, samuti selle, kui raske mäng on vahemikus 1 kuni 5. Ja kuidas mäng on, seega lisage kiirtulemängu jaoks mitu tabamust (näide 30) kiirvõistluse jaoks mitu vooru (näiteks 8) ja ajastatud, kui kaua nad mängivad (näiteks 60 minuti jooksul)

Alustage mängu

Mängu sisselülitamisel teeb see sihttesti. Seega peavad eesmärgid olema enne põhisüsteemi käivitamist seatud. Kui kõik läbivad testi, saate süsteemi kasutada, aga kui mitte, ei saa te seda kasutada. See proovib suhelda, kuni nad vastuse saavad.

Edu

Noh, see on kõik, koodi saamiseks ja toetuse saamiseks järgige minu mängu Facebooki lehte, et saaksin teile kiiresti vastata. Siit leiate ülevalt lingid.

Soovitan: