Pildista kasti: 8 sammu
Pildista kasti: 8 sammu
Anonim
Pildista kasti
Pildista kasti
Pildista kasti
Pildista kasti

Capture The Box on meeskonnatöö mäng, mida saate mängida oma naabruskonna sõpradega.

Eesmärk on kast hõivata ja hoida seda võimalikult kaua teie valduses, samal ajal kui teised mängijad üritavad seda teie verandalt või eesaiast eemale hiilida.

See mäng kasutab kasti leidmiseks GPS -i ja mängijate tuvastamiseks RFID -silte. Valikulise LDR -i saab lisada, et sobitada punktmaatriksi kuva intensiivsus valguse protsendiga piirkonnas.

Tarvikud

Mikrokontrollerid ja arvutid

  • Vaarika Pi
  • Arduino (Mega) Valisin tavalise Uno asemel Arduino Mega, kuna sellel on palju rohkem nööpnõelu. See on vajalik, kuna kasutame Dragino LoRa kilpi, mis jätaks meile UNO kasutamisel liiga vähe digitaalseid tihvte. NÕUANNE: Parim on kasutada ehtsat, sest Hiina kloonid ei tööta alati ootuspäraselt.

Andurid ja moodulid

  • 4 MAX7219 punktmaatriksi moodulit Ühendage DOUT DIN -iga, CS -CS -ga, CLK -CLK -ga…
  • Valgusõltuv takisti (10K) + takisti (10K)
  • NEO-7M (või sarnane) GPS-moodul Kasutan Vellemani mudelit VMA430
  • RC522 RFID -moodul+ mõned RFID -märgid/kaardid

LoRa (traadita tehnoloogia) kasutamiseks

Dragino Lora kilp

Valikulised andurid ja moodulid

LCD -ekraan Raspberry Pi IP -aadressi kuvamiseks

Testi seadistamiseks

Leivalaud ja Duponti kaablid (mees-mees)

Valikuline (korpus)

  • Jootekolb
  • Vana tööriistakott
  • Materjalid 3D printimiseks
  • Mõned õhukesed puidust plangud
  • Mõned poldid ja mutrid (mis mahuvad Arduino aukudesse). Minu kruvide läbimõõt on umbes 3 mm.

Hinnangulise hinna leiate materjalide nimekirjast (BOM), mis on toodud allpool.

Samm: Raspberry Pi seadistamine

Vaarika Pi on projekti süda.

See käivitab kasutajaliidese, taustaprogrammi ja andmebaasi. See vastutab ka taustaprogrammi ja Arduino vahelise suhtluse eest.

Raspberry Pi kasutamiseks peame tegema järgmist.

Osa 1: Raspbiani installimine Raspberry Pi -sse

Õpetuse selle kohta, kuidas seda teha, leiate siit:

Osa 2: Raspbiani installimine Raspberry Pi -sse Koduse WiFi seadistamine.

Seda saab teha, kasutades wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Taaskäivitage Pi ja ifconfig sisestamisel peaksite nägema IP -aadressi

Osa 3: Installige veebiserver ja andmebaas

Kui olete oma Pi käivitanud, on parem oma parooli muuta. Seda saab teha käsuga passwd.

Kui see on tehtud, jätkake ja installige Apache, PHP, MariaDB ja PHPMyAdmin.

Apache, PHP sudo apt install apache2 -y sudo apt install php libapache2 -mod -php -y

MariaDB sudo apt install mariadb-server mariadb-client -y sudo apt install php-mysql -y sudo systemctl taaskäivitage apache2.service

PHPMyAdminsudo apt install phpmyadmin -y

Ärge unustage määrata turvalist MySQL -i parooli.

4. osa: vajalike Pythoni teekide installimine

Taustprogrammi jaoks vajame mõnda raamatukogu. Neid saab installida käsuga pip3.

pip3 installige mysql-connector-python

pip3 paigaldage kolb-pistikupesa

pip3 paigaldage kolvid

pip3 install geventpip3 install gevent-websocket

pip3 install ttn

2. samm: elektroonika paigutamine

Elektroonika paigutamine
Elektroonika paigutamine
Elektroonika paigutamine
Elektroonika paigutamine

Selle projekti toimimiseks peame ühendama kogu elektroonika.

LoRa kilbi saab hõlpsasti paika panna. Lihtsalt joondage tihvtid Arduino tihvtidega.

Teisi ühendusi kirjeldatakse minu Fritzingi skeemis. Mida saab alla laadida siit:

3. samm: andmebaasi kujundamine

Andmebaasi kujundamine
Andmebaasi kujundamine

Mängu ja andurite andmete salvestamiseks tegin mõned tabelid:

Mõõtmised anduritelt, mis on leitud andurite tabelitest. See sisaldab viidet andurile, mõõtmise väärtust (nt coördinaadid: 51.123456; 3.123456) ja valikulist mängu ID -d (kui mäng oli mõõtmise ajal aktiivne).

Mängija nimed ja nende RFID -märgi UID. Lisatud on valikuline välja moderaator, see inimene saab mängu muuta (nt peatada see enne tähtaega).

mängu teave (algus ja lõpp).

spel_has_spelerSuhe speli ja speleri vahel Siin määratakse mängijad mängule.

selles tabelis salvestatakse skoor. See sisaldab mängu ID -d, mängija ID -d, kella kasti varastamise ja kaotamise aega (kui keegi teine selle varastab või kui mäng lõpeb). Lahutades algusaja lõpuajast, saate arvutada skoori, mille ta sellest püüdmisest sai.

Andmebaasi ekspordi leiate minu GitHubist (https://github.com/BoussonKarel/CaptureTheBox)

Avage sql rakenduses PHPMyAdmin / MySQL Workbench ja käivitage see. Nüüd tuleks andmebaas importida.

Samm: konto seadistamine TTN -is

Samm: registreerige TTN -i konto ja looge rakendus

Registreeruge konto jaoks TheThingsNetwork, seejärel valige Konsool> Lisa rakendus.

Valige oma rakendusele nimi ja klõpsake nuppu Lisa rakendus.

Samm: registreerige seade

Kui olete oma rakenduse koostanud, minge jaotisse Seadme registreerimine.

Valige seadme ID, see võib olla ükskõik milline (kui see on maduümbris) ja klõpsake nuppu Registreeri.

Klõpsake seadme EUI all ikooni Loo, nii et TTN genereerib selle teie jaoks.

Samm: kirjutage oma mandaat üles

Nüüd minge oma seadme juurde ja klõpsake seadme EUI, rakenduse EUI ja rakenduse võtme kõrval olevat ikooni Kood. Nüüd peaks see ilmuma baitide massiivina.

Enne kopeerimist klõpsake nuppu Vaheta ja veenduge, et teie arendaja EUI ja rakenduse EUI on ESIMENE LSB.

Teie rakenduse võti peaks jääma ESIMENE MSB (ärge seda muutke).

Neid võtmeid vajate järgmises etapis: Arduino seadistamine.

Samm: kirjutage oma rakenduse juurdepääsuvõti alla

Nüüd vajame meie Raspberry Pi -l MQTT seadistamiseks veel ühte võtit.

Minge oma rakendusse ja kerige alla juurdepääsuvõtmeteni.

Seda vajate taustaprogrammi etapis.

Samm: Arduino seadistamine

Arduino koodi leiate ka minu GitHubist, Arduino alt (https://github.com/BoussonKarel/CaptureTheBox)

See kood on jaotatud mitmeks vaheleheks, et seda korrastada.

Main.ino Põhikood: pin deklaratsioonid, setup () ja loop ()

0_LoRa.inoSee kood haldab suhtlust LoRa abil.

See paneb LDR-, GPS- ja RFID -märgendite andmed 13 -baidisesse massiivi ja saadab need saidile TheThingsNetwork.

1_LDR.inoKasutades analogRead (), mõõdab see valgussõltuva takisti pinget.

Seejärel teisendatakse see valguse protsendiks (0 pole midagi, 100 on mobiiltelefoni taskulamp).

2_GPS.inoSee kasutab jadaühendust, kasutades TX1 ja RX1 (Serial1).

See kasutab kasti laius- ja pikkuskraadi leidmiseks NMEA sõnumeid (täpsemalt $ GPRMC sõnumeid).

Kasutades MFRC522 raamatukogu, otsib see kood uusi RFID -silte. Kui see on olemas, salvestab see koodina RFID_lastUID.

4_DotMatrix.inoSeda koodi kasutatakse punktmaatriksi kuva initsialiseerimiseks ja seadistamiseks. See sisaldab laadimisanimatsiooni definitsioone jne …

Selle seadistamine

Enne selle koodi Arduinole üleslaadimist peate installima mõned teegid.

Matthijskooijmani Arduino-LMIC raamatukogu (https://github.com/matthijskooijman/arduino-lmic)

RFID -lugeja raamatukogu MFRC522 (https://github.com/miguelbalboa/rfid)

Nüüd minge saidile main.ino ja muutke DEVEUI, APPEUI ja APPKEY nendeks, mille kopeerisite viimases etapis.

6. samm: taustaprogrammi seadistamine

Selle projekti taustaprogrammi leiate minu GitHubi jaotisest RPI> Taustaprogramm (https://github.com/BoussonKarel/CaptureTheBox).

Kuidas see töötab?

  1. Iga 10 sekundi järel otsib kood aktiivset mängu. Kui see leitakse, salvestatakse see muutuja nimega huidigSpel (currentGame)
  2. Kui režiim on seerianumber, kasutatakse Arduino ja Pi vahel kaablit. Pi küsib LDR -i ja GPS -i väärtusi. Arduino vastab JSON -vormingus. RFID -sildid saadetakse alati, kui need esitatakse. Seda režiimi kasutati ainult arenduseesmärkidel ja see pole enam vajalik.
  3. Kui režiimiks on määratud LoRa, luuakse MQTT klient, mis käivitab tagasihelistamise iga kord, kui TTN võtab vastu LoRa andmeid. See sisaldab LDR-, GPS- ja RFID -andmeid.
  4. Kasutajaliides saab andmeid hankida API lõpp -punktide abil. Enamik andmeid saadakse huidigSpel.id abil. Andmed tagastatakse JSON -vormingus, kasutades jsonify ()

Avage saladused.py ja sisestage oma LoRa rakenduse nimi ja juurdepääsuvõti (kirjutasite varem üles).

Minge aadressile config.py ja täitke oma andmebaasi mandaat (nt parool, kasutaja …)

Proovige käivitada app.py, kui olete kinnitanud, et see töötab, saame seda teenusena kasutada. See käivitab koodi automaatselt pi taustal käivitamisel.

Selleks kopeerige ctb_service.service aadressile /etc/systemd/system/ctb_service.service. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service

Nüüd lubage see, kasutades systemctl enable ctb_service.service

Kui peate koodis mõningaid muudatusi tegema, saate selle hõlpsalt peatada, kasutades systemctl stoppi (see käivitub uuesti taaskäivitamisel) või keelata (peatada selle automaatne käivitamine), kasutades systemctl disable.

Kui teil on vaja logidega tutvuda (vigade tõttu), võite kasutada journalctl -u ctb_service.service.

Lisateavet teenuste kohta leiate siit:

Samm: kasutajaliidese seadistamine

Nagu tavaliselt, leiate kasutajaliidese minu GitHubist, RPI> Frontend (https://github.com/BoussonKarel/CaptureTheBox)

Kleepige see oma Raspberry Pi kausta /var /html.

See sisaldab kõiki mängu jaoks vajalikke veebilehti.

See sisaldab ka skripti taustaprogrammiga suhtlemiseks (nii reaalajas kui ka API lõpp -punktide abil).

Samm: korpuse lisamine

Korpuse lisamine
Korpuse lisamine
Korpuse lisamine
Korpuse lisamine

Korpuse jaoks kasutasin vana tööriistaümbrist koos järgmiste materjalide/tehnikatega:

  • 3D printimine
  • Vaht aku paigal hoidmiseks
  • Taaskasutatud puidust plangud
  • Kuum liim
  • Kruvid ja mutrid

See, mida te oma juhtumiga teete, on teie valik! Ma annan teile kunstilise vabaduse.

Inspiratsiooni saamiseks olen lisanud mõned fotod oma (valmis) ümbrisest.