Innehållsförteckning:

Arduino skjutspel V3: 4 steg
Arduino skjutspel V3: 4 steg

Video: Arduino skjutspel V3: 4 steg

Video: Arduino skjutspel V3: 4 steg
Video: Arduino Shooting Game #shorts 2024, Juli
Anonim
Image
Image
Arduino skjutspel V3
Arduino skjutspel V3
Arduino skjutspel V3
Arduino skjutspel V3
Arduino skjutspel V3
Arduino skjutspel V3

Detta spel är för dig som använder airsoft eller co2 för att skjuta på mål. Det är ett spel.

För aktuell information om spelet och support:

www.facebook.com/arduinoshooting/

För min bloggsida om spelet:

shootinggameblog.wordpress.com

För koder om spelet:

github.com/shootinggame82/Shooting-game-v3

Skjutspel är x mål som är trådlösa, varje mål har en vibrationssensor som känner av vibrationer som uppstår när en träff träffas. De trådlösa sensorerna är ett Atmega328-chip (Arduino Uno-chip) och har laddat Li-Po-batteri.

Huvudkontrollen för detta spel styrs av en Arduino och är seriekontrollerad från en Raspberry Pi.

Så hur fungerar det här spelet? Det är tre spellägen:

Quicktime: Spela X -rundor och skjut så snabbt du kan på varje mål.

Tidsläge: Skjut så många mål du kan på X sekunder.

Rapidfire: Skjut X -skott på den snabbaste tiden.

Systemet använder oss NRF24L01 -sändare för att få ett bra avstånd från huvudkontrollen. De fungerar på 2,6 GHz (samma som WiFi körs på)

I mina tidigare projekt har jag använt Piezo för vibrationen, men nu används vibrationssensoromkopplare, men du kan fortfarande använda Piezo om du har gjort min gamla version av detta spel.

Spelet har en Raspberry Pi 7 pekskärm som håller det webbsystem som du styr spelet genom. En terminalskrivare skriver ut resultaten.

Tillbehör

För sändare:

  • X Atmega328 med Arduino Bootloader (Beroende på hur många mål)
  • X Vibrationssensoromkopplare
  • X Blue Led
  • X Grön Led
  • X Röd LED
  • X 3,7v Li-Po batteri
  • X FC-75 Li-Po laddningsmodul (eller en annan modell)
  • X 100 uF kondensator
  • X Fodral för sensorerna
  • X LD1117V33 (Ger en säker 3,3 V till sändare)
  • X NRF24L01 -moduler
  • X x 3220 Ohm motstånd (3 behövs för ett mål)
  • X 16 MHz Crystal
  • X x 2 Oplorerade kondensatorer 22 pF (2 behövs för ett mål)

För huvud Arduino:

  • 1 Arduino (Nano eller Uno rekommenderas, måste ha USB)
  • 1 NRF24L01 -modul
  • 1 10 uF kondensator

För hallon Pi:

  • Raspberry Pi (jag använde 3B)
  • 7 "pekskärm
  • ATXRaspi (valfri men en bra strömknappsmodul)
  • RTCRaspi (Valfritt men en bra RTC -modul för att hålla tid och datum)
  • Termalskrivare (valfritt men behövs för att kunna skriva ut)
  • Streckkodsläsare (USB -version som fungerar som ett tangentbord, tillval)
  • Bra 5V ström (jag använde en gammal 12v USB med 2,5 A ström)

Andra saker:

  • 12v effekt (jag har en vid 12 Ah)
  • Nätverksuttag (Gör det enkelt att ansluta till nätverk)
  • Kablar

Steg 1: De trådlösa sensorerna

De trådlösa sensorerna
De trådlösa sensorerna
De trådlösa sensorerna
De trådlösa sensorerna
De trådlösa sensorerna
De trådlösa sensorerna

Låt oss börja göra sensorerna. Jag använder 4 sensorer för det här spelet. Men du kan enkelt lägga till fler sensorer. Sensorerna kommunicerar med 4 -talskod när huvudsystemet skickar ut koden med vilken funktion sensorn med rätt kod tänds och är redo för målet. Det blå ljuset är att informera om att det är det målet som du kommer att träffa.

Vi har också en grön och en röd lysdiod. Det gröna lyser alltid för att informera om att sensorn är på. Det röda tänds bara när batteriet är mindre än 3,1 V (det använder den inbyggda funktionen i chipet för att beräkna hur mycket det finns i batteriet.

Vibrationssensorn är ansluten till den analoga stiftet och avläser dess värde. När värdet sjunker har sensorn bild av en vibration och det är där vi registrerar träff.

Målet har en felsäker funktion, om du inte träffar på X sekunder (standard är 15 sekunder) eller om överföringen inte kan göras går de tillbaka till startpositionen.

Jag tänker inte förklara hur du ska köra, kontrollera elarket för att se hur du ska göra det. Det enda som inte finns på det är batteriet, strömbrytaren och laddaren. Det är upp till dig att bestämma hur du vill ha det.

VIKTIGT OM NRF24L+ -modulen:

Det kan vara smärta i … att få dem stabila, i kombination med god kraft och isolering runt det, och koden du får dem att fungera. För mig ger 10 uF kondensator mig en stabil och bra anslutning, men försök först om du behöver till exempel 100 uF kondensator. Linda också in dem med först plastfolie och sedan aluminiumfolie för att skydda dem från att störa

Även i koden, datahastigheten du inte behöver mer än 250 Kb så det kommer inte att vara problemet. Men PA: myRadio.setPALevel (RF24_PA_MIN);

I koden som jag har satt till MIN (Detta är under testet) är det lägsta och kommer inte att använda så mycket ström, men intervallet kommer inte att vara så långt. Om du fick stabil och bra effekt till dem kan du gå upp till RF24_PA_MAX för att få det längsta räckvidden, MEN de behöver GOOOOOD stabil effekt för det. Försök också LÅG OCH HÖG (Endast MAX -text) för att se om du får bra kommunikation. Du kommer också att få bra räckvidd på LÅG och HÖG om du inte ska vara en prickskytt

Håll också sändarna med minst en meters mellanrum, för att stänga kan göra signalen dålig

Testa kommunikationen med några ping -exempel i NRF24 -biblioteket (länk på GitHub)

I koden måste du ange det unika identifieringsnumret för det målet:

int targID = 3401; // Detta är mål -ID

int sendID = 2401; // Detta är svars -ID

Det finns också 3 DEFINE -funktioner:

#define DEBUG

#definiera BATTERI

#define SHAKE // OM SHAKE SWITCH ANVÄNDS I STÄLL AV DEN GAMLA PIEZOEN

DEBUG:

Under testet är detta bra att ha definierat. Men när du gör dem tillgängliga, låt den inte aktiveras.

BATTERI:

Om du inte vill ha en batterikontroll för målen måste du ta bort denna definition.

SKAKA:

Om du har byggt min gamla version har du piezosensorer, ta sedan bort den för att få rätt kod för dem.

ATMEGA328 Chip

Istället för en Arduino nano bestämde jag mig för att använda ATMEGA328 -chip (med Uno boot loader), de är enkla att programmera bara ta bort chipet från en Arduino Uno och lägg till detta chip och ladda upp kod. Kontrollera det elektriska schemat för hur du bygger målen.

Koden

Jag har skrivit koden med PlatformIO istället för Arduino IDE. Det är en bättre programvara att programmera i. Så koden är lite annorlunda. Jag rekommenderar att du använder den här programvaran istället.

Mål- och sändarboxen

Jag har fäst sensorn och den blå lysdioden på målet, och med en 3, 5 mm phonokabel på 2 m kopplar jag ihop den i sändarboxen som rymmer atmega -chipet, batteriladdaren och den gröna & röda lysdioden. Detta för att skydda den från att träffas med stålkulor.

Steg 2: Spelkontrollen

Spelkontrollen
Spelkontrollen
Spelkontrollen
Spelkontrollen
Spelkontrollen
Spelkontrollen
Spelkontrollen
Spelkontrollen

Nästa sak vi behöver göra är att göra regulatorn för sensorerna. Det är en Arduino som använder en NRF24L01 -modul för att kommunicera med sensorerna. Inget annat. Arduino ansluts sedan med USB i hallon pi för att fungera.

Så här kommer det att fungera. Den använder seriell för att veta vad de ska göra. Pi kommer att skicka ut seriella kommandon. Först under installationen skickar den ut hur många mål du har lagt till och målidentifieringsnumren. Då kommer det att göra testfunktionen och informera hallon pi om de kommunicerar med varandra.

När du spelar spelet skickar det över från pi vilken typ av spel och hur många omgångar/träffar som ska användas. Det är allt.

Det är möjligt att använda NRF24L01 -modulerna i hallonpi, men för mig är Arduino ett bättre alternativ synder jag använder dem aldrig i hallon så jag vet inte hur bra de fungerar på lång sikt

Det finns en effektmodul som använder 5 v för att göra korrekt stabil effekt till sändarna. Du kan använda dem med dig Arduino (Se bilden) namnet är Socket Adapter Module Board

När du spelar målen aktiveras slumpmässigt en efter en. När en träffas kommer en annan att aktiveras.

Under testet kan du ha #DEFINE DEBUG aktiverat för att se hur det fungerar, men inte när du använder det i pi -datorn, det fungerar inte då.

Ladda ner koden på GitHub -sidan.

Steg 3: Hallon Pi

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

Vi har nu kommit till Raspberry Pi.

Jag har lagt till några extra funktioner så att jag kan ha en strömknapp. ATXRaspi 3 är en bra modul, du kan slå på, stänga av och starta om pi med en knapp. Också en RTCRaspi för att hålla tid och datum på pi. Gjorde det också möjligt att bara plugga in en nätverkskabel om jag behöver göra några uppdateringar på systemet. Du hittar dem på Lowpowerlab

Den termiska skrivaren hittar du på sparkfun och streckkodsläsaren finns på Amazon.

Pi -datorn körs i kioskläge så webbläsaren öppnas vid start. Först och främst behöver du ha en webbserver med PHP 7 och mysql på pi -datorn. (Det finns många guider på nätet för detta)

OBS: om du ska använda termoskrivare med hallon pi som har inbyggd bluetooth måste du inaktivera den först

Python-skriptet behöver pyserial och du installerar det: sudo apt-get install python-serial

För att få mysql att fungera installera följande:

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

suso apt-get install pymysql

Nu kan du styra din Arduino genom serie och även uppdatera mysql -databasen.

Nästa steg är att skapa python -skript för att ansluta till mysql.

I alla tre python -skript ändrar du anslutningen till din mysql -databas.

Nästa steg är att få python -skriptet att köras vid start.

Det finns tre python script.game.py är den viktigaste färgen av alla, att en håller spelet function.print.py detta behövs bara om du ska använda termalskrivare för att skriva ut.ean.py behövs bara om du är ska använda streckkodsläsaren.

För att göra dem autostart jag redigera:

sudo nano /etc/rc.local

och lägg till följande längst ner innan avfart 0:

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

Byt till rätt plats för ditt python -skript och glöm inte & -tecknet i slutet

Nu måste vi göra ett kioskläge för webbläsaren, först ta bort markören:

sudo apt-get install unclutter

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

nu i den filen hitta och kommentera:

@xscreensaver -no -splash # kommentera den här raden för att inaktivera skärmsläckare

Nedan som lägger till:

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

Nästa steg för att ta bort alla starttexter och sådant lägger också till din egen startskärm här är en snabbguide:

sudo nano /boot/config.txt och längst ner adddisable_splash = 1

Ta bort textmeddelande under stänkbild:

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

Hitta och ta bort (eller kommentera):

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

och:

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

Nu tar vi bort startmeddelanden:

sudo nano /boot/cmdline.txt

ersätt "konsol = tty1" med "konsol = tty3"

och i slutet av raden lägg till:

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

Och ersätt pi -stänk med ditt eget:

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

Nu har du din egen anpassade startskärm till ditt spel. Din pi -dator är nu redo att hantera spelet. Så över till nästa steg!

Steg 4: Konfigurera spelet

Vid denna tidpunkt har du nu skapat spelet.

Först måste du installera webbsystemet. Ladda upp databasen till din mysql -server. Filen finns i mappen inklusive och namnet database.sql

Nästa steg är att redigera konfigurationsfilen, du hittar den i mappnamnet inklusive config.php Ändra databasens inloggningsinformation så att skriptet fungerar.

Webbsystemet är flerspråkigt baserat och är skrivet på engelska. Det finns en svensk översättning tillgänglig. För att göra mer språk behöver du en programvara som heter Poedit.

För att lägga till mer språk i webbsystemet måste du redigera i18n_setup.php och lägga till i matrisen:

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

För att ändra standardspråket måste du också ändra på rad 27: $ lang = 'en_US'; ändra en_US till ditt språk.

språkfilerna måste placeras i locales/LANGCODE/LC_MESSAGES/och få namnet main.mo (Ändra långkod till ditt språk)

för att ändra tangentbordet i filen selectplayers.php byter du språk: "en", // en för engelska sv för svensk layout: 'qwerty', // qwerty för engelska svenska-qwerty för svenska

Du hittar dem på rad 218 & 219

De tillgängliga språken finns i mappen: tillgångar/js/tangentbord/språk och layouter finns i tillgångar/js/tangentbord/layouter och lägg till rätt filer till rad 118 och 119 (ersätt den du hittar där nu)

Lägg till mål

För att lägga till mål går du till localhost/ admin/ och klickar på lägg till mål.

Du måste lägga till ett namn för målet och det unika mål -ID och skicka ID, lägga till så många mål som du har.

Lägg till spel

Du måste också lägga till några spel. Gå till localhost/ admin/ och klicka på lägg till spel

Du måste lägga till ett namn för spelet, en beskrivning, min och max spelare vilken typ av spel, även hur svårt spelet är mellan 1 till 5. Och hur spelet är, så för snabbeldspelet lägger du till hur många träffar (exempel 30) för snabbdragning hur många omgångar (till exempel 8) och för tidsinställd hur länge de ska spela (till exempel 60 i en minut)

Starta spelet

När du sätter igång spelet kommer det att göra måletestning. Så målen måste vara på innan du startar huvudsystemet. Om alla klarar testet kan du använda systemet, men om de inte gör det kan du inte använda det. Det kommer att försöka kommunicera tills de fått svar.

Lycka till

Det är väl det, för support och information om uppdatering i koden, följ min Facebook -sida för det här spelet, så jag kan ge dig svar snabbt. Du hittar länkar högst upp här.

Rekommenderad: