Innholdsfortegnelse:

Arduino skytespill V3: 4 trinn
Arduino skytespill V3: 4 trinn

Video: Arduino skytespill V3: 4 trinn

Video: Arduino skytespill V3: 4 trinn
Video: #4 Как запрограммировать ПЛК Outseal Arduino — защелка и переворот 2024, Juli
Anonim
Image
Image
Arduino skytespill V3
Arduino skytespill V3
Arduino skytespill V3
Arduino skytespill V3
Arduino skytespill V3
Arduino skytespill V3

Dette spillet er for deg som bruker airsoft eller co2 til å skyte mot mål. Det er et spill.

For oppdatert informasjon om spillet og støtte:

www.facebook.com/arduinoshooting/

For bloggsiden min om spillet:

shootinggameblog.wordpress.com

For kodene om spillet:

github.com/shootinggame82/Shooting-game-v3

Skytespill er x mål som er trådløse. Hvert mål har en vibrasjonssensor som registrerer vibrasjon som blir når et treff blir gjort. De trådløse sensorene er en Atmega328-brikke (Arduino Uno-brikke) og har et ladet Li-Po-batteri.

Hovedkontrolleren for dette spillet styres av en Arduino og er seriekontrollert fra en Raspberry Pi.

Så hvordan fungerer dette spillet? Vel, det er 3 spillmoduser:

Quicktime: Spill X -runder og skyt så fort du kan på hvert mål.

Timemode: Skyt så mange mål du kan på X sekunder.

Rapidfire: Ta X -skudd på den raskeste tiden.

Systemet bruker oss NRF24L01 sendere for å få et godt avstand fra hovedkontrolleren. De fungerer på 2,6 GHz (det samme som WiFi kjører på)

I mine tidligere prosjekter har jeg brukt Piezo til vibrasjon, men nå brukes vibrasjonssensorbryter, men du kan fortsatt bruke Piezo hvis du har laget min gamle versjon av dette spillet.

Spillet har en Raspberry Pi 7 berøringsskjerm som holder websystemet du kontrollerer spillet gjennom. En terminalskriver skriver ut resultatene.

Rekvisita

For sendere:

  • X Atmega328 med Arduino Bootloader (Avhengig av hvor mange mål)
  • X Vibrasjonssensorbryter
  • X Blå LED
  • X Grønn LED
  • X Rød LED
  • X 3,7v Li-Po batteri
  • X FC-75 Li-Po ladermodul (eller en annen modell)
  • X 100 uF kondensator
  • X Etuier for sensorene
  • X LD1117V33 (gjør en sikker 3,3 V til sender)
  • X NRF24L01 moduler
  • X x 3220 Ohm motstander (3 er nødvendig for ett mål)
  • X 16 MHz krystall
  • X x 2 uploriserte kondensatorer 22 pF (2 er nødvendig for ett mål)

For hoved Arduino:

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

For bringebær Pi:

  • Bringebær Pi (jeg brukte 3B)
  • 7 "berøringsskjerm
  • ATXRaspi (valgfri, men en god strømknappmodul)
  • RTCRaspi (Valgfritt, men en god RTC -modul for å holde tid og dato)
  • Termisk skriver (valgfritt, men nødvendig for å kunne skrive ut)
  • Strekkodeskanner (USB -versjon som fungerer som et tastatur, valgfritt)
  • God 5V strøm (jeg brukte en gammel 12v USB med 2,5 A strøm)

Andre ting:

  • 12v strøm (jeg har en på 12 Ah)
  • Nettverkskontakt (gjør det enkelt å koble til nettverk)
  • Kabler

Trinn 1: De trådløse sensorene

De trådløse sensorene
De trådløse sensorene
De trådløse sensorene
De trådløse sensorene
De trådløse sensorene
De trådløse sensorene

La oss begynne å lage sensorene. Jeg bruker 4 sensorer til dette spillet. Men du kan enkelt legge til flere sensorer. Sensorene kommuniserer med 4 -tallskode når hovedsystemet sender ut koden med hvilken funksjon sensoren med riktig kode vil lyse opp og være klar for målet. Det blå lyset er å informere om at det er det målet du kommer til å treffe.

Vi har også en grønn og en rød LED. Den grønne lyser alltid for å informere om at sensoren er på. Den røde lyser bare når batteriet er mindre enn 3.1V (den bruker den innebygde funksjonen i brikken til å beregne hvor mye det er i batteriet.

Vibrasjonssensoren er koblet til den analoge pinnen og leser verdien. Når verdien synker, har sensoren en vibrasjon, og det er der vi registrerer treffet.

Målet har en feilsikker funksjon, hvis du ikke treffer på X sekunder (standard er 15 sekunder), eller hvis overføringen ikke kan gjøres i, vil de gå tilbake til startposisjonen.

Jeg skal ikke forklare hvordan du skal koble til, sjekk det elektriske arket for å se hvordan du skal gjøre det. Den eneste tingen som ikke er på den, er batteriet, strømbryteren og laderen. Det er opp til deg å bestemme hvordan du vil ha det.

VIKTIG OM NRF24L+ -modulen:

Det kan være smerte i … å få dem stabile, kombinert med god kraft og isolasjon rundt det, og koden du får dem til å fungere. For meg vil 10 uF kondensator gi meg en stabil og god tilkobling, men prøv først om du trenger for eksempel 100 uF kondensator. Pakk dem også inn med først plastfolie og deretter aluminiumsfolie for å beskytte dem mot forstyrrelser

Også i koden, datahastigheten du ikke trenger mer enn 250 Kb, så det vil ikke være problemet. Men PA: myRadio.setPALevel (RF24_PA_MIN);

I koden jeg har satt til MIN (Dette er under testen), er det den laveste og bruker ikke så mye strøm, men rekkevidden blir ikke så lang. Hvis du har stabil og god kraft til dem, kan du gå opp til RF24_PA_MAX for å få det lengste området, MEN de trenger GOOOOOD stabil kraft for det. Prøv også LAV OG HØY (Endre bare MAX -tekst) for å se om du får god kommunikasjon. Du vil også få god rekkevidde på LAV og HØY med mindre du skal være en skarpskytter

Hold også senderne minst en meter fra hverandre, for å lukke kan gjøre signalet dårlig

Test kommunikasjonen med et pingeksempel i NRF24 -biblioteket (lenke på GitHub)

I koden må du angi det unike identifikasjonsnummeret for det målet:

int targID = 3401; // Dette er mål -ID

int sendID = 2401; // Dette er svar -ID -en

Det er også 3 DEFINE -funksjoner:

#define DEBUG

#define BATTERI

#define SHAKE // IF SHAKE SWITCH ER BRUKT I STEDET AV DEN GAMLE PIEZOEN

DEBUG:

Under testen er dette godt å ha definert. Men når du gjør dem tilgjengelige, ikke aktiver den.

BATTERI:

Hvis du ikke vil ha en batterikontroll for målene, må du fjerne denne definisjonen.

RISTE:

Hvis du har bygd min gamle versjon, har du piezosensorer, så fjern denne for å få riktig kode for dem.

ATMEGA328 Chip

I stedet for en Arduino nano bestemte jeg meg for å bruke ATMEGA328 -brikke (med Uno boot loader), de er enkle å programmere bare fjerne brikken fra en Arduino Uno og legge til denne brikken og laste opp kode. Sjekk det elektriske opplegget om hvordan du bygger målene.

Koden

Jeg har skrevet koden med PlatformIO i stedet for Arduino IDE. Det er en bedre programvare å programmere i. Så koden er litt annerledes. Jeg anbefaler å bruke denne programvaren i stedet.

Mål- og senderboksen

Jeg har festet sensoren og den blå lysdioden på målet, og med en 3, 5 mm phonokabel på 2 m kobler jeg den sammen i senderboksen som inneholder atmega -brikken, batteriladeren og den grønne og røde lysdioden. Dette er for å beskytte den mot å bli truffet av stålkuler.

Trinn 2: Spillkontrolleren

Spillkontrolleren
Spillkontrolleren
Spillkontrolleren
Spillkontrolleren
Spillkontrolleren
Spillkontrolleren
Spillkontrolleren
Spillkontrolleren

Det neste vi må gjøre er å lage kontrolleren for sensorene. Det er en Arduino som bruker en NRF24L01 -modul for å kommunisere med sensorene. Ingenting annet. Arduino kobles deretter til USB i bringebær -pi for å fungere.

Slik vil det fungere. Den bruker seriell for å vite hva de skal gjøre. Pi vil sende ut serielle kommandoer. Først under oppsettet sender den ut hvor mange mål du har lagt til, og målidentifikasjonsnummerene. Deretter vil den utføre testfunksjonen og informere bringebær pi hvis de kommuniserer med hverandre.

Når du spiller spillet vil det sende fra pi hvilken type spill og hvor mange runder/treff du skal bruke. Det er det.

Det er mulig å bruke NRF24L01 -modulene i bringebær -pi, men for meg er Arduino et bedre alternativ. Jeg bruker dem aldri i bringebær, så jeg vet ikke hvor bra de fungerer på lang sikt

Det er en kraftmodul som bruker 5 v for å lage riktig stabil strøm til senderne. Du kan bruke dem med deg Arduino (Se bildet) navnet er Socket Adapter Module Board

Når du spiller vil målene bli tilfeldig aktivert en etter en. Når en blir truffet, vil en annen bli aktivert.

Under testen kan du ha #DEFINE DEBUG aktivert for å se hvordan det fungerer, men ikke når du bruker det i pi -datamaskinen, det vil ikke fungere da.

Last ned koden på GitHub -siden.

Trinn 3: Bringebær Pi

Bringebær Pi
Bringebær Pi
Bringebær Pi
Bringebær Pi
Bringebær Pi
Bringebær Pi
Bringebær Pi
Bringebær Pi

Vi har nå kommet til Raspberry Pi.

Jeg har lagt til noen ekstra funksjoner, slik at jeg kan ha en strømknapp. ATXRaspi 3 er en flott modul, du kan slå på, av og starte pi på nytt med en knapp. Også en RTCRaspi for å beholde tid og dato på pi. Gjør det også mulig å bare koble til en nettverkskabel, for jeg må gjøre noen oppdateringer på systemet. Du finner dem på Lowpowerlab

Den termiske skriveren finner du på sparkfun og strekkodeleseren er tilgjengelig på amazon.

Pi -datamaskinen kjører i kioskmodus, så nettleseren åpnes ved start. Først av alt trenger du en webserver med PHP 7 og mysql på pi -datamaskinen. (Det er mange guider på nettet for dette)

MERK: Hvis du skal bruke termisk skriver med bringebær pi som har innebygd bluetooth, må du deaktivere den først

Python-skriptet trenger pyserial, og du installerer det: sudo apt-get install python-serial

Slik får du mysql til å fungere:

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

suso apt-get install pymysql

Nå kan du kontrollere Arduino gjennom serien og også oppdatere mysql -databasen.

Neste trinn er å lage python -script for å koble til mysql.

I alle tre python -skriptene må du endre tilkoblingen til mysql -databasen.

Neste trinn er å få python -skriptet til å kjøre ved start.

Det er tre python script.game.py er den viktigste importen av alle, at den ene har spillfunksjonen. Print.py dette er bare nødvendig hvis du skal bruke termalskriver til å skrive ut.ean.py er bare nødvendig hvis du er skal bruke strekkodeskanneren.

For å gjøre dem autostart redigerer jeg:

sudo nano /etc/rc.local

og legg til følgende nederst før avkjørsel 0:

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

Endre til riktig sted for python -skriptet ditt, og ikke glem & -tegnet på slutten

Nå må vi lage en kioskmodus for nettleseren, fjern først markøren:

sudo apt-get install unclutter

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

nå i den filen finn og kommenter:

@xscreensaver -no -splash # kommenter denne linjen for å deaktivere skjermsparer

Nedenfor legger du til:

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

Neste trinn for å fjerne alle oppstartstekster og ting, og legg til din egen oppstartsskjerm her er en rask guide:

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

Fjern tekstmeldingen under sprutbildet:

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

Finn og fjern (eller kommenter):

melding_spritt = Sprite (); melding_spritt. SetPosisjon (skjermbredde * 0,1, skjermhøyde * 0,9, 10000);

og:

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

Nå fjerner vi oppstartsmeldinger:

sudo nano /boot/cmdline.txt

erstatt “console = tty1” med “console = tty3”

og på slutten av linjen legg til:

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

Og bytt ut pi -sprutet med ditt eget:

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

Nå har du din egen tilpassede oppstartsskjerm til spillet ditt. Din pi -datamaskin er nå klar til å håndtere spillet. Så over til neste trinn!

Trinn 4: Sett opp spillet

På dette tidspunktet har du nå opprettet spillet.

Først du trenger å gjøre er å sette opp websystemet. Last opp databasen til mysql -serveren din. Filen er i mappen inkluderer og heter database.sql

Neste trinn er å redigere konfigurasjonsfilen, du finner den i mappenavnet config.php Endre påloggingsinformasjonen for databasen slik at skriptet fungerer.

Nettsystemet er flerspråklig og er skrevet på engelsk. Det er en svensk oversettelse tilgjengelig. For å lage flere språk trenger du en programvare som heter Poedit.

For å legge til mer språk i nettsystemet må du redigere i18n_setup.php og legge til i matrisen:

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

Også for å endre standardspråket må du endre på linje 27: $ lang = 'no_US'; endre en_US til ditt språk.

språkfilene må plasseres i locales/LANGCODE/LC_MESSAGES/og navngis main.mo (Endre langcode til ditt språk)

for å endre tastaturet i filen selectplayers.php du endrer språk: "en", // no for engelsk sv for svensk layout: 'qwerty', // qwerty for engelsk svensk-qwerty for svensk

Du finner dem på linje 218 og 219

De tilgjengelige språkene er i mappen: assets/js/keyboard/languages & layouts er i assets/js/keyboard/layouts og legg til de riktige filene på linje 118 og 119 (erstatt den du finner der nå)

Legg til mål

For å legge til mål går du til localhost/ admin/ og klikker på legg til mål.

Du må legge til et navn for målet og den unike mål -IDen og sende ID, legge til så mange mål du har.

Legg til spill

Du må også legge til noen spill. Gå til localhost/ admin/ og klikk på legg til spill

Du må legge til et navn på spillet, en beskrivelse, min og maks spillere hvilken type spill, også hvor hardt spillet er mellom 1 til 5. Og hvordan spillet er, så for hurtigbrann -spillet legger du til hvor mange treff (eksempel 30) for quickdraw hvor mange runder (for eksempel 8) og for tidsbestemt hvor lenge de skal spille (for eksempel 60 i ett minutt)

Start spillet

Når du slår på spillet, vil det utføre måltesting. Så målene må være på før du starter hovedsystemet. Hvis alle består testen kan du bruke systemet, men hvis de ikke gjør det, kan du ikke bruke det. Det vil prøve å kommunisere til de får svar.

Lykke til

Vel, det er omtrent det, for støtte og informasjon om oppdatering i koden, vennligst følg min Facebook -side for dette spillet, så jeg kan gi deg svar raskt. Du finner lenker øverst her.

Anbefalt: