Talaan ng mga Nilalaman:

Arduino Shooting Game V3: 4 Hakbang
Arduino Shooting Game V3: 4 Hakbang

Video: Arduino Shooting Game V3: 4 Hakbang

Video: Arduino Shooting Game V3: 4 Hakbang
Video: Vhong Navarro - Cha-Cha-Cha (Audio) 🎵 | Don Romantiko 2024, Hulyo
Anonim
Image
Image
Arduino Pamamaril Laro V3
Arduino Pamamaril Laro V3
Arduino Pamamaril Laro V3
Arduino Pamamaril Laro V3
Arduino Pamamaril Laro V3
Arduino Pamamaril Laro V3

Ang larong ito ay para sa iyo na gumagamit ng airsoft o co2 upang mag-shoot sa mga target. Ito ay isang laro.

Para sa hanggang sa impormasyon sa tungkol sa laro at suporta:

www.facebook.com/arduinoshooting/

Para sa aking pahina sa blog tungkol sa laro:

shootinggameblog.wordpress.com

Para sa mga code tungkol sa laro:

github.com/shootinggame82/Shooting-game-v3

Ang laro sa pagbaril ay x mga target na walang wireless, ang bawat target ay may isang panginginig ng boses sensor na panginginig ng sens na nakukuha kapag nagawa ang isang hit. Ang mga wireless sensor ay isang Atmega328 chip (Arduino Uno chip) at may recharge na Li-Po na baterya.

Ang Pangunahing tagontrol para sa larong ito ay kinokontrol ng isang Arduino at Serial na kinokontrol mula sa isang Raspberry Pi.

Kaya paano gumagana ang larong ito? Sa gayon ito ay 3 mga mode ng laro:

Quicktime: Maglaro ng X na pag-ikot at mabaril nang napakabilis na makakaya mo sa bawat target.

Timemode: Abutin ang maraming mga target na maaari mong X segundo.

Rapidfire: Shoot X shot sa pinakamabilis na oras.

Ang system sa amin NRF24L01 transmitter upang makakuha ng isang mahusay na distans mula sa pangunahing controller. Nagtatrabaho sila sa 2.6 GHz (Kapareho ng pagpapatakbo ng WiFi)

Sa aking mga nakaraang proyekto gumagamit ako ng Piezo para sa panginginig ng boses, ngunit ngayon ang Vibration Sensor Switch ay ginagamit. Ngunit maaari mo pa ring gamitin ang Piezo kung nagawa mo ang aking lumang bersyon ng larong ito.

Ang laro ay mayroong isang Raspberry Pi 7 touch screen na humahawak sa web system na kinokontrol mo ang laro sa pamamagitan ng. Isang terminal printer ang naglilimbag ng mga resulta.

Mga gamit

Para sa mga transmiter:

  • X Atmega328 kasama ang Arduino Bootloader (Depende sa kung gaano karaming mga target)
  • X Vibration Sensor Switch
  • X Blue Led
  • X Green Led
  • X Red Led
  • X 3.7v Li-Po na baterya
  • X FC-75 Li-Po Charger module (O ibang modelo)
  • X 100 uF Capacitor
  • X Mga kaso para sa mga sensor
  • X LD1117V33 (Gumagawa ng isang ligtas na 3.3 V sa transmitter)
  • X NRF24L01 Modules
  • X x 3 220 Ohm Resistors (kinakailangan ang 3 para sa isang target)
  • X 16 MHz Crystal
  • X x 2 Unplorized Capacitors 22 pF (2 ang kailangan para sa isang target)

Para sa pangunahing Arduino:

  • 1 Arduino (Inirerekumenda ang Nano o Uno, kailangang magkaroon ng USB)
  • 1 Modyul ng NRF24L01
  • 1 10 uF capacitor

Para sa raspberry Pi:

  • Raspberry Pi (Gumamit ako ng 3B)
  • 7 "Touch Screen
  • ATXRaspi (Opsyonal ngunit isang mahusay na module ng power button)
  • RTCRaspi (Opsyonal ngunit isang mahusay na module ng RTC upang mapanatili ang oras at petsa)
  • Termal printer (Opsyonal ngunit kinakailangan upang makapag-print)
  • Barcode scanner (bersyon ng USB na gumagana tulad ng isang keyboard, Opsyonal)
  • Magandang kapangyarihan ng 5V (Gumamit ako ng isang lumang 12v USB na may 2.5 Isang lakas)

Iba pang mga bagay-bagay:

  • 12v kapangyarihan (Mayroon akong isa sa 12 Ah)
  • Network socket (Gawing madaling kumonekta sa Network)
  • Mga kable

Hakbang 1: Ang Mga Wireless Sensor

Ang Mga Wireless Sensor
Ang Mga Wireless Sensor
Ang Mga Wireless Sensor
Ang Mga Wireless Sensor
Ang Mga Wireless Sensor
Ang Mga Wireless Sensor

Magsimula tayo sa paggawa ng mga sensor. Gumagamit ako ng 4 na sensor para sa larong ito. Ngunit madali mong magdagdag ng higit pang mga sensor. Ang mga sensor ay nakikipag-usap sa 4 na numero ng code kapag ang pangunahing sistema ay nagpapadala ng code kung anong pagpapaandar ang sensor na may tamang code ay mag-iilaw at maging handa para sa target. Ang asul na ilaw ay upang ipaalam na ang target na iyon ay maaabot mo.

Mayroon din kaming isang berde at isang pulang humantong. Laging nag-iilaw ang berde upang ipaalam na nakabukas ang sensor. Ang pula ay masisindi lamang kapag ang baterya ay mas mababa sa ilalim ng 3.1V (ginagamit nito ang built in na pag-andar sa maliit na tilad upang makalkula kung magkano ang nasa baterya.

Ang sensor ng panginginig ng boses ay konektado sa analog pin at binabasa ang halaga nito. Kapag lumulubog ang halaga, ang sensor ay may pic up ng isang panginginig ng boses at doon namin iparehistro ang hit.

Ang target ay may isang function na failedafe, na sakaling hindi ka pindutin sa X segundo (ang default ay 15 sec) o kung ang paghahatid ay hindi maaaring gawin sa kanila ay babalik upang simulan ang posisyon.

Hindi ko ipaliwanag kung paano ka mag-wire, suriin ang sheet ng elektrisidad upang malaman kung paano mo gagawin iyon. Ang isang bagay na wala rito, ay ang baterya, switch ng kuryente at charger. Nasa sa iyo iyon ang magpasya kung paano mo ito gusto.

IMPORTAINT TUNGKOL SA NRF24L + Modyul:

Maaari itong maging sakit sa … upang makuha silang matatag, na sinamahan ng mabuting lakas at paghihiwalay sa paligid nito, at ang code na papaganahin mo sila. Para sa akin ang 10 uF capacitor ay magbibigay sa akin ng matatag at mahusay na koneksyon, ngunit mangyaring subukan muna na ibigay ang kailangan mo halimbawa 100 uF capacitor. Balot din ang mga ito ng unang plastic foil at pagkatapos ay ang Aluminium foil upang maprotektahan sila mula sa makagambala

Gayundin sa code, ang rate ng data na hindi mo kailangan ng higit sa 250 Kb upang hindi iyon ang magiging problema. Ngunit ang PA: myRadio.setPALevel (RF24_PA_MIN);

Sa code na itinakda ko sa MIN (Ito ay sa panahon ng pagsubok), ito ang pinakamababa at hindi gagamit ng napakaraming lakas, ngunit ang saklaw ay hindi masyadong mahaba. Kung nakakuha ka ng matatag at mabuting kapangyarihan sa kanila, maaari kang umakyat sa RF24_PA_MAX upang makuha ang pinakamahabang saklaw, NGUNIT kailangan nila ng GOOOD matatag na lakas para doon. Subukan din ang LOW AND HIGH (Palitan ang MAX na teksto lamang) upang makita kung nakakakuha ka ng mahusay na komunikasyon. Gayundin makakakuha ka ng mahusay na saklaw sa LOW at HIGH maliban kung ikaw ay magiging isang sniper

Panatilihin din ang mga transmiter kahit isang metro ang layo, upang maisara ay maaaring masama ang signal

Subukan ang komunikasyon gamit ang ilang halimbawa ng ping sa NRF24 Library (Link sa GitHub)

Sa code kailangan mong itakda ang natatanging numero ng pagkakakilanlan para sa target na iyon:

int targID = 3401; // Ito ang target ID

int sendID = 2401; // Ito ang ID ng tugon

Mayroon ding 3 mga Tukoy na pag-andar:

# tukuyin ang DEBUG

# tukuyin ang BATTERY

#define SHAKE // KUNG ANG SHAKE SWITCH AY GINAMIT INSTEAD NG Lumang PIEZO

DEBUG:

Sa panahon ng pagsubok ito ay mahusay na tinukoy. Ngunit kapag ginawang magagamit mo ang mga ito, huwag itong buhayin.

BATTERY:

Kung hindi mo nais na magkaroon ng isang checker ng baterya para sa mga target, kailangan mong alisin ang tukuyin na ito.

SHAKE:

Kung nabuo mo ang aking lumang bersyon, mayroon kang mga piezo sensor, pagkatapos alisin ito upang makakuha ng tamang code para sa kanila.

ATMEGA328 Chip

Sa halip na isang Arduino nano napagpasyahan kong gumamit ng ATMEGA328 chip (kasama ang Uno boot loader), ang mga ito ay simpleng programa na alisin lamang ang chip mula sa isang Arduino Uno at idagdag ang chip na ito at mag-upload ng code. Suriin ang electric scheme kung paano mabuo ang mga target.

Ang Code

Sinulat ko ang code sa PlatformIO sa halip na Arduino IDE. Ito ay isang mas mahusay na software upang mag-program in. Kaya't ang code ay medyo kakaiba. Inirerekumenda kong gamitin sa halip ang software na ito.

Ang Target at Transmitter Box

Inilakip ko ang sensor at ang asul na humantong sa target, at sa isang 3, 5 mm phono cable sa 2 m ay ikonekta ko ito nang magkasama sa kahon ng transmiter na humahawak ng atmega chip, charger ng baterya at berde at pula na humantong. Ito ay upang maprotektahan ito mula sa tama ng mga bala ng bakal.

Hakbang 2: Ang Controller ng Laro

Ang Game Controller
Ang Game Controller
Ang Game Controller
Ang Game Controller
Ang Game Controller
Ang Game Controller
Ang Game Controller
Ang Game Controller

Ang susunod na bagay na kailangan nating gawin ay gawin ang controller para sa mga sensor. Ito ay isang Arduino na gumagamit ng isang module na NRF24L01 upang makipag-usap sa mga sensor. Walang iba. Ang Arduino pagkatapos ay konektado sa USB sa raspberry pi upang gumana.

Ganito ito gagana. Gumagamit ito ng serial upang malaman kung ano ang gagawin. Ang pi ay magpapadala ng mga serial command. Una sa panahon ng pag-set up ay nagpapadala ito kung ilang mga target ang naidagdag mo, at ang mga numero ng pagkakakilanlan ng mga target. Pagkatapos ay gagawin nito ang pagsubok na pagpapaandar at ipaalam sa raspberry pi kung nakikipag-usap sila sa bawat isa.

Kapag nilalaro mo ang laro ay magpapadala ito mula sa pi kung anong uri ng laro at kung gaano karaming mga pag-ikot / hit ang gagamitin. Ayan yun.

Posibleng gamitin ang mga modyul na NRF24L01 sa raspberry pi, ngunit para sa akin ang Arduino ay isang mas mahusay na pagpipilian na mga kasalanan na hindi ko kailanman ginagamit ang mga ito sa raspberry kaya hindi ko alam kung gaano kabuti ang mga ito sa pangmatagalang

Mayroong isang module ng kuryente na gumagamit ng 5 v upang makagawa ng wastong matatag na lakas sa mga transmiter. Maaari mong gamitin ang mga ito sa iyo Arduino (Tingnan ang larawan) ang pangalan ay Socket Adapter Module Board

Kapag nilalaro mo ang mga target ay iisa-isahin ang isa-isa. Kapag ang isa ay na-hit, isa pa ang isaaktibo.

Sa panahon ng pagsubok maaari kang magkaroon ng # DEEFIN DEBUG na aktibo upang makita kung paano ito gumagana, ngunit hindi kapag ginamit mo ito sa pi computer, hindi ito gagana pagkatapos.

I-download ang code sa pahina ng GitHub.

Hakbang 3: Raspberry Pi

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

Dumating na kami ngayon sa Raspberry Pi.

Nagdagdag ako ng ilang mga karagdagang pag-andar upang magkaroon ako ng isang power button. Ang ATXRaspi 3 ay isang mahusay na module, maaari mong i-on, i-off at i-reboot ang pi gamit ang isang pindutan. Gayundin isang RTCRaspi upang mapanatili ang oras at petsa sa pi. Ginawa ring posible na i-plugin lamang ang isang network cable na kailangan kong gumawa ng ilang mga pag-update sa system. Mahahanap mo ang mga ito sa Lowpowerlab

Ang Thermal printer ay mahahanap mo sa sparkfun at ang barcode reader ay magagamit sa Amazon.

Ang Pi computer ay tumatakbo sa kiosk mode kaya magbubukas ang browser sa simula. Una sa lahat kailangan mong magkaroon ng isang webserver na may PHP 7 at MySQL sa pi computer. (Mayroong maraming mga gabay sa paligid ng web para dito)

Mangyaring Tandaan

Ang python script ay nangangailangan ng pyserial at i-install mo ito: sudo apt-get install python-serial

Upang gawin ang sumusunod na pag-install ng trabaho ng MySQL:

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

suso apt-get install pymysql

Ngayon ay maaari mo nang makontrol ang Arduino sa pamamagitan ng serial at i-update din ang MySQL database.

Susunod na hakbang ay upang gumawa ng script ng sawa upang kumonekta sa MySQL.

Sa lahat ng tatlong script ng python baguhin ang koneksyon sa iyong database ng MySQL.

Susunod na hakbang ay upang patakbuhin ang python script sa simula.

Mayroong tatlong python script.game.py ay ang pinaka-importaint sa lahat, na humahawak sa laro function.print.py kakailanganin lamang ito kung gagamit ka ng termal printer upang mag-print.ean.py ay kinakailangan lamang kung ikaw ay gagamitin ang scanner ng barcode.

Upang gawing awtomatiko silang i-edit:

sudo nano /etc/rc.local

at idagdag ang sumusunod sa ibaba bago lumabas sa 0:

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

Mangyaring baguhin upang iwasto ang lugar para sa iyong script ng sawa at huwag kalimutan ang & mag-sign sa dulo

Ngayon kailangan naming gumawa ng isang kiosk mode para sa webbrowser, alisin muna ang cursor:

sudo apt-get install unclutter

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

ngayon sa file na iyon hanapin at magkomento:

@xscreensaver -no-splash # puna ang linya na ito upang huwag paganahin ang screensaver

Sa ibaba ng pagdaragdag na:

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

Susunod na hakbang upang alisin ang lahat ng mga teksto ng boot at mga bagay na magdagdag din ng iyong sariling boot screen dito ay isang mabilis na gabay:

sudo nano /boot/config.txt at sa ibaba adddisable_splash = 1

Alisin ang text message sa ilalim ng splash image:

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

Hanapin at alisin (o magkomento):

message_sprite = Sprite (); message_sprite. SetPosition (screen_width * 0.1, screen_height * 0.9, 10000);

at:

my_image = Image. Txt (teksto, 1, 1, 1); message_sprite. SetImage (my_image);

Inalis namin ngayon ang mga boot message:

sudo nano /boot/cmdline.txt

palitan ang "console = tty1" ng "console = tty3"

at sa dulo ng linya idagdag:

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

At palitan ang pi splash ng iyong sarili:

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

Ngayon ay mayroon ka ng iyong sariling pasadyang boot screen sa iyong laro. Handa na ang iyong pi computer upang hawakan ang laro. Kaya't sa susunod na hakbang!

Hakbang 4: I-set up ang Laro

Sa puntong ito nilikha mo na ngayon ang laro.

Una ang kailangan mong gawin ay ang pag-setup ng webbsystem. I-upload ang database sa iyong MySQL server. Ang file ay nasa kasamang folder at pinangalanang database.sql

Susunod na hakbang ay upang i-edit ang config file, makikita mo ito sa may kasamang pangalan ng folder na config.php Baguhin ang impormasyon sa pag-login sa database upang ang script ay gagana.

Ang web system ay batay sa maraming wika at nakasulat sa Ingles. Mayroong magagamit na pagsasalin sa Sweden. Upang makagawa ng mas maraming wika kailangan mo ng isang software na pinangalanang Poedit.

Upang magdagdag ng higit pang wika sa web system kailangan mong i-edit ang i18n_setup.php at idagdag sa array:

bumalik sa_array ($ lokal, ['en_US', 'sv_SE']); (Linya 23)

Gayundin upang baguhin ang default na wika na kailangan mong baguhin sa linya 27: $ lang = 'en_US'; baguhin ang en_US sa iyo wika.

ang mga file ng wika ay dapat ilagay sa mga lokal / LANGCODE / LC_MESSAGES / at mapangalanan main.mo (Palitan ang langcode sa iyo ng wika)

upang baguhin ang keyboard sa selectplayers ng file.php binago mo ang wika: "en", // en para sa english sv para sa layout ng Swedia: 'qwerty', // qwerty para sa english swedish-qwerty para sa swedish

Mahahanap mo sila sa linya 218 & 219

Ang mga magagamit na wika ay nasa folder: ang mga assets / js / keyboard / wika at mga layout ay nasa mga assets / js / keyboard / layout at idagdag ang mga tamang file sa linya 118 at 119 (palitan ang isa na mahahanap mo doon ngayon)

Magdagdag ng mga target

Upang magdagdag ng mga target pumunta ka sa localhost / admin / at mag-click sa magdagdag ng mga target.

Kailangan mong magdagdag ng isang pangalan para sa target at ang natatanging target ID at magpadala ng ID, magdagdag ng maraming mga target na mayroon ka.

Magdagdag ng mga laro

Kailangan mo ring magdagdag ng ilang mga laro. Pumunta sa localhost / admin / at mag-click sa magdagdag ng laro

Kailangan mong magdagdag ng isang pangalan para sa laro, isang paglalarawan, mga min at max na manlalaro kung anong uri ng laro, pati na rin kung gaano kahirap ang laro sa pagitan ng 1 hanggang 5. At kung paano ang laro, kaya para sa mabilis na laro ay idinagdag mo kung gaano karaming mga hit (halimbawa 30) para sa quickdraw kung gaano karaming mga bilog (halimbawa 8) at para sa oras kung gaano katagal sila maglaro (halimbawa 60 para sa isang minuto)

Simulan ang laro

Kapag pinapagana mo ang laro ay gagawin nito ang target na pagsubok. Kaya't kailangang maging mga target bago mo simulan ang pangunahing system. Kung pumasa ang lahat sa pagsubok maaari mong gamitin ang system, ngunit kung hindi nila ito hindi mo ito magagamit. Susubukan nitong makipag-usap hanggang sa makuha nila ang tugon.

Good luck

Kaya't tungkol dito, para sa suporta at impormasyon tungkol sa pag-update sa code mangyaring sundin ang aking pahina sa Facebook para sa larong ito, upang mabigyan kita ng mabilis na tugon. Mahahanap mo ang mga link sa itaas dito.

Inirerekumendang: