Indholdsfortegnelse:

Arduino skydespil V3: 4 trin
Arduino skydespil V3: 4 trin

Video: Arduino skydespil V3: 4 trin

Video: Arduino skydespil V3: 4 trin
Video: 🔥 КС ГО при ТЕМПЕРАТУРЕ 40 ГРАДУСОВ 🌡️ #csgo #ксго #cs2 #кс2 #даркен 2024, November
Anonim
Image
Image
Arduino skydespil V3
Arduino skydespil V3
Arduino skydespil V3
Arduino skydespil V3
Arduino skydespil V3
Arduino skydespil V3

Dette spil er til dig, der bruger airsoft eller co2 til at skyde på mål. Det er et spil.

For opdateret information om spillet og support:

www.facebook.com/arduinoshooting/

Til min blogside om spillet:

shootinggameblog.wordpress.com

For koderne om spillet:

github.com/shootinggame82/Shooting-game-v3

Skydespil er x mål, der er trådløse, hvert mål har en vibrationssensor, der registrerer vibrationer, der får, når der bliver slået. De trådløse sensorer er en Atmega328-chip (Arduino Uno-chip) og har genopladeligt Li-Po-batteri.

Hovedcontrolleren til dette spil styres af en Arduino og er seriel styret fra en Raspberry Pi.

Så hvordan fungerer dette spil? Nå det er 3 spiltilstande:

Quicktime: Spil X runder, og skyd så hurtigt, du kan på hvert mål.

Tidstilstand: Skyd så mange mål du kan på X sekunder.

Rapidfire: Skyd X -skud på den hurtigste tid.

Systemet os NRF24L01 sendere for at få en god afstand fra hovedcontrolleren. De fungerer på 2,6 GHz (Det samme som WiFi kører på)

I mine tidligere projekter har jeg brugt Piezo til vibrationen, men nu bruges vibrationssensor switch. Men du kan stadig bruge Piezo, hvis du har lavet min gamle version af dette spil.

Spillet har en Raspberry Pi 7 berøringsskærm, der holder det websystem, du styrer spillet igennem. En terminalprinter udskriver resultaterne.

Forbrugsvarer

Til sendere:

  • X Atmega328 med Arduino Bootloader (afhængigt af hvor mange mål)
  • X Vibrationssensorkontakt
  • X Blå LED
  • X Grøn Led
  • X Rød LED
  • X 3,7v Li-Po batteri
  • X FC-75 Li-Po oplader modul (eller en anden model)
  • X 100 uF kondensator
  • X Etuier til sensorerne
  • X LD1117V33 (Gør en sikker 3,3 V til sender)
  • X NRF24L01 moduler
  • X x 3220 Ohm modstande (3 er nødvendige for et mål)
  • X 16 MHz krystal
  • X x 2 Uploriserede kondensatorer 22 pF (2 er nødvendige for et mål)

Til hoved Arduino:

  • 1 Arduino (Nano eller Uno anbefales, skal have USB)
  • 1 NRF24L01 modul
  • 1 10 uF kondensator

Til hindbær Pi:

  • Hindbær Pi (jeg brugte 3B)
  • 7 "berøringsskærm
  • ATXRaspi (valgfrit, men et godt afbryderknapsmodul)
  • RTCRaspi (Valgfrit, men et godt RTC -modul til at holde tid og dato)
  • Termal printer (valgfri, men nødvendig for at kunne udskrive)
  • Stregkodescanner (USB -version, der fungerer som et tastatur, valgfri)
  • God 5V strøm (jeg brugte en gammel 12v USB med 2,5 A strøm)

Andre ting:

  • 12v strøm (jeg har en ved 12 Ah)
  • Netværksstik (Gør det let at oprette forbindelse til netværk)
  • Kabler

Trin 1: De trådløse sensorer

De trådløse sensorer
De trådløse sensorer
De trådløse sensorer
De trådløse sensorer
De trådløse sensorer
De trådløse sensorer

Lad os begynde at lave sensorerne. Jeg bruger 4 sensorer til dette spil. Men du kan nemt tilføje flere sensorer. Sensorerne kommunikerer med 4 -talskode, når hovedsystemet sender koden ud med hvilken funktion sensoren med den rigtige kode vil lyse op og være klar til målet. Det blå lys er at informere om, at det er det mål, du vil ramme.

Vi har også en grøn og en rød LED. Den grønne lyser altid for at informere om, at sensoren er tændt. Den røde lyser kun, når batteriet er mindre end 3,1V (det bruger den indbyggede funktion i chippen til at beregne, hvor meget der er i batteriet.

Vibrationssensoren er forbundet til den analoge pin og læser dens værdi. Når værdien synker, har sensoren et billede af en vibration, og det er her, vi registrerer hittet.

Målet har en fejlsikker funktion, hvis du ikke rammer i X sekunder (standard er 15 sek), eller hvis afsendelsen ikke kan foretages i, går de tilbage til startpositionen.

Jeg vil ikke forklare, hvordan du går til ledninger, tjek elarket for at se, hvordan du gør det. Den eneste ting, der ikke er på det, er batteriet, afbryderen og opladeren. Det er op til dig at beslutte, hvordan du vil have det.

VIGTIGT OM NRF24L+ -modulet:

Det kan være smerte i … at få dem stabile, kombineret med god kraft og isolation omkring det, og koden får du dem til at fungere. For mig vil 10 uF kondensator give mig en stabil og god forbindelse, men prøv først, hvis du har brug for f.eks. 100 uF kondensator. Pak dem også ind med først plastfolie og derefter aluminiumsfolie for at beskytte dem mod at forstyrre

Også i koden, den datahastighed, du ikke har brug for mere end 250 Kb, så det vil ikke være problemet. Men PA: myRadio.setPALevel (RF24_PA_MIN);

I koden, jeg har sat til MIN (Dette er under testen), er det den laveste og bruger ikke så meget strøm, men rækkevidden vil ikke være så lang. Hvis du fik stabil og god effekt til dem, kan du gå op til RF24_PA_MAX for at få den længste rækkevidde, MEN de har brug for GOOOOOD stabil strøm til det. Prøv også LAV OG HØJ (kun ændring af MAX -tekst) for at se, om du får god kommunikation. Du får også god rækkevidde på LOW og HIGH, medmindre du skal være en snigskytte

Hold også senderne mindst en meter fra hinanden, for at lukke kan gøre signalet dårligt

Test kommunikationen med et ping -eksempel i NRF24 -biblioteket (link på GitHub)

I koden skal du angive det unikke identifikationsnummer for det pågældende mål:

int targID = 3401; // Dette er mål -id'et

int sendID = 2401; // Dette er svar -id'et

Der er også 3 DEFINE funktioner:

#define DEBUG

#define BATTERI

#define SHAKE // HVIS SHAKE SWITCH BRUGES I stedet for den gamle PIEZO

FEJLFINDE:

Under testen er dette godt at have defineret. Men når du gør dem tilgængelige, skal du ikke have den aktiveret.

BATTERI:

Hvis du ikke vil have en batteritjekker til målene, skal du fjerne denne definition.

RYSTE:

Hvis du har bygget min gamle version, har du piezo -sensorer, og fjern derefter denne for at få den korrekte kode til dem.

ATMEGA328 Chip

I stedet for en Arduino nano besluttede jeg mig for at bruge ATMEGA328 chip (med Uno boot loader), de er enkle at programmere bare fjerne chippen fra en Arduino Uno og tilføje denne chip og uploade kode. Tjek det elektriske skema om, hvordan du bygger målene.

Koden

Jeg har skrevet koden med PlatformIO i stedet for Arduino IDE. Det er en bedre software at programmere i. Så koden er lidt anderledes. Jeg anbefaler at bruge denne software i stedet.

Mål- og senderboksen

Jeg har vedhæftet sensoren og den blå LED på målet, og med et 3, 5 mm phonokabel på 2 m forbinder jeg det sammen i senderboksen, der indeholder atmega -chippen, batteriopladeren og den grønne og røde LED. Dette er for at beskytte det mod at blive ramt af stålkugler.

Trin 2: Game Controller

Game Controller
Game Controller
Game Controller
Game Controller
Game Controller
Game Controller
Game Controller
Game Controller

Den næste ting, vi skal gøre, er at lave controlleren til sensorerne. Det er en Arduino, der bruger et NRF24L01 -modul til at kommunikere med sensorerne. Intet andet. Arduino'en er derefter forbundet med USB i hindbærpi for at fungere.

Sådan vil det fungere. Det bruger seriel til at vide, hvad de skal gøre. Pi vil sende serielle kommandoer. Først under opsætningen sender den ud, hvor mange mål du har tilføjet, og målets identifikationsnumre. Derefter vil den udføre testfunktionen og informere hindbærpi, hvis de kommunikerer med hinanden.

Når du spiller spillet vil det sende fra pi hvilken type spil og hvor mange runder/hits der skal bruges. Det er det.

Det er muligt at bruge NRF24L01 modulerne i hindbær pi, men for mig er Arduino en bedre mulighed synder, jeg bruger dem aldrig i hindbær, så jeg ved ikke, hvor godt de fungerer på lang sigt

Der er et strømmodul, der bruger 5 v til at lave korrekt stabil strøm til transmitterne. Du kan bruge dem med dig Arduino (Se billedet) navnet er Socket Adapter Module Board

Når du spiller, bliver målene tilfældigt aktiveret en efter en. Når man bliver ramt, aktiveres en anden.

Under testen kan du få #DEFINE DEBUG aktiveret for at se, hvordan det fungerer, men ikke når du bruger det i pi -computeren, det fungerer ikke derefter.

Download koden på GitHub -siden.

Trin 3: Hindbær Pi

Hindbær Pi
Hindbær Pi
Hindbær Pi
Hindbær Pi
Hindbær Pi
Hindbær Pi
Hindbær Pi
Hindbær Pi

Vi er nu kommet til Raspberry Pi.

Jeg har tilføjet nogle ekstra funktioner, så jeg kan have en tænd / sluk -knap. ATXRaspi 3 er et fantastisk modul, du kan tænde, slukke og genstarte pi'en med en knap. Også en RTCRaspi til at holde tid og dato på pi. Gjorde det også muligt bare at tilslutte et netværkskabel, for jeg skal lave nogle opdateringer på systemet. Du finder dem på Lowpowerlab

Den termiske printer finder du på sparkfun og stregkodelæseren er tilgængelig på amazon.

Pi -computeren kører i kiosk -tilstand, så browseren åbner ved start. Først og fremmest skal du have en webserver med PHP 7 og mysql på pi -computeren. (Der er mange guider rundt omkring på nettet til dette)

BEMÆRK: Hvis du skal bruge en termisk printer med hindbær pi, der har indbygget bluetooth, skal du først deaktivere den

Python-scriptet har brug for pyserial, og du installerer det: sudo apt-get install python-serial

For at få mysql til at fungere installeres følgende:

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

suso apt-get install pymysql

Nu kan du styre din Arduino gennem seriel og også opdatere mysql -databasen.

Næste trin er at lave python script til at oprette forbindelse til mysql.

I alle tre python script ændres forbindelsen til din mysql database.

Næste trin er at få python -scriptet til at køre ved start.

Der er tre python script.game.py er den mest betydningsfulde af alle, at den ene har spillet function.print.py dette er kun nødvendigt, hvis du vil bruge termal printer til at udskrive.ean.py er kun nødvendig, hvis du er vil bruge stregkodescanneren.

For at få dem til at starte automatisk, redigerer jeg:

sudo nano /etc/rc.local

og tilføj følgende nederst inden afslutning 0:

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

Skift venligst til det korrekte sted for dit python -script, og glem ikke & -tegnet til sidst

Nu skal vi lave en kiosktilstand til webbrowseren, fjern først markøren:

sudo apt-get install unclutter

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

find og kommenter nu i den fil:

@xscreensaver -no -splash # kommenter denne linje for at deaktivere screensaver

Nedenfor tilføjer:

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

Næste trin til at fjerne alle boottekster og ting tilføj også din egen boot -skærm her er en hurtig vejledning:

sudo nano /boot/config.txt og nederst adddisable_splash = 1

Fjern tekstbesked under stænkbillede:

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

Find og fjern (eller kommenter):

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

og:

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

Nu fjerner vi bootbeskeder:

sudo nano /boot/cmdline.txt

erstat "konsol = tty1" med "konsol = tty3"

og tilføj i slutningen af linjen:

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

Og udskift pi -sprøjtet med dit eget:

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

Nu har du din egen brugerdefinerede startskærm til dit spil. Din pi -computer er nu klar til at håndtere spillet. Så over til næste trin!

Trin 4: Konfigurer spillet

På dette tidspunkt har du nu oprettet spillet.

Først skal du gøre er at konfigurere webbsystemet. Upload databasen til din mysql -server. Filen er i mappen inklusive og navngivet database.sql

Næste trin er at redigere konfigurationsfilen, du finder den i inkluderet mappenavn config.php Skift database -loginoplysninger, så scriptet fungerer.

Websystemet er baseret på flere sprog og er skrevet på engelsk. Der er en svensk oversættelse tilgængelig. For at lave mere sprog har du brug for en software ved navn Poedit.

For at tilføje mere sprog til websystemet skal du redigere i18n_setup.php og tilføje i arrayet:

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

Også for at ændre standardsproget skal du ændre i linje 27: $ lang = 'en_US'; ændre en_US til dit sprog.

sprogfilerne skal placeres i locales/LANGCODE/LC_MESSAGES/og navngives main.mo (Skift langcode til dit sprog)

for at ændre tastaturet i filen selectplayers.php ændrer du sprog: "da", // da for engelsk sv for svensk layout: 'qwerty', // qwerty for engelsk svensk-qwerty for svensk

Du finder dem på linje 218 & 219

De tilgængelige sprog findes i mappen: assets/js/keyboard/languages & layouts er i assets/js/keyboard/layouts og tilføj de korrekte filer til linje 118 og 119 (udskift den, du finder der nu)

Tilføj mål

For at tilføje mål skal du gå til localhost/ admin/ og klikke på tilføj mål.

Du skal tilføje et navn til målet og det unikke mål -ID og sende id, tilføje så mange mål, som du har.

Tilføj spil

Du skal også tilføje nogle spil. Gå til localhost/ admin/ og klik på tilføj spil

Du skal tilføje et navn til spillet, en beskrivelse, min- og max -spillere hvilken type spil, også hvor hårdt spillet er mellem 1 til 5. Og hvordan spillet er, så for rapidfire -spillet tilføjer du, hvor mange hits (eksempel 30) for quickdraw hvor mange runder (f.eks. 8) og for tidsindstillet hvor lang tid de skal spille (f.eks. 60 i et minut)

Start spillet

Når du tænder for spillet, udfører det måltesten. Så målene skal være på, før du starter hovedsystemet. Hvis alle består testen, kan du bruge systemet, men hvis de ikke gør det, kan du ikke bruge det. Det vil forsøge at kommunikere, indtil de får svar.

Held og lykke

Det er godt nok det, for support og information om opdatering i koden, følg venligst min Facebook -side til dette spil, så jeg kan give dig hurtigt svar. Du finder links øverst her.

Anbefalede: