Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Czujniki bezprzewodowe
- Krok 2: Kontroler gier
- Krok 3: Raspberry Pi
- Krok 4: Skonfiguruj grę
Wideo: Gra strzelanka Arduino V3: 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-31 10:23
Ta gra jest dla tych, którzy używają airsoftu lub co2 do strzelania do celów. To jest gra.
Aby uzyskać aktualne informacje o grze i wsparciu:
www.facebook.com/arduinoshooting/
Na moim blogu o grze:
shootinggameblog.wordpress.com
Kody dotyczące gry:
github.com/shootinggame82/Shooting-game-v3
Strzelanka to x cele, które są bezprzewodowe, każdy cel ma czujnik wibracji, który wykrywa wibracje, które pojawiają się po trafieniu. Czujniki bezprzewodowe to układ Atmega328 (chip Arduino Uno) i ładują akumulator Li-Po.
Główny kontroler tej gry jest kontrolowany przez Arduino i jest sterowany szeregowo z Raspberry Pi.
Jak działa ta gra? Cóż, to 3 tryby gry:
Quicktime: Zagraj X rund i strzelaj tak szybko, że możesz do każdego celu.
Tryb czasowy: strzelaj do jak największej liczby celów w ciągu X sekund.
Rapidfire: oddaj X strzałów w najszybszym czasie.
System wykorzystuje nadajniki NRF24L01, aby uzyskać dobre odległości od głównego kontrolera. Działają na 2,6 GHz (tak samo jak działa WiFi)
W moich poprzednich projektach używałem Piezo do wibracji, ale teraz używany jest przełącznik czujnika wibracji. Ale nadal możesz używać Piezo, jeśli stworzyłeś moją starą wersję tej gry.
Gra ma 7-calowy ekran dotykowy Raspberry Pi, na którym znajduje się system sieciowy, za pomocą którego kontrolujesz grę. Drukarka terminala drukuje wyniki.
Kieszonkowe dzieci
Dla nadajników:
- X Atmega328 z Arduino Bootloader (w zależności od liczby celów)
- X Przełącznik czujnika wibracji
- X Niebieska dioda LED
- X zielona dioda LED
- X czerwona dioda LED
- X bateria litowo-polimerowa 3.7 v
- X FC-75 Moduł ładowarki Li-Po (lub inny model)
- X 100 uF kondensator
- X Etui na czujniki
- X LD1117V33 (zapewnia bezpieczne 3,3 V do nadajnika)
- X modułów NRF24L01
- Rezystory X x 3 220 Ohm (3 potrzebne do jednego celu)
- X 16 MHz kryształ
- X x 2 nieplorowane kondensatory 22 pF (potrzebne 2 dla jednego celu)
Dla głównego Arduino:
- 1 Arduino (zalecane Nano lub Uno, trzeba mieć USB)
- 1 moduł NRF24L01
- 1 kondensator 10 uF
Dla malin Pi:
- Raspberry Pi (użyłem 3B)
- 7-calowy ekran dotykowy
- ATXRaspi (Opcjonalny, ale dobry moduł przycisku zasilania)
- RTCRaspi (Opcjonalny, ale dobry moduł RTC do przechowywania czasu i daty)
- Drukarka termiczna (opcjonalna, ale potrzebna do drukowania)
- Skaner kodów kreskowych (wersja USB działająca jak klawiatura, opcjonalnie)
- Dobra moc 5V (użyłem starego USB 12V o mocy 2,5 A)
Inne rzeczy:
- Zasilanie 12v (mam jeden przy 12 Ah)
- Gniazdo sieciowe (ułatwia podłączenie do sieci)
- Kable
Krok 1: Czujniki bezprzewodowe
Zacznijmy tworzyć czujniki. Do tej gry używam 4 czujników. Ale możesz łatwo dodać więcej czujników. Czujniki komunikują się z 4-cyfrowym kodem, gdy główny system wyśle kod, z jaką funkcją czujnik z odpowiednim kodem zaświeci się i będzie gotowy do celu. Niebieskie światło ma informować, że to ten cel, który zamierzasz trafić.
Mamy też zieloną i czerwoną diodę. Zielony zawsze zapala się informując, że czujnik jest włączony. Czerwony zaświeci się tylko wtedy, gdy poziom naładowania baterii spadnie poniżej 3.1V (wykorzystuje wbudowaną funkcję chipa, aby obliczyć, ile jest w baterii).
Czujnik drgań jest podłączony do pinu analogowego i odczytuje jego wartość. Gdy wartość spada, czujnik wykrył wibracje i tam rejestrujemy trafienie.
Cel posiada funkcję failsafe, która w przypadku, gdy nie trafisz w ciągu X sekund (domyślnie 15 sekund) lub jeśli transmisja nie może być wykonana w ciągu, wróci do pozycji początkowej.
Nie będę wyjaśniał, jak zamierzasz podłączyć, sprawdź arkusz elektryczny, aby zobaczyć, jak to zrobisz. Jedyne, czego na nim nie ma, to bateria, włącznik zasilania i ładowarka. To od Ciebie zależy, jak chcesz.
WAŻNE O module NRF24L+:
Ustabilizowanie ich w połączeniu z dobrą mocą i izolacją oraz kodem, który sprawi, że będą działać, może być uciążliwe. Dla mnie kondensator 10 uF zapewni mi stabilne i dobre połączenie, ale spróbuj najpierw, jeśli potrzebujesz na przykład kondensatora 100 uF. Owiń je również najpierw folią plastikową, a następnie folią aluminiową, aby chronić je przed ingerencją
Również w kodzie szybkość transmisji danych nie potrzebujesz więcej niż 250 Kb, więc to nie będzie problemem. Ale PA: myRadio.setPALevel(RF24_PA_MIN);
W kodzie ustawiłem na MIN (jest to podczas testu), jest najniższy i nie będzie zużywał tak dużej mocy, ale zasięg nie będzie tak duży. Jeśli masz do nich stabilną i dobrą moc, możesz podnieść się do RF24_PA_MAX, aby uzyskać najdłuższy zasięg, ALE potrzebują do tego DOBREJ stabilnej mocy. Spróbuj także LOW I HIGH (tylko zmiana tekstu MAX), aby sprawdzić, czy komunikacja jest dobra. Otrzymasz również dobry zasięg na NISKIM i WYSOKIM poziomie, chyba że zamierzasz być snajperem
Należy również trzymać nadajniki w odległości co najmniej jednego metra od siebie, ponieważ zamknięcie może spowodować zły sygnał
Przetestuj komunikację za pomocą przykładu ping w bibliotece NRF24 (Link na GitHub)
W kodzie musisz ustawić unikalny numer identyfikacyjny dla tego celu:
int ID_targu = 3401; //To jest identyfikator docelowy
int identyfikator wyślij = 2401; //To jest identyfikator odpowiedzi
Dostępne są również 3 funkcje DEFINE:
#define DEBUGUJ
#define BATERIA
#define SHAKE //JEŚLI PRZEŁĄCZNIK SHAKE JEST UŻYWANY ZAMIAST STAREGO PIEZO
ODPLUSKWIĆ:
Podczas testu dobrze jest mieć zdefiniowane. Ale kiedy je udostępnisz, nie aktywuj go.
BATERIA:
Jeśli nie chcesz mieć sprawdzania baterii dla celów, musisz usunąć tę definicję.
POTRZĄSNĄĆ:
Jeśli zbudowałeś moją starą wersję, masz czujniki piezo, usuń to, aby uzyskać dla nich poprawny kod.
Układ ATMEGA328
Zamiast Arduino nano zdecydowałem się użyć układu ATMEGA328 (z programem ładującym Uno), są one proste do zaprogramowania, wystarczy wyjąć układ z Arduino Uno i dodać ten układ i przesłać kod. Sprawdź schemat elektryczny, jak budować cele.
Kod
Kod napisałem za pomocą PlatformIO zamiast Arduino IDE. To lepsze oprogramowanie do programowania. Więc kod jest trochę inny. Polecam używać tego oprogramowania.
Skrzynka celu i nadajnika
Podłączyłem czujnik i niebieską diodę na tarczy, a kablem phono 3,5 mm na 2 m łączę go razem w puszce nadajnika, w której znajduje się chip atmega, ładowarka i dioda zielona i czerwona. Ma to na celu ochronę przed uderzeniem stalowymi kulami.
Krok 2: Kontroler gier
Następną rzeczą, którą musimy zrobić, to zrobić kontroler dla czujników. To Arduino wykorzystujące moduł NRF24L01 do komunikacji z czujnikami. Nic więcej. Arduino jest następnie połączone z USB w raspberry pi do pracy.
Tak to będzie działać. Używa szeregowego, aby wiedzieć, co robić. Pi wyśle polecenia szeregowe. Najpierw podczas konfiguracji wysyła liczbę dodanych celów oraz numery identyfikacyjne celów. Następnie wykona funkcję testową i poinformuje raspberry pi, czy komunikują się ze sobą.
Kiedy grasz w grę, wyśle od pi, jaki rodzaj gry i ile rund/hitów użyć. Otóż to.
Możliwe jest użycie modułów NRF24L01 w raspberry pi, ale dla mnie Arduino jest lepszą opcją, ponieważ nigdy nie używam ich w raspberry, więc nie wiem, jak dobrze działają na dłuższą metę
Istnieje moduł zasilania, który wykorzystuje napięcie 5 V do prawidłowego, stabilnego zasilania nadajników. Możesz ich używać ze sobą Arduino (patrz zdjęcie) nazwa to płyta modułu adaptera gniazda
Podczas gry cele będą losowo aktywowane jeden po drugim. Kiedy jeden zostanie trafiony, aktywowany zostanie kolejny.
Podczas testu możesz aktywować #DEFINE DEBUG, aby zobaczyć, jak to działa, ale nie wtedy, gdy używasz go na komputerze pi, wtedy nie będzie działać.
Pobierz kod na stronie GitHub.
Krok 3: Raspberry Pi
Doszliśmy teraz do Raspberry Pi.
Dodałem kilka dodatkowych funkcji, więc mogę mieć przycisk zasilania. ATXRaspi 3 to świetny moduł, możesz włączyć, wyłączyć i ponownie uruchomić pi za pomocą przycisku. Również RTCRaspi do przechowywania czasu i daty na pi. Umożliwiło również podłączenie kabla sieciowego na wypadek, gdybym musiał dokonać aktualizacji w systemie. Znajdziesz je na Lowpowerlab
Drukarka termiczna, którą znajdziesz na sparkfun, a czytnik kodów kreskowych jest dostępny na amazon.
Komputer Pi działa w trybie kiosku, więc przeglądarka otworzy się na starcie. Przede wszystkim musisz mieć serwer WWW z PHP 7 i mysql na komputerze pi. (W Internecie jest wiele przewodników na ten temat)
UWAGA: jeśli zamierzasz używać drukarki termicznej z raspberry pi, która ma wbudowany bluetooth, musisz ją najpierw wyłączyć
Skrypt Pythona wymaga pyserial i instalujesz go: sudo apt-get install python-serial
Aby mysql działał, zainstaluj:
sudo apt-get zainstaluj mysql-python sudo apt-get zainstaluj python-mysql.connector
suso apt-get zainstaluj pymysql
Teraz możesz kontrolować Arduino przez port szeregowy, a także aktualizować bazę danych mysql.
Następnym krokiem jest stworzenie skryptu Pythona do połączenia z mysql.
We wszystkich trzech skryptach Pythona zmień połączenie z bazą danych mysql.
Następnym krokiem jest uruchomienie skryptu Pythona na starcie.
Istnieją trzy python script.game.py jest najważniejszy ze wszystkich, ten zawiera funkcję.print.py jest to potrzebne tylko wtedy, gdy zamierzasz używać drukarki termicznej do print.ean.py jest potrzebne tylko wtedy, gdy jesteś zamierzam użyć skanera kodów kreskowych.
Aby automatycznie uruchamiały się, edytuję:
sudo nano /etc/rc.local
i dodaj następujące na dole przed wyjściem 0:
sudo python /home/pi/Gamefiles/game.py &sudo python /home/pi/Gamefiles/print.py &sudo python /home/pi/Gamefiles/ean.py &
Zmień na właściwe miejsce dla swojego skryptu Pythona i nie zapomnij o znaku & na końcu
Teraz musimy zrobić tryb kiosku dla przeglądarki internetowej, najpierw usuń kursor:
sudo apt-get install unclutter
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
teraz w tym pliku znajdź i skomentuj:
@xscreensaver -no-splash # skomentuj ten wiersz, aby wyłączyć wygaszacz ekranu
Poniżej dodaj:
@xset s off @xset -dpms @xset s noblank @chromium-browser --noerrdialogs --force-device-scale-factor=1.25 --kiosk
Następnym krokiem, aby usunąć wszystkie teksty rozruchowe i inne rzeczy, a także dodać własny ekran rozruchowy, oto krótki przewodnik:
sudo nano /boot/config.txt i na dole adddisable_splash=1
Usuń wiadomość tekstową pod obrazem powitalnym:
sudo nano /usr/share/plymouth/themes/pix/pix.script
Znajdź i usuń (lub skomentuj):
wiadomość_sprite = Sprite();wiadomość_sprite. SetPosition(szerokość_ekranu * 0,1, wysokość_ekranu * 0,9, 10000);
oraz:
mój_obraz = Obraz. Tekst(tekst, 1, 1, 1);wiadomość_sprite. UstawObraz(mój_obraz);
Teraz usuwamy komunikaty startowe:
sudo nano /boot/cmdline.txt
zamień „console=tty1” na „console=tty3”
a na końcu linii dodaj:
splash ciche plymouth.ignore-serial-consoles logo.nologo vt.global_cursor_default=0
I zastąp plusk pi swoim własnym:
sudo cp ~/my_splash-p.webp" />
Teraz masz swój własny ekran startowy do swojej gry. Twój komputer pi jest teraz gotowy do obsługi gry. Przejdź do następnego kroku!
Krok 4: Skonfiguruj grę
W tym momencie stworzyłeś grę.
Najpierw musisz skonfigurować webbsystem. Prześlij bazę danych na swój serwer mysql. Plik znajduje się w folderze include i ma nazwę database.sql
Następnym krokiem jest edycja pliku konfiguracyjnego, znajdziesz go w folderze include nazwa config.phpZmień dane logowania do bazy danych, aby skrypt działał.
System sieciowy jest wielojęzyczny i napisany w języku angielskim. Dostępne jest szwedzkie tłumaczenie. Aby uzyskać więcej języka, potrzebujesz oprogramowania o nazwie Poedit.
Aby dodać więcej języka do systemu webowego należy wyedytować i18n_setup.php i dodać w tablicy:
return in_array($locale, ['en_US', 'sv_SE']); (wiersz 23)
Również aby zmienić domyślny język musisz zmienić w linii 27: $lang = 'en_US'; zmień en_US na swój język.
pliki językowe muszą być umieszczone w locales/LANGCODE/LC_MESSAGES/ i mieć nazwę main.mo (Zmień langcode na swój język)
aby zmienić klawiaturę w pliku selectplayers.php zmieniasz język: "en", //en na angielski sv na szwedzki układ: 'qwerty', //qwerty na angielski szwedzki-qwerty na szwedzki
Znajdziesz je na linii 218 i 219
Dostępne języki znajdują się w folderze: assets/js/keyboard/languages & layouts znajdują się w asset/js/keyboard/layouts i dodaj odpowiednie pliki do linii 118 i 119 (zastąp ten, który tam teraz znajdziesz)
Dodaj cele
Aby dodać cele, przejdź do localhost/admin/ i kliknij Dodaj cele.
Musisz dodać nazwę celu i unikalny identyfikator celu oraz identyfikator wysyłania, dodaj tyle celów, ile masz.
Dodaj gry
Musisz także dodać kilka gier. Przejdź do localhost/admin/ i kliknij dodaj grę
Musisz dodać nazwę gry, opis, min i max graczy jaki typ gry, a także jak trudna jest gra od 1 do 5. I jaka jest gra, więc do gry Rapidfire dodaj ile trafień (przykład 30) dla szybkiego losowania ile rund (na przykład 8) i na jaki czas mają grać (na przykład 60 na minutę)
Zacząć gre
Kiedy włączysz grę, wykona ona testy docelowe. Tak więc cele muszą być włączone przed uruchomieniem głównego systemu. Jeśli wszyscy zdadzą test, możesz korzystać z systemu, ale jeśli nie, nie możesz z niego korzystać. Będzie próbował komunikować się, dopóki nie otrzymają odpowiedzi.
Powodzenia
Cóż, to wszystko, aby uzyskać wsparcie i informacje o aktualizacji w kodzie, śledź moją stronę na Facebooku dotyczącą tej gry, abym mógł szybko odpowiedzieć. Linki znajdziesz na górze tutaj.
Zalecana:
Strzelanka ARDUINO + SCRATCH: 6 kroków
ARDUINO + SCRATCH Strzelanka: Uratuj ciasto !!! Jest w niebezpieczeństwie. Zbliżają się do niego cztery muchy. Masz tylko 30 sekund, aby zestrzelić muchy i uratować ciastko
Laserowa strzelanka (Gwiezdne wojny): 5 kroków
Laserowa strzelanka (Star Wars): W tym artykule podzielę się projektem Star Wars opartym na arduino, który możesz wykonać przy ograniczonym budżecie. Ten projekt to strzelanka laserowa, która będzie Ci odpowiadać jako produkt domowej roboty. Ten projekt składa się z 2 podprojektów: zrobienie blastera z tektury
Strzelanka do wody aktywowana ciosem: 5 kroków
Punch Activated Water Shooter: Jeśli jesteś fanem jednego kawałka. Musisz znać Jinbe. Jinbe to postać z serii One Piece, którą stworzył Eiichiro Oda. Jinbe jest wyjątkowo potężnym mistrzem Fishman Karate. Jedną z jego technik jest Pięść Pięciu Tysięcy Cegły. To jest
Gra Aruduino LED Szybkie klikanie Gra dla dwóch graczy: 8 kroków
Aruduino LED Game Fast Clicking Two Player Game: Ten projekt jest inspirowany @HassonAlkeim. Jeśli chcesz przyjrzeć się bliżej, oto link, który możesz sprawdzić https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Ta gra jest ulepszoną wersją Alkeima. To jest
Ostateczna gra komputerowa Simon mówi, że gra: 3 kroki
Finał inżynierii komputerowej Gra Simon Mówi: Mój pomysł: Mój projekt to gra Simon Mówi. W tej grze są cztery diody LED i cztery przyciski. Muzyka będzie odtwarzana z brzęczyka, a diody LED zaświecą się dopasowując się do muzyki. Wtedy rozpocznie się gra. Zaświeci się dioda LED i trzeba kliknąć tyłek