Obsah:

Střílečka Arduino V3: 4 kroky
Střílečka Arduino V3: 4 kroky

Video: Střílečka Arduino V3: 4 kroky

Video: Střílečka Arduino V3: 4 kroky
Video: Ovládání 32 servomotorů pomocí PCA9685 a Arduino: V3 2024, Červenec
Anonim
Image
Image
Střílečka Arduino V3
Střílečka Arduino V3
Střílečka Arduino V3
Střílečka Arduino V3
Střílečka Arduino V3
Střílečka Arduino V3

Tato hra je pro vás, kdo používá airsoft nebo co2 ke střelbě na cíle. Je to hra.

Aktuální informace o hře a podpoře:

www.facebook.com/arduinoshooting/

Moje blogová stránka o hře:

shootinggameblog.wordpress.com

Pro kódy o hře:

github.com/shootinggame82/Shooting-game-v3

Střílečka je x cílů, které jsou bezdrátové, každý cíl má vibrační senzor, který snímá vibrace, které se dostanou při zásahu. Bezdrátové senzory jsou čip Atmega328 (čip Arduino Uno) a mají dobíjecí Li-Po baterii.

Hlavní ovladač pro tuto hru je řízen Arduinem a je sériově ovládán z Raspberry Pi.

Jak tedy tato hra funguje? Jsou to 3 herní režimy:

Quicktime: Hrajte X kol a střílejte tak rychle, jak můžete na každý cíl.

Časový režim: Střílejte co nejvíce cílů na X sekund.

Rapidfire: Pořiďte X snímků v nejrychlejším čase.

Systém používá vysílače NRF24L01, abychom získali dobrou vzdálenost od hlavního ovladače. Pracují na frekvenci 2,6 GHz (stejné jako WiFi běží)

V mých minulých projektech jsem používal Piezo pro vibrace, ale nyní se používá spínač vibračního senzoru, ale Piezo můžete stále používat, pokud jste vytvořili moji starou verzi této hry.

Tato hra má 7 dotykový displej Raspberry Pi, který drží webový systém, který hru ovládáte. Výsledky vám vytiskne terminálová tiskárna.

Zásoby

Pro vysílače:

  • X Atmega328 s bootloaderem Arduino (v závislosti na počtu cílů)
  • X Přepínač snímače vibrací
  • X modrá LED
  • X Zelená LED
  • X červená LED
  • X 3,7 V Li-Po baterie
  • X FC-75 Li-Po nabíjecí modul (nebo jiný model)
  • X 100 uF kondenzátor
  • X Pouzdra pro senzory
  • X LD1117V33 (zajišťuje bezpečný vysílač 3,3 V)
  • X Moduly NRF24L01
  • X x 3 220 ohmové odpory (pro jeden cíl jsou potřeba 3)
  • X 16 MHz Krystal
  • X x 2 neprobádané kondenzátory 22 pF (pro jeden cíl jsou potřeba 2)

Pro hlavní Arduino:

  • 1 Arduino (doporučuje se Nano nebo Uno, potřebujete USB)
  • 1 modul NRF24L01
  • 1 10 uF kondenzátor

Pro malinový Pi:

  • Raspberry Pi (použil jsem 3B)
  • 7 "dotykový displej
  • ATXRaspi (volitelný, ale dobrý modul tlačítka napájení)
  • RTCRaspi (volitelný, ale dobrý modul RTC pro uchování času a data)
  • Terminálová tiskárna (volitelná, ale potřebná pro tisk)
  • Skener čárových kódů (verze USB, která funguje jako klávesnice, volitelně)
  • Dobrý 5V výkon (použil jsem staré 12v USB s 2,5 A napájením)

Jiné věci:

  • Napájení 12 V (jedno mám na 12 Ah)
  • Síťová zásuvka (usnadňuje připojení k síti)
  • Kabely

Krok 1: Bezdrátové senzory

Bezdrátové senzory
Bezdrátové senzory
Bezdrátové senzory
Bezdrátové senzory
Bezdrátové senzory
Bezdrátové senzory

Začněme vyrábět senzory. Pro tuto hru používám 4 senzory. Můžete ale snadno přidat další senzory. Senzory komunikují pomocí čtyřčíselného kódu, když hlavní systém odešle kód, s jakou funkcí se senzor se správným kódem rozsvítí a bude připraven na cíl. Modré světlo má informovat, že je to cíl, na který se chystáte zasáhnout.

Máme také zelenou a červenou LED. Zelená se vždy rozsvítí, aby informovala, že je senzor zapnutý. Červená se rozsvítí, pouze když je baterie nižší než 3,1 V (pomocí vestavěné funkce v čipu vypočítá, kolik je v baterii.

Senzor vibrací je připojen k analogovému kolíku a čte jeho hodnotu. Když hodnota klesá, senzor zaznamenává vibrace a právě tam registrujeme zásah.

Cíl má funkci zabezpečenou proti selhání, pokud nezapadnete za X sekund (výchozí je 15 sekund) nebo pokud přenos nelze provést, vrátí se do výchozí polohy.

Nebudu vysvětlovat, jak budete drátovat, zkontrolujte elektrický list, abyste zjistili, jak to uděláte. Jedna věc, která na něm není, je baterie, vypínač a nabíječka. To je na vás, abyste se rozhodli, jak to chcete.

DŮLEŽITÉ INFORMACE O modulu NRF24L+:

Může to být bolest… aby byly stabilní, v kombinaci s dobrou silou a izolací kolem nich a kódem, který jim umožníte pracovat. Pro mě 10 uF kondenzátor mi poskytne stabilní a dobré připojení, ale zkuste nejprve zapsat třeba 100 uF kondenzátor. Také je zabalte nejprve plastovou fólií a poté hliníkovou fólií, abyste je chránili před rušením

Také v kódu není rychlost přenosu dat větší než 250 Kb, takže to nebude problém. Ale PA: myRadio.setPALevel (RF24_PA_MIN);

V kódu, který jsem nastavil na MIN (This is during test), je nejnižší a nespotřebuje tolik energie, ale dosah nebude tak dlouhý. Pokud k nim máte stabilní a dobrou energii, můžete jít až na RF24_PA_MAX, abyste získali nejdelší dosah, ALE k tomu potřebují stabilní výkon GOOOOOD. Zkuste také NÍZKÝ A VYSOKÝ (změňte pouze MAX text), abyste zjistili, zda se vám daří dobře komunikovat. Rovněž získáte dobrý dosah na NÍZKÉ a VYSOKÉ, pokud nebudete sniperem

Také udržujte vysílače alespoň jeden metr od sebe, zavření může způsobit špatný signál

Otestujte komunikaci s některým příkladem pingu v knihovně NRF24 (odkaz na GitHub)

V kódu musíte nastavit jedinečné identifikační číslo pro tento cíl:

int targID = 3401; // Toto je ID cíle

int sendID = 2401; // Toto je ID odpovědi

K dispozici jsou také 3 DEFINE funkce:

#define DEBUG

#definovat BATERII

#define SHAKE // POKUD SE POUŽÍVÁ SHAKE SWITCH MÍSTO STARÉHO PIEZO

LADIT:

Během testu je dobré to definovat. Když je ale zpřístupníte, neaktivujte je.

BATERIE:

Pokud nechcete mít pro cíle kontrolu baterie, musíte tuto definici odebrat.

OTŘÁST:

Pokud jste vytvořili moji starou verzi, máte piezo senzory, pak je odeberte, abyste pro ně získali správný kód.

Čip ATMEGA328

Namísto Arduino nano jsem se rozhodl použít čip ATMEGA328 (s zavaděčem Uno), jsou snadno programovatelné, stačí odebrat čip z Arduino Uno a přidat tento čip a nahrát kód. Podívejte se na elektrické schéma, jak stavět cíle.

Kód

Napsal jsem kód pomocí PlatformIO místo Arduino IDE. Je to lepší software pro programování. Kód je tedy trochu jiný. Doporučuji místo toho použít tento software.

Box terče a vysílače

Připojil jsem senzor a modrou diodu na cíl a pomocí 3,5mm phono kabelu na 2 m ho spojil dohromady v krabici vysílače, která drží čip atmega, nabíječku baterií a zelenou a červenou diodu. To je proto, aby bylo chráněno před zasažením ocelovými kulkami.

Krok 2: Herní ovladač

Herní ovladač
Herní ovladač
Herní ovladač
Herní ovladač
Herní ovladač
Herní ovladač
Herní ovladač
Herní ovladač

Další věc, kterou musíme udělat, je vytvořit ovladač pro senzory. Je to Arduino, které ke komunikaci se senzory využívá modul NRF24L01. Nic jiného. Arduino je pak připojeno pomocí USB v Raspberry Pi, aby fungovalo.

Takhle to bude fungovat. Pomocí sériového čísla ví, co má dělat. Pi odešle sériové příkazy. Nejprve během instalace odešle, kolik cílů jste přidali a identifikační čísla cílů. Poté provede testovací funkci a informuje malinový pi, pokud spolu komunikují.

Když hrajete hru, odešle vám z pi jaký typ hry a kolik kol/zásahů použijete. A je to.

V Raspberry Pi je možné použít moduly NRF24L01, ale pro mě je Arduino lepší volbou, protože je nikdy nepoužívám v malinách, takže nevím, jak dobře fungují dlouhodobě

Existuje napájecí modul, který pomocí 5 V zajišťuje správné stabilní napájení vysílačů. Můžete je použít s sebou Arduino (viz obrázek) název je Socket Adapter Module Board

Když budete hrát, cíle budou náhodně aktivovány jeden po druhém. Když je zasažen jeden, aktivuje se další.

Během testu můžete mít aktivovaný #DEFINE DEBUG, abyste viděli, jak to funguje, ale ne, když to používáte v počítači pi, pak to nebude fungovat.

Stáhněte si kód na stránce GitHub.

Krok 3: Raspberry Pi

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

Nyní jsme se dostali k Raspberry Pi.

Přidal jsem několik dalších funkcí, abych mohl mít tlačítko napájení. ATXRaspi 3 je skvělý modul, který můžete zapnout, vypnout a restartovat pi pomocí tlačítka. Také RTCRaspi pro udržení času a data na pí. Také to umožnilo jednoduše zapojit síťový kabel, protože potřebuji provést nějaké aktualizace v systému. Najdete je na Lowpowerlab

Termální tiskárna, kterou najdete na Sparkfunu a čtečka čárových kódů je k dispozici na Amazonu.

Počítač Pi běží v režimu kiosku, takže se prohlížeč otevře při startu. Nejprve musíte mít na počítači pi webový server s PHP 7 a mysql. (Na to je na webu spousta průvodců)

UPOZORNĚNÍ: Pokud budete používat termální tiskárnu s malinovým pi, která má vestavěný bluetooth, musíte ji nejprve deaktivovat

Skript python potřebuje pyserial a nainstalujete jej: sudo apt-get install python-serial

Aby mysql fungoval, nainstalujte následující:

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

suso apt-get install pymysql

Nyní můžete ovládat svůj Arduino prostřednictvím sériového připojení a také aktualizovat databázi mysql.

Dalším krokem je vytvoření skriptu pythonu pro připojení k mysql.

Ve všech třech skriptech pythonu změňte připojení k vaší databázi mysql.

Dalším krokem je spuštění skriptu pythonu na začátku.

Existují tři python script.game.py je nejdůležitější ze všech, z nichž jeden má funkci hry.print.py to je potřeba pouze v případě, že k tisku budete používat termální tiskárnu.ean.py je potřeba pouze pokud jste bude používat skener čárových kódů.

Abych je spustil automaticky, upravím:

sudo nano /etc/rc.local

a dole před ukončením 0 přidejte následující:

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

Změňte prosím správné místo pro skript pythonu a nezapomeňte na konec & podepsat

Nyní musíme pro webový prohlížeč vytvořit kioskový režim, nejprve odeberte kurzor:

sudo apt-get install unclutter

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

nyní v tomto souboru najděte a komentujte:

@xscreensaver -no -splash # zakažte tento řádek a deaktivujte spořič obrazovky

Níže přidáme:

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

Dalším krokem k odstranění všech spouštěcích textů a věcí a přidání vlastní spouštěcí obrazovky je rychlý průvodce:

sudo nano /boot/config.txt a dole adddisable_splash = 1

Odstranit textovou zprávu pod úvodním obrázkem:

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

Najděte a odeberte (nebo okomentujte):

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

a:

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

Nyní odstraníme zaváděcí zprávy:

sudo nano /boot/cmdline.txt

nahradit „console = tty1“za „console = tty3“

a na konec řádku přidejte:

úvodní tichý plymouth.ignore-serial-konzole logo.nologo vt.global_cursor_default = 0

A nahraďte pi splash svým vlastním:

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

Nyní máte svoji vlastní spouštěcí obrazovku vaší hry. Váš počítač pi je nyní připraven zvládnout hru. Přejděte tedy k dalšímu kroku!

Krok 4: Nastavení hry

V tuto chvíli jste hru vytvořili.

Nejprve musíte nastavit webbsystem. Nahrajte databázi na server mysql. Soubor je ve složce includes s názvem database.sql

Dalším krokem je úprava konfiguračního souboru, který najdete v zahrnutém názvu složky config.phpZměňte přihlašovací údaje k databázi, aby skript fungoval.

Webový systém je založen na více jazycích a je napsán v angličtině. K dispozici je překlad do švédštiny. Chcete -li rozšířit jazyk, potřebujete software s názvem Poedit.

Chcete -li do webového systému přidat další jazyk, musíte upravit i18n_setup.php a přidat pole:

return in_array ($ locale, ['en_US', 'sv_SE']); (Řádek 23)

Také pro změnu výchozího jazyka musíte změnit v řádku 27: $ lang = 'en_US'; změňte en_US na váš jazyk.

jazykové soubory musí být umístěny v národních prostředích/LANGCODE/LC_MESSAGES/a musí být pojmenovány main.mo (Změnit langcode na váš jazyk)

pro změnu klávesnice v souboru selectplayers.php změníte jazyk: "en", // en pro angličtinu sv pro švédské rozložení: 'qwerty', // qwerty pro angličtinu swedish-qwerty pro švédštinu

Najdete je na lince 218 a 219

Dostupné jazyky jsou ve složce: 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)

Přidejte cíle

Chcete -li přidat cíle, přejděte na localhost/ admin/ a klikněte na Přidat cíle.

Musíte přidat název cíle a jedinečné ID cíle a odeslat ID, přidat tolik cílů, jaké máte.

Přidejte hry

Musíte také přidat nějaké hry. Přejděte na localhost/ admin/ a klikněte na přidat hru

Musíte přidat název hry, popis, minimální a maximální počet hráčů, jaký typ hry, také jak těžká hra je mezi 1 a 5. A jak hra vypadá, takže pro hru rapidfire přidáte kolik zásahů (příklad 30) pro quickdraw kolik kol (například 8) a pro načasované, jak dlouho budou hrát (například 60 po dobu jedné minuty)

Spustit hru

Když hru zapnete, provede cílové testování. Cíle tedy musí být zapnuty, než spustíte hlavní systém. Pokud test projde všemi, můžete systém použít, ale pokud ne, nemůžete jej použít. Pokusí se komunikovat, dokud nedostanou odpověď.

Hodně štěstí

Tak to je asi vše, pro podporu a informace o aktualizaci v kódu prosím sledujte moji stránku na Facebooku pro tuto hru, abych vám mohl rychle odpovědět. Zde najdete odkazy nahoře.

Doporučuje: