Obsah:

Strieľačka Arduino V3: 4 kroky
Strieľačka Arduino V3: 4 kroky

Video: Strieľačka Arduino V3: 4 kroky

Video: Strieľačka Arduino V3: 4 kroky
Video: ТОП 3 танка wot blitz для поднятия процента побед #shorts 2024, November
Anonim
Image
Image
Strieľačka Arduino V3
Strieľačka Arduino V3
Strieľačka Arduino V3
Strieľačka Arduino V3
Strieľačka Arduino V3
Strieľačka Arduino V3

Táto hra je pre vás, kto používa airsoft alebo co2 na streľbu na ciele. Je to hra

Aktuálne informácie o hre a podpore:

www.facebook.com/arduinoshooting/

Moja blogová stránka o hre:

shootinggameblog.wordpress.com

Pre kódy o hre:

github.com/shootinggame82/Shooting-game-v3

Strieľačka je x terčov, ktoré sú bezdrôtové. Každý terč má vibračný senzor, ktorý sníma vibrácie, ktoré sa dostanú pri zásahu. Bezdrôtové senzory sú čip Atmega328 (čip Arduino Uno) a majú nabíjaciu batériu Li-Po.

Hlavný ovládač pre túto hru je ovládaný Arduinom a je sériovo ovládaný z Raspberry Pi.

Ako teda táto hra funguje? Sú to tri herné režimy:

Quicktime: Hrajte X kôl a strieľajte tak rýchlo, ako môžete na každý cieľ.

Časový režim: Vystreľte čo najviac cieľov na X sekúnd.

Rapidfire: Nasnímajte X záberov v najrýchlejšom čase.

Systém používa vysielače NRF24L01 na získanie dobrých vzdialeností od hlavného ovládača. Pracujú na frekvencii 2,6 GHz (to isté ako WiFi)

V mojich minulých projektoch som používal Piezo na vibrácie, ale teraz sa používa spínač vibračného senzora. Piezo však môžete stále používať, ak ste vytvorili moju starú verziu tejto hry.

Hra má 7 dotykový displej Raspberry Pi, ktorý drží webový systém, pomocou ktorého môžete hru ovládať. Výsledky vytlačí terminálová tlačiareň.

Zásoby

Pre vysielače:

  • X Atmega328 s bootloaderom Arduino (v závislosti od počtu cieľov)
  • X Spínač snímača vibrácií
  • X modrá LED
  • X Zelená LED
  • X červená LED
  • X 3,7 V Li-Po batéria
  • X FC-75 Li-Po nabíjací modul (alebo iný model)
  • X 100 uF kondenzátor
  • X Puzdrá na senzory
  • X LD1117V33 (robí bezpečný vysielač 3,3 V)
  • X Moduly NRF24L01
  • X x 3 220 ohmové odpory (na jeden cieľ sú potrebné 3)
  • X 16 MHz kryštál
  • X x 2 nepreskúmané kondenzátory 22 pF (na jeden cieľ sú potrebné 2)

Pre hlavné Arduino:

  • 1 Arduino (odporúča sa Nano alebo Uno, musí mať USB)
  • 1 modul NRF24L01
  • 1 10 uF kondenzátor

Pre malinový Pi:

  • Raspberry Pi (použil som 3B)
  • 7 "dotykový displej
  • ATXRaspi (voliteľné, ale dobrý modul tlačidla napájania)
  • RTCRaspi (voliteľný, ale dobrý modul RTC na uchovávanie času a dátumu)
  • Terminálová tlačiareň (voliteľné, ale potrebné na tlač)
  • Skener čiarových kódov (verzia USB, ktorá funguje ako klávesnica, voliteľné)
  • Dobrý výkon 5 V (použil som staré 12 V USB s výkonom 2,5 A)

Ostatné veci:

  • Napájanie 12 V (jedno mám pri 12 Ah)
  • Sieťová zásuvka (uľahčuje pripojenie k sieti)
  • Káble

Krok 1: Bezdrôtové senzory

Bezdrôtové senzory
Bezdrôtové senzory
Bezdrôtové senzory
Bezdrôtové senzory
Bezdrôtové senzory
Bezdrôtové senzory

Začnime s výrobou senzorov. Na túto hru používam 4 senzory. Môžete však pridať ďalšie senzory. Senzory komunikujú pomocou 4 -číselného kódu, keď hlavný systém odošle kód, pomocou ktorej funkcie sa senzor so správnym kódom rozsvieti a bude pripravený na cieľ. Modré svetlo má informovať, že je to cieľ, na ktorý sa chystáte zasiahnuť.

Máme tiež zelenú a červenú LED. Zelená sa vždy rozsvieti, aby informovala, že senzor je zapnutý. Červená sa rozsvieti iba vtedy, keď je batéria menej ako 3,1 V (na základe výpočtu vstavanej funkcie v čipu vypočíta, koľko je v batérii k dispozícii.

Senzor vibrácií je pripojený k analógovému kolíku a číta jeho hodnotu. Keď hodnota klesá, senzor zaznamená vibrácie a práve tam zaregistrujeme prístup.

Cieľ má funkciu zabezpečenú proti zlyhaniu, ktorá zapríčiní, že netrafíte za X sekúnd (predvolené je 15 sekúnd) alebo ak sa prenos nedá vykonať, vrátia sa do východiskovej polohy.

Nebudem vysvetľovať, ako sa chystáte zapojiť, skontrolujte elektrický list, aby ste zistili, ako to urobíte. Jedna vec, ktorá na ňom nie je, je batéria, vypínač a nabíjačka. Je na vás, aby ste sa rozhodli, ako to chcete.

DÔLEŽITÝ O Module NRF24L+:

Môže to byť bolesť v … dosiahnuť ich stabilitu v kombinácii s dobrou silou a izoláciou okolo nich a kódom, s ktorým ich prinútite pracovať. Mne 10 uF kondenzátor poskytne stabilné a dobré pripojenie, ale najskôr vyskúšajte, či potrebujete napríklad 100 uF kondenzátor. Tiež ich zabaľte najskôr plastovou fóliou a potom hliníkovou fóliou, aby ste ich chránili pred rušením

V kóde tiež nie je potrebný dátový tok viac ako 250 kB, takže s tým nebude problém. Ale PA: myRadio.setPALevel (RF24_PA_MIN);

V kóde, ktorý som nastavil na MIN (Toto je počas testu), je najnižší a nespotrebuje toľko energie, ale dosah nebude taký dlhý. Ak k nim máte stabilný a dobrý výkon, môžete ísť až na RF24_PA_MAX, aby ste získali najdlhší dosah, ALE na to potrebujú stabilný výkon GOOOOOD. Skúste tiež NÍZKE A VYSOKÉ (Zmeňte iba MAX text), aby ste zistili, či sa vám dobre komunikuje. Tiež budete mať dobrý dosah na NÍZKU a VYSOKÚ, pokiaľ nebudete sniperom

Udržujte vysielače najmenej jeden meter od seba, pretože pri zatvorení môže dôjsť k zlému signálu

Vyskúšajte komunikáciu pomocou nejakého príkladu ping v knižnici NRF24 (odkaz na GitHub)

V kóde musíte nastaviť jedinečné identifikačné číslo pre tento cieľ:

int targID = 3401; // Toto je ID cieľa

int sendID = 2401; // Toto je ID odpovede

K dispozícii sú tiež 3 DEFINE funkcie:

#define DEBUG

#definujte BATÉRIU

#define SHAKE // AK SA POUŽÍVA SHAKE SWITCH NAMIESTO STARÉHO PIEZA

DEBUG:

Počas testu je dobré to definovať. Keď ich však sprístupníte, neaktivujte ich.

BATÉRIA:

Ak nechcete mať pre ciele kontrolu batérie, musíte túto definíciu odstrániť.

TRIASŤ:

Ak ste vytvorili moju starú verziu, máte piezo senzory, odstráňte ich a získajte k nim správny kód.

Čip ATMEGA328

Namiesto Arduino nano som sa rozhodol použiť čip ATMEGA328 (s bootloaderom Uno), programovanie je jednoduché, stačí odstrániť čip z Arduino Uno a pridať tento čip a nahrať kód. Pozrite sa na elektrickú schému, ako stavať ciele.

Kód

Kód som napísal s PlatformIO namiesto Arduino IDE. Je to lepší softvér na programovanie. Kód je teda trochu iný. Odporúčam namiesto toho použiť tento softvér.

Cieľový a vysielačový box

Na cieľ som pripevnil snímač a modrú diódu a pomocou 3,5 mm phono kábla na 2 m ho spojím dohromady v skrini vysielača, v ktorej je umiestnený čip atmega, nabíjačka batérií a zelená a červená dióda. To je tak, aby bol chránený pred nárazom do oceľových striel.

Krok 2: Ovládač hry

Herný ovládač
Herný ovládač
Herný ovládač
Herný ovládač
Herný ovládač
Herný ovládač
Herný ovládač
Herný ovládač

Ďalšia vec, ktorú musíme urobiť, je vytvoriť ovládač pre senzory. Je to Arduino, ktoré na komunikáciu so senzormi používa modul NRF24L01. Nič viac. Arduino je potom do Raspberry Pi zapojené pomocou USB a funguje.

Takto to bude fungovať. Používa sériové číslo, aby vedelo, čo má robiť. Pi vyšle sériové príkazy. Najprv počas nastavenia odošle, koľko cieľov ste pridali, a identifikačné čísla cieľov. Potom vykoná testovaciu funkciu a informuje malinový pi, ak spolu komunikujú.

Keď budete hrať hru, odošle vám z pi aký typ hry a koľko kôl/zásahov použijete. To je všetko.

Moduly NRF24L01 je možné použiť v malinovom pi, ale pre mňa je Arduino lepšou možnosťou, pretože ich nikdy nepoužívam v malinách, takže neviem, ako dobre fungujú z dlhodobého hľadiska

Existuje napájací modul, ktorý používa 5 V na zaistenie správneho stabilného napájania vysielačov. Môžete ich použiť so sebou Arduino (pozri obrázok), názov je Socket Adapter Module Board

Keď budete hrať, ciele budú náhodne aktivované jeden po druhom. Keď je zasiahnutý jeden, aktivuje sa ďalší.

Počas testu môžete mať aktivovaný #DEFINE DEBUG, aby ste videli, ako funguje, ale nie keď ho použijete v počítači pi, potom to nebude fungovať.

Stiahnite si kód na stránku GitHub.

Krok 3: Raspberry Pi

Malinový koláč
Malinový koláč
Malinový koláč
Malinový koláč
Malinový koláč
Malinový koláč
Malinový koláč
Malinový koláč

Teraz sme sa dostali k Raspberry Pi.

Pridal som niekoľko ďalších funkcií, aby som mohol mať tlačidlo napájania. ATXRaspi 3 je skvelý modul, ktorý môžete zapnúť, vypnúť a reštartovať pi pomocou tlačidla. Tiež RTCRaspi, aby bol čas a dátum na pí. Tiež mi umožnilo jednoducho zapojiť sieťový kábel, pretože musím v systéme vykonať niekoľko aktualizácií. Nájdete ich na Lowpowerlab

Termálna tlačiareň, ktorú nájdete na sparkfun a čítačka čiarových kódov je k dispozícii na amazone.

Počítač Pi beží v kioskovom režime, takže prehliadač sa otvorí na začiatku. Najprv musíte mať na počítači pi webový server s PHP 7 a mysql. (Na tento účel je na internete veľa sprievodcov.)

UPOZORNENIE: Ak budete používať termálnu tlačiareň s malinovým pi, ktorá má vstavaný bluetooth, musíte ju najskôr vypnúť

Skript python potrebuje pyserial a nainštalujete ho: sudo apt-get install python-serial

Aby mysql fungoval, nainštalujte nasledujúce:

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

suso apt-get install pymysql

Teraz môžete ovládať svoje Arduino cez sériové číslo a tiež aktualizovať databázu mysql.

Ďalším krokom je vytvorenie skriptu pythonu na pripojenie k mysql.

Vo všetkých troch skriptoch pythonu zmeňte pripojenie k vašej databáze mysql.

Ďalším krokom je spustenie skriptu python na začiatku.

Existujú tri python script.game.py je zo všetkých najdôležitejší. Jeden z nich má hernú funkciu.print.py, je to potrebné iba vtedy, ak na tlač budete používať termálnu tlačiareň.ean.py je potrebný iba vtedy, ak ste použijete skener čiarových kódov.

Aby sa mohli automaticky spustiť, upravím:

sudo nano /etc/rc.local

a v spodnej časti pred výjazdom 0 pridajte nasledujúce:

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

Zmeňte prosím na správne miesto pre svoj skript python a nezabudnite na & podpísať na konci

Teraz musíme pre webový prehliadač vytvoriť kioskový režim, najskôr odstráňte kurzor:

sudo apt-get install unclutter

sudo nano/etc/xdg/lxsession/LXDE-pi/automatické spustenie

teraz v tomto súbore nájdite a komentujte:

@xscreensaver -no -splash # komentujte tento riadok a deaktivujte šetrič obrazovky

K tomu sa pridáva:

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

Ďalším krokom k odstráneniu všetkých zavádzacích textov a vecí a pridaniu vlastnej bootovacej obrazovky je rýchly sprievodca:

sudo nano /boot/config.txt a v spodnej časti adddisable_splash = 1

Odstrániť textovú správu pod úvodným obrázkom:

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

Nájdite a odstráňte (alebo komentujte):

message_sprite = Sprite (); message_sprite. SetPosition (šírka obrazovky * 0,1, výška obrazovky * 0,9, 10 000);

a:

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

Teraz odstránime bootovacie správy:

sudo nano /boot/cmdline.txt

nahradiť „console = tty1“za „console = tty3“

a na koniec riadku pridajte:

splash ticho plymouth.ignore-serial-konzoly logo.nologo vt.global_cursor_default = 0

A nahraďte pi splash svojim vlastným:

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

Teraz máte k hre vlastnú vlastnú bootovaciu obrazovku. Váš počítač pi je teraz pripravený zvládnuť hru. Prejdite na ďalší krok!

Krok 4: Nastavte hru

V tomto mieste ste teraz vytvorili hru.

Najprv musíte nastaviť webový systém. Odošlite databázu na server mysql. Súbor je v priečinku includes a má názov database.sql

Ďalším krokom je úprava konfiguračného súboru, ktorý nájdete v zahrnutom názve priečinka config.phpZmeňte prihlasovacie údaje do databázy, aby skript fungoval.

Webový systém je založený na viacerých jazykoch a je napísaný v angličtine. K dispozícii je preklad do švédčiny. Na rozšírenie jazyka potrebujete softvér s názvom Poedit.

Ak chcete do webového systému pridať ďalší jazyk, musíte upraviť i18n_setup.php a pridať do poľa:

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

Na zmenu predvoleného jazyka je tiež potrebné zmeniť riadok 27: $ lang = 'en_US'; zmeňte en_US na váš jazyk.

jazykové súbory musia byť umiestnené v miestnych jazykoch/LANGCODE/LC_MESSAGES/a musia mať názov main.mo (Zmeniť jazyk na váš jazyk)

na zmenu klávesnice v súbore selectplayers.php zmeníte jazyk: "en", // en pre angličtinu sv pre švédske rozloženie: 'qwerty', // qwerty pre angličtinu švédsky-qwerty pre švédčinu

Nájdete ich na linkách 218 a 219

Dostupné jazyky sú v priečinku: assets/js/keyboard/languages & layouts are in assets/js/keyboard/layouts and add the correct files to line 118 and 119 (replace the one you find there now)

Pridajte ciele

Ak chcete pridať ciele, choďte na localhost/ admin/ a kliknite na pridať ciele.

Musíte zadať názov cieľa a jedinečné ID cieľa a ID odoslania a pridať toľko cieľov, koľko máte.

Pridajte hry

Musíte tiež pridať niekoľko hier. Choďte na localhost/ admin/ a kliknite na pridať hru

Musíte pridať názov hry, popis, minimálny a maximálny počet hráčov, aký typ hry, ako aj náročná hra od 1 do 5. A aká je hra, takže pre hru s rýchlym ohňom pridajte, koľko zásahov (príklad 30) pre quickdraw, koľko kôl (napríklad 8) a pre časové obdobie, ako dlho sa budú hrať (napríklad 60 pre jednu minútu)

Spustite hru

Keď hru zapnete, vykoná testovanie cieľa. Ciele teda musia byť zapnuté predtým, ako spustíte hlavný systém. Ak všetky prejdú testom, môžete použiť systém, ale ak nie, nemôžete ho použiť. Pokúsi sa komunikovať, kým nedostanú odpoveď.

Veľa štastia

Tak to je asi všetko. Podporu a informácie o aktualizácii kódu nájdete na mojej facebookovej stránke tejto hry, aby som vám mohol rýchlo odpovedať. Tu nájdete odkazy hore.

Odporúča: