Innehållsförteckning:
- Tillbehör
- Steg 1: De trådlösa sensorerna
- Steg 2: Spelkontrollen
- Steg 3: Hallon Pi
- Steg 4: Konfigurera spelet
Video: Arduino skjutspel V3: 4 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-31 10:25
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
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
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
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:
ARDUINO + SCRATCH Skjutspel: 6 steg
ARDUINO + SCRATCH Skjutspel: Spara din tårta !!! Det är i fara. Det finns fyra flugor som närmar sig det. Du har bara 30 sekunder på dig att skjuta flugorna och spara din tårta
Arduino Car Reverse Parking Alert System - Steg för steg: 4 steg
Arduino Car Reverse Parking Alert System | Steg för steg: I det här projektet kommer jag att utforma en enkel Arduino Car Reverse Parking Sensor Circuit med Arduino UNO och HC-SR04 Ultrasonic Sensor. Detta Arduino -baserade bilomvändningsvarningssystem kan användas för autonom navigering, robotavstånd och andra
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
RC -spårad robot med Arduino - Steg för steg: 3 steg
RC -spårad robot med Arduino - Steg för steg: Hej killar, jag är tillbaka med ett annat häftigt robotchassi från BangGood. Hoppas att du har gått igenom våra tidigare projekt - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot med Robotic Arms och The Badland Braw
DIY Arduino robotarm, steg för steg: 9 steg
DIY Arduino robotarm, steg för steg: Denna handledning lär dig hur du bygger en robotarm själv