Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: De trådløse sensorer
- Trin 2: Game Controller
- Trin 3: Hindbær Pi
- Trin 4: Konfigurer spillet
Video: Arduino skydespil V3: 4 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-31 10:18
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
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
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
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:
ARDUINO + SCRATCH Skydespil: 6 trin
ARDUINO + SCRATCH Skydespil: Gem din kage !!! Den er i fare. Der er fire fluer, der nærmer sig det. Du har kun 30 sekunder til at skyde fluerne og gemme din kage
Arduino bil omvendt parkering alarmsystem - Trin for trin: 4 trin
Arduino bil omvendt parkering alarmsystem. Trin for trin: I dette projekt vil jeg designe en simpel Arduino bil omvendt parkeringssensorkreds ved hjælp af Arduino UNO og HC-SR04 ultralydssensor. Dette Arduino -baserede bilomvendt alarmsystem kan bruges til en autonom navigation, robotafstand og andre rækkevidde
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)
RC -sporet robot ved hjælp af Arduino - Trin for trin: 3 trin
RC Tracked Robot Using Arduino - Step by Step: Hey guys, I are back with another cool Robot chassis from BangGood. Håber du har gennemgået vores tidligere projekter - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot med Robotic Arms og The Badland Braw
DIY Arduino robotarm, trin for trin: 9 trin
DIY Arduino robotarm, trin for trin: Denne vejledning lærer dig, hvordan du bygger en robotarm selv