Sisällysluettelo:

Arduino -ammuntapeli V3: 4 vaihetta
Arduino -ammuntapeli V3: 4 vaihetta

Video: Arduino -ammuntapeli V3: 4 vaihetta

Video: Arduino -ammuntapeli V3: 4 vaihetta
Video: Переработанный шаговый двигатель Epson EM-400, управляемый Arduino с помощью реле DPDT 2024, Heinäkuu
Anonim
Image
Image
Arduino -ammuntapeli V3
Arduino -ammuntapeli V3
Arduino -ammuntapeli V3
Arduino -ammuntapeli V3
Arduino -ammuntapeli V3
Arduino -ammuntapeli V3

Tämä peli on sinulle, joka käyttää airsoftia tai co2: ta ampuaksesi kohteisiin. Se on peli.

Ajantasaista tietoa pelistä ja tuesta:

www.facebook.com/arduinoshooting/

Blogini sivulle pelistä:

shootinggameblog.wordpress.com

Pelin koodit:

github.com/shootinggame82/Shooting-game-v3

Ammuntapeli on x langatonta kohdetta, ja jokaisessa kohteessa on tärinäanturi, joka tunnistaa tärinän, joka saa osuman. Langattomat anturit ovat Atmega328-siru (Arduino Uno-siru) ja niissä on ladattava Li-Po-akku.

Tämän pelin pääohjainta ohjaa Arduino, ja sitä ohjataan sarjaan Raspberry Pi -laitteesta.

Joten miten tämä peli toimii? Siinä on 3 pelitilaa:

Pika -aika: Pelaa X kierrosta ja ammu niin nopeasti kuin voit jokaiseen kohteeseen.

Aikatapa: Ammu niin monta kohdetta kuin mahdollista X sekunnissa.

Rapidfire: Ota X -laukauksia nopeimmin.

Järjestelmämme on NRF24L01 -lähettimet, jotta pääset kaukana pääohjaimesta. Ne toimivat 2,6 GHz: llä (sama kuin WiFi toimii)

Aiemmissa projekteissani olen käyttänyt Piezoa värähtelyyn, mutta nyt tärinäanturikytkintä käytetään, mutta voit silti käyttää Piezoa, jos olet tehnyt vanhan versioni tästä pelistä.

Pelissä on 7 Raspberry Pi -kosketusnäyttö, joka pitää pelin hallitsemasi verkkojärjestelmän. Terminaalitulostin tulostaa tulokset.

Tarvikkeet

Lähettimet:

  • X Atmega328 ja Arduino Bootloader (riippuen siitä, kuinka monta kohdetta)
  • X Värähtelyanturikytkin
  • X Sininen LED
  • X Vihreä LED
  • X Punainen Led
  • X 3,7v Li-Po-akku
  • X FC-75 Li-Po -laturimoduuli (tai muu malli)
  • X 100 uF kondensaattori
  • X Kotelot antureille
  • X LD1117V33 (Tekee turvallisen 3,3 V: n lähettimen)
  • X NRF24L01 -moduulit
  • X x 3220 ohmin vastukset (3 tarvitaan yhteen kohteeseen)
  • X 16 MHz kide
  • X x 2 Unplorized kondensaattorit 22 pF (2 tarvitaan yhteen kohteeseen)

Tärkein Arduino:

  • 1 Arduino (Nano tai Uno on suositeltavaa, vaatii USB: n)
  • 1 NRF24L01 -moduuli
  • 1 10 uF kondensaattori

Vadelma Pi: lle:

  • Raspberry Pi (käytin 3B: tä)
  • 7 "kosketusnäyttö
  • ATXRaspi (valinnainen mutta hyvä virtapainike)
  • RTCRaspi (valinnainen, mutta hyvä RTC -moduuli kellonajan ja päivämäärän säilyttämiseksi)
  • Terminaalitulostin (valinnainen, mutta tarvitaan tulostamiseen)
  • Viivakoodinlukija (USB -versio, joka toimii näppäimistön tavoin, valinnainen)
  • Hyvä 5 V: n teho (käytin vanhaa 12 V: n USB: tä, jonka teho oli 2,5 A)

Muu tavara:

  • 12v teho (minulla on yksi 12 Ah)
  • Verkkoliitäntä (helpottaa yhteyden muodostamista verkkoon)
  • Kaapelit

Vaihe 1: Langattomat anturit

Langattomat anturit
Langattomat anturit
Langattomat anturit
Langattomat anturit
Langattomat anturit
Langattomat anturit

Aloitetaan antureiden tekeminen. Käytän tähän peliin 4 anturia. Mutta voit helposti lisätä lisää antureita. Anturit kommunikoivat 4 -numeroisen koodin kanssa, kun pääjärjestelmä lähettää koodin, jolla toiminnolla oikean koodin anturi syttyy ja on valmis kohteeseen. Sininen valo ilmoittaa, että se on se tavoite, johon aiot osua.

Meillä on myös vihreä ja punainen led. Vihreä valo palaa aina ilmoittaakseen, että anturi on päällä. Punainen palaa vain, kun akun varaus on alle 3,1 V (se käyttää sirun sisäänrakennettua toimintoa laskeakseen, kuinka paljon akussa on.

Tärinäanturi on kytketty analogiseen nastaan ja lukee sen arvon. Kun arvo uppoaa, anturi havaitsee tärinän ja rekisteröimme osuman.

Kohteessa on vikaturvallisuustoiminto, joka tarkoittaa sitä, että et osu X sekunnissa (oletus on 15 sekuntia) tai jos lähetystä ei voida suorittaa, se palaa aloitusasentoon.

En aio selittää, miten aiot johdottaa, tarkista sähkölevy nähdäksesi, kuinka aiot tehdä sen. Yksi asia, joka ei ole siinä, on akku, virtakytkin ja laturi. Sinä päätät miten haluat sen.

TÄRKEÄÄ NRF24L+ -moduulista:

Voi olla tuskallista saada ne vakaiksi yhdistettynä hyvään voimaan ja eristyneisyyteen sen ympärillä, ja saat koodin toimimaan. Minulle 10 uF kondensaattori antaa minulle vakaan ja hyvän yhteyden, mutta kokeile ensin, jos tarvitset esimerkiksi 100 uF kondensaattoria. Kääri ne myös ensin muovikalvolla ja sitten alumiinifoliolla, jotta ne eivät häiritse

Myös koodissa tiedonsiirtonopeus ei tarvitse yli 250 Kb, joten se ei ole ongelma. Mutta PA: myRadio.setPALevel (RF24_PA_MIN);

Koodissa, jonka olen asettanut MIN: ksi (tämä on testin aikana), se on alin eikä käytä niin paljon virtaa, mutta kantama ei ole niin pitkä. Jos sinulla on vakaa ja hyvä teho, voit siirtyä RF24_PA_MAX -porttiin saadaksesi pisimmän kantaman, MUTTA he tarvitsevat GOOOOOD -vakaata virtaa siihen. Kokeile myös MATALA JA KORKEA (Vaihda vain MAX -teksti) nähdäksesi, saatko hyvän viestinnän. Lisäksi saat hyvän kantaman matalalla ja korkealla, ellet ole ampuja

Pidä myös lähettimet vähintään metrin etäisyydellä toisistaan, koska sulkeminen voi tehdä signaalin huonoksi

Testaa kommunikaatio jollakin ping -esimerkillä NRF24 -kirjastossa (linkki GitHubissa)

Koodissa sinun on asetettava kohteen yksilöllinen tunnistenumero:

int targID = 3401; // Tämä on kohdetunnus

int sendID = 2401; // Tämä on vastaustunnus

Siinä on myös 3 DEFINE -toimintoa:

#define DEBUG

#määritä AKKU

#define SHAKE // JOS RAKKAUSKYTKINTÄ KÄYTETÄÄN VANHAN PIEZON PAIKALLA

VIANETSINTÄ:

Testin aikana tämä on hyvä määritellä. Mutta kun asetat ne saataville, älä aktivoi niitä.

AKKU:

Jos et halua käyttää akun tarkistajaa kohteille, sinun on poistettava tämä määritelmä.

Ravista:

Jos olet rakentanut vanhan versioni, sinulla on pietsosensorit ja poista tämä saadaksesi oikean koodin heille.

ATMEGA328 -siru

Arduino -nanon sijaan päätin käyttää ATMEGA328 -sirua (Uno -käynnistyslataimen kanssa), ne on helppo ohjelmoida vain poistamalla siru Arduino Unosta ja lisäämällä tämä siru ja lähettämällä koodi. Tarkista sähköjärjestelmä, miten tavoitteet rakennetaan.

Koodi

Olen kirjoittanut koodin PlatformIO: lla Arduino IDE: n sijaan. Se on parempi ohjelmisto ohjelmoida sisään. Joten koodi on hieman erilainen. Suosittelen käyttämään tätä ohjelmistoa.

Kohde- ja lähetinlaatikko

Olen kiinnittänyt anturin ja sinisen ledin kohteeseen, ja 3, 5 mm: n phono -kaapelilla 2 m: llä liitän sen yhteen lähettimen laatikkoon, jossa on atmega -siru, akkulaturi ja vihreä ja punainen led. Näin suojataan sitä teräsluoteilta.

Vaihe 2: Pelin ohjain

Pelin ohjain
Pelin ohjain
Pelin ohjain
Pelin ohjain
Pelin ohjain
Pelin ohjain
Pelin ohjain
Pelin ohjain

Seuraavaksi meidän on tehtävä antureiden ohjain. Se on Arduino, joka käyttää NRF24L01 -moduulia kommunikoidakseen antureiden kanssa. Ei mitään muuta. Arduino kytketään sitten vadelmapi: n USB: llä toimimaan.

Näin se toimii. Se käyttää sarjaa tietääkseen mitä tehdä. Pi lähettää sarjakomentoja. Aluksi se lähettää asennuksen aikana, kuinka monta kohdetta olet lisännyt, ja kohteiden tunnistenumerot. Sitten se suorittaa testitoiminnon ja ilmoittaa vadelmapiille, jos he kommunikoivat keskenään.

Kun pelaat peliä, se lähettää pi: ltä minkä tyyppisen pelin ja kuinka monta kierrosta/osumaa käyttää. Se siitä.

On mahdollista käyttää NRF24L01 -moduuleja vadelmapi: ssä, mutta minulle Arduino on parempi vaihtoehto, en koskaan käytä niitä vadelmissa, joten en tiedä kuinka hyvin ne toimivat pitkällä aikavälillä

Siellä on tehomoduuli, joka käyttää 5 V: tä saadakseen oikean vakaan virran lähettimiin. Voit käyttää niitä kanssasi Arduino (katso kuva) nimi on Socket Adapter Module Board

Kun pelaat, kohteet aktivoituvat satunnaisesti yksi kerrallaan. Kun yksi osuu, toinen aktivoituu.

Testin aikana voit ottaa #DEFINE DEBUG -toiminnon käyttöön nähdäksesi, miten se toimii, mutta ei silloin, kun käytät sitä pi -tietokoneessa, se ei toimi silloin.

Lataa koodi GitHub -sivulta.

Vaihe 3: Raspberry Pi

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

Olemme nyt tulleet Raspberry Pi: hen.

Olen lisännyt joitain lisätoimintoja, jotta minulla voi olla virtapainike. ATXRaspi 3 on loistava moduuli, voit käynnistää, sammuttaa ja käynnistää pi uudelleen painikkeella. Myös RTCRaspi pitää kellonaika ja päivämäärä pi. Se mahdollisti myös vain verkkokaapelin liittämisen, jos minun on päivitettävä järjestelmä. Löydät ne Lowpowerlabista

Lämpötulostin, jonka löydät sparkfunista, ja viivakoodinlukija on saatavana Amazonista.

Pi -tietokone toimii kioskitilassa, joten selain avautuu käynnistyksen yhteydessä. Ensinnäkin pi -tietokoneessa on oltava PHP 7- ja mysql -verkkopalvelin. (Internetissä on paljon oppaita tähän)

HUOM: jos aiot käyttää lämpötulostinta, jossa on vadelma pi, jossa on sisäänrakennettu bluetooth, sinun on ensin poistettava se käytöstä

Python-komentosarja tarvitsee pyserialin ja asennat sen: sudo apt-get install python-serial

Asenna mysql toimimalla seuraavasti:

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

suso apt-get install pymysql

Nyt voit hallita Arduinoa sarjaliikenteen kautta ja myös päivittää mysql -tietokannan.

Seuraava vaihe on luoda python -komentosarja mysql -yhteyden muodostamiseksi.

Muuta kaikissa kolmessa python -komentosarjassa yhteys mysql -tietokantaan.

Seuraava askel on saada python -komentosarja käynnistymään.

On olemassa kolme python -käsikirjoitusta. Game.py on kaikista tärkein, jossa pelitoiminto on. Print.py tätä tarvitaan vain, jos aiot käyttää terminaalitulostinta. Ean.py tarvitaan vain, jos olet aiot käyttää viivakoodinlukijaa.

Voit tehdä niistä automaattisen käynnistyksen muokkaamalla:

sudo nano /etc/rc.local

ja lisää seuraava alareunaan ennen poistumista 0:

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

Muuta oikea paikka python -skriptillesi ja älä unohda & -merkkiä lopussa

Nyt meidän on tehtävä verkkoselaimelle kioskitila, poista ensin kohdistin:

sudo apt-get install unclutter

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

Etsi ja kommentoi tuosta tiedostosta:

@xscreensaver -no -splash # poista näytönsäästäjä kommentoimalla tämä rivi

Alla vielä lisäys:

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

Seuraava vaihe poistaa kaikki käynnistystekstit ja tavarat lisäämällä myös oman käynnistysnäytön täältä on pikaopas:

sudo nano /boot/config.txt ja alareunassa adddisable_splash = 1

Poista tekstiviesti roiskekuvan alla:

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

Etsi ja poista (tai kommentoi):

message_sprite = Sprite (); message_sprite. SetPosition (näytön leveys * 0,1, näytön korkeus * 0,9, 10000);

ja:

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

Poistamme nyt käynnistysviestit:

sudo nano /boot/cmdline.txt

korvaa "konsoli = tty1" sanalla "konsoli = tty3"

ja lisää rivin loppuun:

tilkka hiljainen plymouth.ignore-serial-consoles logo.nologo vt.global_cursor_default = 0

Ja korvaa pi splash omalla:

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

Nyt sinulla on oma mukautettu käynnistysnäyttö pelillesi. Pi -tietokoneesi on nyt valmis käsittelemään peliä, joten siirry seuraavaan vaiheeseen!

Vaihe 4: Asenna peli

Tässä vaiheessa olet luonut pelin.

Ensin sinun on määritettävä verkkojärjestelmä. Lataa tietokanta mysql -palvelimellesi. Tiedosto on include -kansiossa ja sen nimi on database.sql

Seuraava askel on muokata määritystiedostoa, joka löytyy kansion nimestä config.php Muuta tietokannan kirjautumistietoja, jotta komentosarja toimii.

Web -järjestelmä on monikielinen ja kirjoitettu englanniksi. Saatavilla on myös ruotsinkielinen käännös. Kielen lisäämiseksi tarvitset Poedit -nimisen ohjelmiston.

Jos haluat lisätä kieliä verkkojärjestelmään, sinun on muokattava i18n_setup.php ja lisättävä taulukkoon:

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

Myös oletuskielen vaihtamiseksi sinun on muutettava rivi 27: $ lang = 'en_US'; vaihda en_US -kieli.

kielitiedostot on sijoitettava alueille/LANGCODE/LC_MESSAGES/ja niiden on oltava nimellä main.mo (Vaihda kielikoodiksi oma kielesi)

vaihtaaksesi näppäimistön tiedostoissa selectplayers.php vaihdat kieltä: "en", // en for english sv for swedish layout: 'qwerty', // qwerty for english swedish-qwerty for swedish

Löydät ne linjoilta 218 ja 219

Käytettävissä olevat kielet ovat kansiossa: ištekit/js/näppäimistö/kielet ja asettelut ovat resursseissa/js/näppäimistö/asettelut ja lisäävät oikeat tiedostot riveille 118 ja 119 (korvaa siellä oleva kieli)

Lisää kohteita

Voit lisätä kohteita siirtymällä localhost/ admin/ -kohtaan ja napsauttamalla Lisää kohteita.

Sinun on lisättävä kohteen nimi ja yksilöllinen kohdetunnus ja lähetettävä tunnus, lisättävä niin monta kohdetta kuin sinulla on.

Lisää pelejä

Sinun on myös lisättävä joitain pelejä. Siirry localhost/ admin/ -kohtaan ja napsauta Lisää peli

Sinun on lisättävä pelille nimi, kuvaus, minimi- ja enimmäispelaajat, minkä tyyppinen peli, kuinka kova peli on välillä 1–5. Ja miten peli on, joten lisää pikapelipelissä kuinka monta osumaa (esimerkki 30) kuinka monta kierrosta (esimerkiksi 8) ja kuinka kauan he aikovat pelata (esimerkiksi 60 minuutin ajan)

Aloita peli

Kun käynnistät pelin, se suorittaa kohdetestauksen. Joten tavoitteiden on oltava päällä ennen pääjärjestelmän käynnistämistä. Jos kaikki läpäisevät testin, voit käyttää järjestelmää, mutta jos eivät, et voi käyttää sitä. Se yrittää kommunikoida, kunnes he saavat vastauksen.

Onnea

No siitä on kyse, jos haluat tukea ja tietoa koodin päivityksestä, seuraa tämän pelin Facebook -sivua, jotta voin vastata sinulle nopeasti. Linkit löydät ylhäältä täältä.

Suositeltava: