Përmbajtje:

Arduino Qitje Loja V3: 4 Hapa
Arduino Qitje Loja V3: 4 Hapa

Video: Arduino Qitje Loja V3: 4 Hapa

Video: Arduino Qitje Loja V3: 4 Hapa
Video: Уроки Ардуино. Управление нагрузкой в сети переменного тока 2024, Korrik
Anonim
Image
Image
Arduino Qitje Loja V3
Arduino Qitje Loja V3
Arduino Qitje Loja V3
Arduino Qitje Loja V3
Arduino Qitje Loja V3
Arduino Qitje Loja V3

Kjo lojë është për ju që përdorni airsoft ose co2 për të qëlluar në objektiva. Ashtë një lojë.

Për informacion të azhurnuar në lidhje me lojën dhe mbështetjen:

www.facebook.com/arduinoshooting/

Për faqen time në blog në lidhje me lojën:

shootinggameblog.wordpress.com

Për kodet në lidhje me lojën:

github.com/shootinggame82/Shooting-game-v3

Loja e xhirimit është x objektiva që janë pa tel, secili objektiv ka një sensor dridhjeje që ndjen dridhjen që merr kur bëhet një goditje. Sensorët pa tel janë një çip Atmega328 (çip Arduino Uno) dhe kanë rimbushje të baterisë Li-Po.

Kontrolluesi kryesor për këtë lojë kontrollohet nga një Arduino dhe kontrollohet Serial nga një Raspberry Pi.

Pra, si funksionon kjo lojë? Epo, janë 3 mënyra të lojës:

Koha e shpejtë: Luaj X raunde dhe gjuaj aq shpejt sa të mundesh në secilin objektiv.

Modaliteti kohor: Shkrepni sa më shumë objektiva në X sekonda.

Rapidfire: Shkrepni x xhirime në kohën më të shpejtë.

Sistemi na transmeton NRF24L01 për të marrë një distancë të mirë nga kontrolluesi kryesor. Ata punojnë në 2.6 GHz (njësoj si WiFi funksionon)

Në projektet e mia të kaluara unë kam qenë duke përdorur Piezo për dridhje, por tani përdoren Ndërruesi i sensorit të dridhjeve. Por ju ende mund të përdorni Piezo nëse keni bërë versionin tim të vjetër të kësaj loje.

Loja ka një ekran me prekje Raspberry Pi 7 që mban sistemin në internet që ju kontrolloni lojën përmes tij. Një printer terminal printon rezultatet.

Furnizimet

Për transmetuesit:

  • X Atmega328 me Arduino Bootloader (Në varësi të sa objektivave)
  • X Ndërruesi i sensorit të dridhjeve
  • X Blu e udhëhequr
  • X Green Led
  • X Red Led
  • Bateri X 3.7v Li-Po
  • Moduli i ngarkuesit X FC-75 Li-Po (Ose një model tjetër)
  • X 100 uF Kondensator
  • X Rastet për sensorët
  • X LD1117V33 (Bën një transmetues të sigurt 3.3 V)
  • X Modulet NRF24L01
  • Rezistenca X x 3 220 Ohm (3 nevojiten për një objektiv)
  • Kristal 16 MHz
  • X x 2 Kondensatorë të paplorizuar 22 pF (2 nevojiten për një objektiv)

Për Arduino kryesore:

  • 1 Arduino (rekomandohet Nano ose Uno, duhet të keni USB)
  • 1 Modul NRF24L01
  • 1 kondensator 10 uF

Për mjedrën Pi:

  • Raspberry Pi (kam përdorur 3B)
  • Ekran me prekje 7"
  • ATXRaspi (Opsionale, por një modul i mirë i butonit të energjisë)
  • RTCRaspi (Opsionale por një modul i mirë RTC për të mbajtur kohën dhe datën)
  • Printer termal (Opsional, por i nevojshëm për të qenë në gjendje të printoni)
  • Skaneri i barkodit (versioni USB që funksionon si tastierë, Opsionale)
  • Fuqi e mirë 5V (kam përdorur një USB të vjetër 12v me fuqi 2.5 A)

Gjëra të tjera:

  • Fuqia 12v (kam një në 12 Ah)
  • Foleja e rrjetit (Bëjeni të lehtë lidhjen me Rrjetin)
  • Kabllot

Hapi 1: Sensorët pa tela

Sensorët pa tela
Sensorët pa tela
Sensorët pa tela
Sensorët pa tela
Sensorët pa tela
Sensorët pa tela

Le të fillojmë të bëjmë sensorë. Unë përdor 4 sensorë për këtë lojë. Por ju lehtë mund të shtoni më shumë sensorë. Sensorët komunikojnë me kodin e 4 numrave kur sistemi kryesor dërgon kodin me çfarë funksioni do të ndizet sensori me kodin e duhur dhe do të jetë gati për objektivin. Drita blu është për të informuar se është ai objektiv që do të godisni.

Ne gjithashtu kemi një led të gjelbër dhe të kuq. E gjelbër ndizet gjithmonë për të informuar se sensori është ndezur. E kuqja do të ndizet vetëm kur bateria është më pak se 3.1V (përdor funksionin e integruar në çip për të llogaritur sasinë e baterisë.

Sensori i dridhjeve është i lidhur me kunjin analog dhe lexon vlerën e tij. Kur vlera po bie, sensori ka një dridhje dhe kjo është ajo ku ne regjistrojmë goditjen.

Objektivi ka një funksion të dështuar, i cili nuk ju godet në X sekonda (parazgjedhja është 15 sek) ose nëse transmetimi nuk mund të bëhet në, ata do të kthehen në pozicionin e fillimit.

Unë nuk do të shpjegoj se si do të lidhni, kontrolloni fletën elektrike për të parë se si do ta bëni këtë. Një gjë që nuk është në të, është bateria, ndërprerësi i energjisë dhe ngarkuesi. Varet nga ju që të vendosni se si dëshironi.

RMPNDSIM POUR Modulin NRF24L+:

Mund të jetë dhimbje në… për t'i bërë ato të qëndrueshme, të kombinuara me fuqi të mirë dhe izolim rreth tij, dhe kodin që do t'i vini në punë. Për mua, kondensatori 10 uF do të më japë një lidhje të qëndrueshme dhe të mirë, por ju lutemi provoni së pari nëse keni nevojë për shembull, për shembull, një kondensator 100 uF. Gjithashtu mbështilleni me fletë plastike së pari dhe më pas me letër alumini për t'i mbrojtur nga ndërhyrja

Gjithashtu në kod, shpejtësia e të dhënave nuk ju nevojitet më shumë se 250 Kb, kështu që nuk do të jetë problemi. Por PA: myRadio.setPALevel (RF24_PA_MIN);

Në kodin që kam vendosur në MIN (Ky është gjatë provës), është më i ulëti dhe nuk do të përdorë aq shumë energji, por diapazoni nuk do të jetë aq i gjatë. Nëse keni fuqi të qëndrueshme dhe të mirë për ta, mund të shkoni deri në RF24_PA_MAX për të marrë distancën më të gjatë, POR ata kanë nevojë për fuqi të qëndrueshme GOOOOOD për këtë. Provoni gjithashtu LOW DHE LART HIGH (Ndryshoni vetëm tekstin MAX) për të parë nëse keni komunikim të mirë. Gjithashtu do të keni një distancë të mirë në LOW dhe HIGH, nëse nuk do të jeni snajper

Gjithashtu mbani transmetuesit të paktën një metër larg, për t'u mbyllur mund ta bëjë sinjalin të keq

Provoni komunikimin me ndonjë shembull ping në Bibliotekën NRF24 (Lidhje në GitHub)

Në kodin ju duhet të vendosni numrin unik identifikues për atë objektiv:

int targID = 3401; // Ky është ID -ja e synuar

int sendID = 2401; // Ky është ID -ja e përgjigjes

Ekzistojnë gjithashtu 3 funksione DEFINE:

#përcakto DEBUG

#përcakto BATERIN

#define SHAKE // NFSE SHPERNDARSIT SHPAKRNDALS PRDORET PSTR PIEZO TLD VJETR

DEBUG:

Gjatë testit kjo është mirë të përcaktohet. Por kur i vini në dispozicion, mos e aktivizoni.

BATERIA:

Nëse nuk doni të keni një kontrollues të baterisë për objektivat, duhet ta hiqni këtë përcaktim.

TREQI:

Nëse keni ndërtuar versionin tim të vjetër, keni sensorë piezo, atëherë hiqeni këtë për të marrë kodin e duhur për ta.

Çipi ATMEGA328

Në vend të një Arduino nano vendosa të përdor çipin ATMEGA328 (me ngarkuesin Uno boot), ato janë të thjeshta për tu programuar thjesht hiqni çipin nga një Arduino Uno dhe shtoni këtë çip dhe ngarkoni kodin. Kontrolloni skemën elektrike se si të ndërtoni objektivat.

Kodi

Unë kam shkruar kodin me PlatformIO në vend të Arduino IDE. Softwareshtë një program më i mirë për tu programuar. Pra, kodi është pak më ndryshe. Unë rekomandoj që të përdorni këtë softuer në vend.

Kutia e Synimit dhe Transmetuesit

Unë kam bashkuar sensorin dhe blu blu në shënjestër, dhe me një kabllo fono 3, 5 mm në 2 m e lidh atë së bashku në kutinë e transmetuesit që mban çipin atmega, ngarkuesin e baterisë dhe atë të gjelbër dhe të kuq. Kjo është kështu për ta mbrojtur atë nga goditja me plumba çeliku.

Hapi 2: Kontrolluesi i lojës

Kontrolluesi i lojës
Kontrolluesi i lojës
Kontrolluesi i lojës
Kontrolluesi i lojës
Kontrolluesi i lojës
Kontrolluesi i lojës
Kontrolluesi i lojës
Kontrolluesi i lojës

Gjëja tjetër që duhet të bëjmë është të bëjmë kontrolluesin për sensorët. Anshtë një Arduino që përdor një modul NRF24L01 për të komunikuar me sensorët. Asgje tjeter. Arduino lidhet më pas me USB në mjedër pi për të punuar.

Kështu do të funksionojë. Ai përdor serialin për të ditur se çfarë të bëjë. Pi do të dërgojë komanda serike. Së pari gjatë konfigurimit ai dërgon sa objektiva keni shtuar dhe numrat identifikues të objektivave. Pastaj do të bëjë funksionin e testimit dhe do të informojë pi mjedrën nëse ata komunikojnë me njëri -tjetrin.

Kur luani lojën, ajo do të dërgojë nga pi se çfarë lloj loje dhe sa raunde/goditje të përdorni. Kjo eshte.

Itshtë e mundur të përdoren modulet NRF24L01 në mjedër pi, por për mua Arduino është një opsion më i mirë mëkatet Unë kurrë nuk i përdor ato në mjedër kështu që nuk e di sa mirë funksionojnë në një afat të gjatë

Ekziston një modul energjie që përdor 5 v për të bërë fuqi korrekte të qëndrueshme për transmetuesit. Ju mund t'i përdorni ato me ju Arduino (Shih foton) emri është Socket Adapter Module Board

Kur luani objektivat do të aktivizohen rastësisht një nga një. Kur njëra goditet, një tjetër do të aktivizohet.

Gjatë testit mund të aktivizoni #DEFINE DEBUG për të parë se si funksionon, por jo kur e përdorni në kompjuterin pi, nuk do të funksionojë atëherë.

Shkarkoni kodin në faqen GitHub.

Hapi 3: Raspberry Pi

Mjedër Pi
Mjedër Pi
Mjedër Pi
Mjedër Pi
Mjedër Pi
Mjedër Pi
Mjedër Pi
Mjedër Pi

Ne tani kemi ardhur në Raspberry Pi.

Kam shtuar disa funksione shtesë në mënyrë që të kem një buton të energjisë. ATXRaspi 3 është një modul i shkëlqyeshëm, mund ta ndizni, fikni dhe rindizni pi me një buton. Gjithashtu një RTCRaspi për të mbajtur kohën dhe datën në pi. Gjithashtu bëri të mundur që thjesht të shtoj një kabllo rrjeti në rast se më duhet të bëj disa përditësime në sistem. Do t'i gjeni në Lowpowerlab

Printeri termik që do të gjeni në sparkfun dhe lexuesi i barkodit është i disponueshëm në amazon.

Kompjuteri Pi funksionon në modalitetin kiosk kështu që shfletuesi do të hapet në fillim. Para së gjithash ju duhet të keni një server në internet me PHP 7 dhe mysql në kompjuterin pi. (Ka shumë udhëzues në internet për këtë)

JU LUTEM KUJDES: nëse do të përdorni printer termik me mjedër pi që ka ndërtuar bluetooth, duhet së pari ta çaktivizoni atë

Skenari python ka nevojë për pyserial dhe ju e instaloni atë: sudo apt-get install python-serial

Për ta bërë punën mysql instaloni sa vijon:

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

suso apt-get install pymysql

Tani mund të kontrolloni Arduino përmes serialit dhe gjithashtu të azhurnoni bazën e të dhënave mysql.

Hapi tjetër është krijimi i shkrimit python për t'u lidhur me mysql.

Në të tre shkrimet python ndryshoni lidhjen me bazën tuaj të të dhënave mysql.

Hapi tjetër është që shkrimi python të funksionojë në fillim.

Ekzistojnë tre skema python.game.py është më e rëndësishmja nga të gjitha, që një mban funksionin e lojës. Print.py kjo është e nevojshme vetëm nëse do të përdorni printer termal për të printuar. Ean.py është e nevojshme vetëm nëse jeni do të përdor skanerin e barkodit.

Për t'i bërë ato të fillojnë automatikisht, unë redaktoj:

sudo nano /etj/rc.local

dhe shtoni sa vijon në fund para daljes 0:

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

Ju lutemi ndryshoni në vendin e duhur për shkrimin tuaj python dhe mos harroni shenjën & në fund

Tani ne duhet të bëjmë një mënyrë kiosk për shfletuesin e uebit, së pari hiqni kursorin:

sudo apt-get install unclutter

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

tani në atë skedar gjeni dhe komentoni:

@xscreensaver -no -splash # komentoni këtë rresht për të çaktivizuar mbrojtësin e ekranit

Më poshtë shtoni:

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

Hapi tjetër për të hequr të gjitha tekstet dhe sendet e nisjes, gjithashtu shtoni ekranin tuaj të nisjes këtu është një udhëzues i shpejtë:

sudo nano /boot/config.txt dhe në fund adddisable_splash = 1

Hiq mesazhin me tekst nën imazhin e spërkatjes:

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

Gjeni dhe hiqni (ose komentoni):

message_sprite = Sprite (); message_sprite. SetPosition (gjerësia e ekranit * 0.1, lartësia e ekranit * 0.9, 10000);

dhe:

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

Tani ne heqim mesazhet e nisjes:

sudo nano /boot/cmdline.txt

zëvendësoni "tastierë = tty1" me "tastierë = tty3"

dhe në fund të rreshtit shtoni:

spërkatje e qetë plymouth.ignore-serial-consoles logo.nologo vt.global_cursor_default = 0

Dhe zëvendësoni spërkatjen pi me tuajin:

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

Tani ju keni ekranin tuaj personal të nisjes për lojën tuaj. Kompjuteri juaj pi tani është gati për të trajtuar lojën. Pra, kaloni në hapin tjetër!

Hapi 4: Konfiguroni lojën

Në këtë pikë ju tani e keni krijuar lojën.

Së pari ju duhet të bëni është të konfiguroni sistemin e uebit. Ngarkoni bazën e të dhënave në serverin tuaj mysql. Skedari është në dosjen e përfshirë dhe me emrin database.sql

Hapi tjetër është të redaktoni skedarin e konfigurimit, e gjeni në emrin e dosjes përfshin config.php Ndryshoni informacionin e hyrjes në bazën e të dhënave në mënyrë që skripti të funksionojë.

Sistemi i uebit bazohet në shumë gjuhë dhe është i shkruar në gjuhën angleze. Ekziston një përkthim suedez. Për të bërë më shumë gjuhë, keni nevojë për një softuer të quajtur Poedit.

Për të shtuar më shumë gjuhë në sistemin e uebit, duhet të redaktoni i18n_setup.php dhe të shtoni në grup:

kthimi in_array ($ locale, ['en_US', 'sv_SE']); (Linja 23)

Gjithashtu për të ndryshuar gjuhën e paracaktuar ju duhet të ndryshoni në rreshtin 27: $ lang = 'en_US'; ndryshoni en_US në gjuhën tuaj.

skedarët e gjuhës duhet të vendosen në locale/LANGCODE/LC_MESSAGES/dhe të emërtohen main.mo (Ndrysho kodin e gjuhës në gjuhën tuaj)

për të ndryshuar tastierën në skedar selectplayers.php ju ndryshoni gjuhën: "en", // en për anglisht sv për paraqitjen suedeze: 'qwerty', // qwerty për anglisht suedisht-qwerty për suedisht

I gjeni në linjën 218 & 219

Gjuhët në dispozicion janë në dosje: asetet/js/tastiera/gjuhët dhe paraqitjet janë në asetet/js/tastiera/paraqitjet dhe shtoni skedarët e duhur në rreshtat 118 dhe 119 (zëvendësoni atë që gjeni atje tani)

Shtoni objektiva

Për të shtuar objektiva, shkoni te localhost/ admin/ dhe klikoni në shtimin e objektivave.

Ju duhet të shtoni një emër për objektivin dhe ID unike të synuar dhe të dërgoni ID, shtoni sa më shumë objektiva që keni.

Shtoni lojëra

Ju gjithashtu duhet të shtoni disa lojëra. Shkoni te localhost/ admin/ dhe klikoni në shtimin e lojës

Ju duhet të shtoni një emër për lojën, një përshkrim, min dhe max lojtarët se çfarë lloji të lojës, gjithashtu sa e vështirë është loja mes 1 deri në 5. Dhe si është loja, kështu që për lojën me shpejtësi të shpejtë shtoni sa goditje (shembull 30) për shortdraw sa raunde (për shembull 8) dhe për kohën sa kohë do të luajnë (për shembull 60 për një minutë)

Filloni lojën

Kur ta ndizni lojën, do të bëjë testimin e synuar. Pra, objektivat duhet të jenë para se të filloni sistemin kryesor. Nëse të gjithë kalojnë testin, mund ta përdorni sistemin, por nëse jo, nuk mund ta përdorni. Do të përpiqet të komunikojë derisa ata të marrin përgjigje.

Paç fat

Epo kjo është për të, për mbështetje dhe informacion në lidhje me azhurnimin në kod, ju lutemi ndiqni faqen time në Facebook për këtë lojë, kështu që unë mund t'ju përgjigjem shpejt. Këtu do të gjeni lidhjet në krye.

Recommended: