Tartalomjegyzék:

Arduino lövöldözős játék V3: 4 lépés
Arduino lövöldözős játék V3: 4 lépés

Videó: Arduino lövöldözős játék V3: 4 lépés

Videó: Arduino lövöldözős játék V3: 4 lépés
Videó: How To Make Arduino Bluetooth Controlled Car - At Home 2024, November
Anonim
Image
Image
Arduino lövöldözős játék V3
Arduino lövöldözős játék V3
Arduino lövöldözős játék V3
Arduino lövöldözős játék V3
Arduino lövöldözős játék V3
Arduino lövöldözős játék V3

Ez a játék az Ön számára, akik airsoft vagy co2 segítségével lőnek célpontokra. Ez egy játék.

A játékkal és a támogatással kapcsolatos legfrissebb információkért:

www.facebook.com/arduinoshooting/

A játékról szóló blogoldalamhoz:

shootinggameblog.wordpress.com

A játék kódjai:

github.com/shootinggame82/Shooting-game-v3

A lövöldözős játék x vezeték nélküli célpont, minden célpont rendelkezik rezgésérzékelővel, amely érzékeli az ütéskor fellépő rezgést. A vezeték nélküli érzékelők egy Atmega328 chip (Arduino Uno chip), és újratölthető Li-Po akkumulátorral rendelkeznek.

Ennek a játéknak a fő vezérlőjét egy Arduino vezérli, és egy Raspberry Pi -ről soros vezérlésű.

Tehát hogyan működik ez a játék? Nos, ez 3 játékmód:

Gyorsidő: Játssz X kört, és olyan gyorsan lőhetsz, amennyit csak tudsz.

Időmód: Lőj annyi célt, amennyit csak tudsz X másodperc alatt.

Rapidfire: Készítsen X felvételeket a leggyorsabb időben.

A rendszer az NRF24L01 távadókat biztosítja, hogy jó távolságra legyen a fő vezérlőtől. 2,6 GHz -en működnek (ugyanaz, mint a WiFi)

Korábbi projektjeim során Piezo -t használtam a rezgéshez, de most a rezgésérzékelő kapcsolót használják. De továbbra is használhatja a Piezo -t, ha elkészítette a játék régi verzióját.

A játék egy Raspberry Pi 7 -os érintőképernyővel rendelkezik, amely a játékot irányító webrendszert tartja. A terminálnyomtató kinyomtatja az eredményeket.

Kellékek

Adók esetén:

  • X Atmega328 Arduino rendszerbetöltővel (attól függően, hogy hány célt használ)
  • X Rezgésérzékelő kapcsoló
  • X Kék LED
  • X Zöld LED
  • X Vörös LED
  • X 3,7 V-os Li-Po akkumulátor
  • X FC-75 Li-Po töltő modul (vagy egy másik modell)
  • X 100 uF kondenzátor
  • X Házak az érzékelőkhöz
  • X LD1117V33 (biztonságos 3,3 V -ot biztosít az adó számára)
  • X NRF24L01 modulok
  • X x 3 220 Ohm ellenállás (3 szükséges egy célhoz)
  • X 16 MHz -es kristály
  • X x 2 nem tisztított kondenzátorok 22 pF (2 szükséges egy célhoz)

A fő Arduino esetében:

  • 1 Arduino (Nano vagy Uno ajánlott, USB kell)
  • 1 NRF24L01 modul
  • 1 10 uF kondenzátor

A málna Pi esetében:

  • Raspberry Pi (én 3B -t használtam)
  • 7 "érintőképernyő
  • ATXRaspi (opcionális, de jó bekapcsológomb -modul)
  • RTCRaspi (opcionális, de jó RTC modul az idő és a dátum megőrzésére)
  • Terminál nyomtató (opcionális, de szükséges a nyomtatáshoz)
  • Vonalkód -leolvasó (USB -verzió, amely billentyűzetként működik, opcionális)
  • Jó 5 V -os tápellátás (egy régi 12 V -os USB -t használtam, 2,5 A tápellátással)

Más dolog:

  • 12V tápellátás (van egy 12 Ah -nál)
  • Hálózati aljzat (megkönnyíti a hálózathoz való csatlakozást)
  • Kábelek

Lépés: A vezeték nélküli érzékelők

A vezeték nélküli érzékelők
A vezeték nélküli érzékelők
A vezeték nélküli érzékelők
A vezeték nélküli érzékelők
A vezeték nélküli érzékelők
A vezeték nélküli érzékelők

Kezdjük az érzékelők gyártásával. Ehhez a játékhoz 4 érzékelőt használok. De könnyen hozzáadhat több érzékelőt. Az érzékelők 4 számjegyű kóddal kommunikálnak, amikor a fő rendszer elküldi a kódot, és milyen funkcióval világít a megfelelő kódú érzékelő, és készen áll a célra. A kék fény tájékoztat, hogy ezt a célt akarod elérni.

Van egy zöld és egy piros led is. A zöld mindig világít, jelezve, hogy az érzékelő be van kapcsolva. A piros csak akkor világít, ha az akkumulátor töltöttsége alacsonyabb, mint 3,1 V (a chip beépített funkcióját használja, hogy kiszámítsa, mennyi van az akkumulátorban.

A rezgésérzékelő csatlakoztatva van az analóg csaphoz, és leolvassa annak értékét. Amikor az érték süllyed, az érzékelő rezgést érzékel, és itt regisztráljuk a találatot.

A célpontnak biztonsági funkciója van, amely esetben az X másodperc alatt nem üt (alapértelmezés szerint 15 másodperc), vagy ha az átvitel nem végezhető el, akkor visszatér a kiindulási helyzetbe.

Nem fogom elmagyarázni, hogyan fog vezetéket kötni, ellenőrizze az elektromos lapot, hogy megtudja, hogyan fogja ezt megtenni. Az egyetlen dolog, ami nincs rajta, az akkumulátor, a hálózati kapcsoló és a töltő. Ezt rajtad múlik, hogyan akarod.

FONTOS Az NRF24L+ modulról:

Fájdalom lehet… stabilizálni őket, jó erővel és körülötte lévő elszigeteltséggel kombinálva, és a kódot, amellyel működésbe hozza őket. Számomra a 10 uF kondenzátor stabil és jó kapcsolatot biztosít, de először próbálja meg, ha szüksége van például 100 uF kondenzátorra. Csavarja be őket először műanyag fóliával, majd alumínium fóliával, hogy megvédje őket a zavarástól

Szintén a kódban, az adatsebességre nincs szüksége 250 Kb -nál, így nem lesz probléma. De a PA: myRadio.setPALevel (RF24_PA_MIN);

A kódban, amelyet MIN -re állítottam (ez a teszt alatt van), ez a legalacsonyabb, és nem fog annyi energiát fogyasztani, de a tartomány nem lesz olyan hosszú. Ha stabil és jó teljesítményt kapsz, felmehet az RF24_PA_MAX -ra, hogy megszerezze a leghosszabb hatótávolságot, DE ehhez GOOOOOD stabil áramra van szükségük. Próbálja ki az ALACSONY ÉS MAGAS (csak a MAX szöveg módosítása) módot is, hogy megtudja, jó -e a kommunikáció. Ezenkívül jó hatótávolságot ér el a LOW és a HIGH között, hacsak nem lesz mesterlövész

Tartsa az adókat is legalább egy méter távolságra egymástól, mert a bezárás rossz jelzést okozhat

Tesztelje a kommunikációt néhány ping példával az NRF24 könyvtárban (link a GitHubon)

A kódban be kell állítania az adott cél egyedi azonosító számát:

int targID = 3401; // Ez a célazonosító

int sendID = 2401; // Ez a válasz azonosítója

Három DEFINE funkció is rendelkezésre áll:

#define DEBUG

#define AKKUMULÁTOR

#define SHAKE // HA A RÁZÁS KAPCSOLÓT A RÉGI PIEZO HELYETT HASZNÁLJA

DEBUG:

A teszt során ezt jó definiálni. De amikor elérhetővé teszi őket, ne aktiválja.

AKKUMULÁTOR:

Ha nem akar akkumulátor -ellenőrzőt használni a célpontokhoz, el kell távolítania ezt a definíciót.

RÁZ:

Ha felépítette a régi verziómat, akkor piezo érzékelői vannak, majd távolítsa el ezt, hogy megfelelő kódot kapjon.

ATMEGA328 Chip

Arduino nano helyett úgy döntöttem, hogy ATMEGA328 chipet használok (Uno rendszerbetöltővel), egyszerűen programozhatók, csak távolítsa el a chipet az Arduino Uno -ból, és adja hozzá ezt a chipet és töltse fel a kódot. Ellenőrizze az elektromos sémát a célok felépítéséről.

A kód

A kódot PlatformIO -val írtam Arduino IDE helyett. Ez egy jobb programozható szoftver. Tehát a kód egy kicsit más. Javaslom inkább ezt a szoftvert használni.

A cél- és adó doboz

Csatlakoztattam az érzékelőt és a kék LED -et a céltárgyra, és egy 3, 5 mm -es phono kábellel 2 m -en keresztül csatlakoztatom az adó dobozába, amely az atmega chipet, az akkumulátortöltőt és a zöld és piros LED -et tartja. Ez azért van, hogy megvédje az acélgolyókkal való ütéstől.

2. lépés: A játékvezérlő

A játékvezérlő
A játékvezérlő
A játékvezérlő
A játékvezérlő
A játékvezérlő
A játékvezérlő
A játékvezérlő
A játékvezérlő

A következő dolog, amit meg kell tennünk, hogy elkészítjük az érzékelők vezérlőjét. Ez egy Arduino, amely NRF24L01 modult használ az érzékelőkkel való kommunikációhoz. Semmi más. Az Arduino ezután USB -vel csatlakozik a málna pi -hez, hogy működjön.

Ez így fog működni. A soros segítségével tudja, mit kell tennie. A pi soros parancsokat küld. Először a beállítás során kiküldi, hogy hány célpontot adott hozzá, és a célok azonosító számát. Ezután elvégzi a tesztfunkciót, és tájékoztatja a málna pi -t, ha kommunikálnak egymással.

Amikor a játékot játssza, a pi -ről átküldi, hogy milyen típusú játékot és hány kört/találatot kell használni. Ez az.

Lehetőség van az NRF24L01 modulok használatára a málna pi -ban, de számomra az Arduino a jobb megoldás, soha nem használom őket málnában, így nem tudom, hogy hosszú távon mennyire működnek

Van egy tápegység, amely 5 V -ot használ a helyes, stabil tápellátás biztosítására az adók számára. Ön is használhatja őket Arduino (lásd a képet), a neve Socket Adapter Module Board

Amikor játszol, a célpontok véletlenszerűen aktiválódnak egyenként. Amikor az egyiket eltalálják, egy másik aktiválódik.

A teszt során aktiválhatja a #DEFINE DEBUG funkciót, hogy lássa, hogyan működik, de nem, ha a pi számítógépen használja, akkor nem fog működni.

Töltse le a kódot a GitHub oldalon.

3. lépés: Raspberry Pi

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

Elérkeztünk a Raspberry Pi -hez.

Hozzáadtam néhány extra funkciót, hogy legyen bekapcsológombom. Az ATXRaspi 3 nagyszerű modul, egy gombbal be-, kikapcsolhatja és újraindíthatja a pi -t. Szintén RTCRaspi, hogy az időt és a dátumot a pi -n tartsák. Lehetővé tette a hálózati kábel csatlakoztatását is, mivel frissítenem kell a rendszert. Megtalálja őket a Lowpowerlab oldalon

A termálnyomtató megtalálható a sparkfun -on, a vonalkód -olvasó pedig az amazonon.

A Pi számítógép kioszk módban fut, így a böngésző induláskor megnyílik. Először is rendelkeznie kell egy PHP 7 és mysql webes szerverrel a pi számítógépen. (Ehhez sok útmutató található az interneten)

FIGYELEM: ha málna pi -vel ellátott, Bluetooth -kapcsolattal rendelkező hőnyomtatót szeretne használni, először tiltsa le ezt

A python szkriptnek szüksége van a pyserialra, és telepítheti: sudo apt-get install python-serial

A mysql működéséhez telepítse a következőket:

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

suso apt-get install pymysql

Most irányíthatja az Arduino -t a soros segítségével, és frissítheti a mysql adatbázist is.

A következő lépés a python szkript létrehozása a mysql -hez való csatlakozáshoz.

Mindhárom python szkriptben módosítsa a kapcsolatot a mysql adatbázisával.

A következő lépés a python parancsfájl indítása.

Három python script létezik. A game.py a legfontosabb, az egyik rendelkezik a játék funkcióval.print.py erre csak akkor van szükség, ha terminálnyomtatót fog használni a nyomtatáshoz. vonalkódolvasót fog használni.

A szerkesztés automatikus indításához:

sudo nano /etc/rc.local

és írja be a következőt alul a 0 -s kilépés előtt:

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

Kérjük, változtassa meg a python szkript megfelelő helyét, és ne felejtse el a & jelet a végén

Most létre kell hoznunk egy kioszk módot a webböngészőhöz, először távolítsuk el a kurzort:

sudo apt-get install unclutter

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

most ebben a fájlban keresse meg és kommentálja:

@xscreensaver -no -splash # a képernyővédő letiltásához kommentálja ezt a sort

Az alábbiakban hozzá kell tenni:

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

A következő lépés az összes rendszerindítási szöveg eltávolításához és a saját indítási képernyő hozzáadásához itt egy gyors útmutató:

sudo nano /boot/config.txt és alul adddisable_splash = 1

Szöveges üzenet eltávolítása a splash kép alatt:

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

Keresse meg és távolítsa el (vagy kommentálja):

message_sprite = Sprite (); message_sprite. SetPosition (képernyő szélessége * 0,1, képernyőmagasság * 0,9, 10000);

és:

my_image = Image. Text (szöveg, 1, 1, 1); message_sprite. SetImage (my_image);

Most eltávolítjuk a rendszerindítási üzeneteket:

sudo nano /boot/cmdline.txt

„konzol = tty1” helyett „konzol = tty3”

és a sor végén tegyük hozzá:

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

És cserélje ki a pi splash -t a sajátjával:

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

Most saját egyéni indítóképernyője van a játékhoz. A pi számítógép most készen áll a játék kezelésére. Tehát ugorjon a következő lépésre!

4. lépés: Állítsa be a játékot

Ezen a ponton most létrehozta a játékot.

Először be kell állítania a webbsystem -et. Töltse fel az adatbázist a mysql szerverre. A fájl a include mappában található, és az adatbázis.sql nevet viseli

A következő lépés a konfigurációs fájl szerkesztése, amely a config.php mappanevet tartalmazza. Módosítsa az adatbázis bejelentkezési adatait, hogy a szkript működjön.

A webrendszer többnyelvű, és angol nyelven íródott. Van egy svéd fordítás is. További nyelvek készítéséhez Poedit nevű szoftverre van szükség.

Ha több nyelvet szeretne hozzáadni a webes rendszerhez, szerkesztenie kell az i18n_setup.php fájlt, és hozzá kell adnia a tömbhöz:

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

Az alapértelmezett nyelv megváltoztatásához a 27. sorban is módosítania kell: $ lang = 'en_US'; változtassa meg az en_US nyelvet saját nyelvére.

a nyelvi fájlokat a locales/LANGCODE/LC_MESSAGES/könyvtárba kell helyezni, és a main.mo nevet kell megadni (A langcode módosítása saját nyelvre)

a selectplayers.php fájl billentyűzetének megváltoztatásához nyelvet vált: "en", // en for eng sv sv for swedish layout: 'qwerty', // qwerty for english swedish-qwerty for swedish

A 218 -as és 219 -es vonalon találja őket

Az elérhető nyelvek a mappában találhatók: eszközök/js/billentyűzet/nyelvek és elrendezések az eszközök/js/billentyűzet/elrendezések között, és a megfelelő fájlokat adják hozzá a 118. és 119. sorhoz (cserélje le az ott talált nyelvet)

Célok hozzáadása

Célok hozzáadásához lépjen a localhost/ admin/ oldalra, és kattintson a Célok hozzáadása lehetőségre.

Hozzá kell adnia a cél nevét és az egyedi célazonosítót, valamint el kell küldenie az azonosítót, és hozzá kell adnia annyi célpontot, amennyi van.

Játékok hozzáadása

Néhány játékot is hozzá kell adnia. Lépjen a localhost/ admin/ oldalra, és kattintson a játék hozzáadása gombra

Hozzá kell adnia a játék nevét, leírását, a min és a maximális játékosok típusát, valamint azt, hogy milyen nehéz a játék 1 és 5 között. És hogy milyen a játék, tehát a rapidfire játékhoz hány találatot kell hozzáadnia (30. példa) a gyorshúzáshoz hány kört (például 8) és időzített időtartamot kell játszani (például 60 percet)

Indítsa el a játékot

A játék bekapcsolásakor elvégzi a cél tesztelését. Tehát a célokat be kell állítani a fő rendszer elindítása előtt. Ha minden megfelelt a teszten, akkor használhatja a rendszert, de ha nem, akkor nem használhatja. Addig próbál kommunikálni, amíg választ nem kapnak.

Sok szerencsét

Nos, ennyi, ha támogatást és információt szeretne kapni a kód frissítéséről, kövesse a játék Facebook oldalamat, hogy gyorsan válaszolni tudjak. A fenti linkeket itt találja.

Ajánlott: