Sisällysluettelo:

Tallenna laatikko: 8 vaihetta
Tallenna laatikko: 8 vaihetta

Video: Tallenna laatikko: 8 vaihetta

Video: Tallenna laatikko: 8 vaihetta
Video: Lapsi soittaa 112 2024, Heinäkuu
Anonim
Ota laatikko kiinni
Ota laatikko kiinni
Ota laatikko kiinni
Ota laatikko kiinni

Capture The Box on tiiminrakennuspeli, jota voit pelata naapurustosi ystävien kanssa.

Tavoitteena on kaapata laatikko ja pitää se hallussasi mahdollisimman pitkään, kun taas muut pelaajat yrittävät mennä ja hiipiä sen pois kuistilta tai etupihalta.

Tämä peli käyttää GPS: ää paikantaakseen laatikon ja RFID -tunnisteet pelaajien tunnistamiseksi. Valinnainen LDR voidaan lisätä vastaamaan pistematriisinäytön voimakkuutta alueen valoprosentin kanssa.

Tarvikkeet

Mikro -ohjaimet ja tietokoneet

  • Raspberry Pi
  • Arduino (Mega) Valitsin Arduino Megan tavallisen Unon sijaan, koska siinä on paljon enemmän nastoja. Tämä on tarpeen, koska käytämme Dragino LoRa -suojaa, joka jättäisi meille liian vähän digitaalisia nastoja UNO: ta käytettäessä. VIHJE: On parasta käyttää aitoa, koska kiinalaiset kloonit eivät aina toimi odotetulla tavalla.

Anturit ja moduulit

  • 4 MAX7219 -pistematriisimoduulia Yhdistä DOUT -DIN, CS -CS, CLK -CLK …
  • Valosta riippuvainen vastus (10K) + vastus (10K)
  • NEO-7M (tai vastaava) GPS-moduuli Käytän Vellemanin VMA430-laitetta
  • RC522 RFID -moduuli+ joitain RFID -merkkejä/kortteja

LoRan (langaton tekniikka) käyttämiseen

Dragino Loran kilpi

Valinnaiset anturit ja moduulit

Nestekidenäyttö Raspberry Pi: n IP -osoitteen näyttäminen

Testi -asetusten tekemiseen

Leipälauta ja Dupont-kaapelit (uros-uros)

Valinnainen (kotelo)

  • Juotin
  • Vanha työkalukotelo
  • Materiaalit 3D -tulostukseen
  • Jotkut ohuet puulaudat
  • Jotkut pultit ja mutterit (jotka mahtuvat Arduinon reikiin). Ruuvien halkaisija on noin 3 mm.

Arvioitu hinta löytyy alla olevasta materiaaliluettelosta (BOM).

Vaihe 1: Asenna Raspberry Pi

Raspberry Pi on projektin sydän.

Se suorittaa etu-, tausta- ja tietokannan. Se vastaa myös kommunikoinnista taustaohjelman ja Arduinon välillä.

Jotta voimme käyttää Raspberry Pi -laitetta, meidän on tehtävä seuraavat toimet:

Osa 1: Asenna Raspbian Raspberry Pi -laitteeseen

Opetusohjelma sen tekemiseen löytyy täältä:

Osa 2: Asenna Raspbian Raspberry Pi -laitteeseen Koti -WiFi: n määrittäminen.

Tämä voidaan tehdä käyttämällä wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Käynnistä Pi uudelleen ja näet IP -osoitteen, kun kirjoitat ifconfig

Osa 3: Asenna verkkopalvelin ja tietokanta

Kun Pi on käynnissä, on parasta vaihtaa salasana. Tämä voidaan tehdä komennolla passwd.

Kun olet valmis, asenna 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 käynnistä apache2.service

PHPMyAdminsudo apt asentaa phpmyadmin -y

Älä unohda asettaa suojattua MySQL -salasanaa.

Osa 4: Tarvittavien Python -kirjastojen asentaminen

Taustaohjelmaa varten tarvitsemme joitain kirjastoja. Ne voidaan asentaa pip3 -komennolla.

pip3 asenna mysql-connector-python

pip3 asentaa flask-socketio

pip3 asenna kolvipurkit

pip3 install geventpip3 asenna gevent-websocket

pip3 asenna ttn

Vaihe 2: Elektroniikan asettaminen

Elektroniikan asettaminen
Elektroniikan asettaminen
Elektroniikan asettaminen
Elektroniikan asettaminen

Jotta tämä projekti toimisi, meidän on yhdistettävä kaikki elektroniikka.

LoRa -suoja voidaan asentaa helposti paikalleen. Kohdista nastat Arduinon tappeihin.

Muut liitännät on kuvattu Fritzing -kaaviossa. Joka voidaan ladata täältä:

Vaihe 3: Tietokannan suunnittelu

Tietokannan suunnittelu
Tietokannan suunnittelu

Pelin ja antureiden tietojen tallentamiseksi tein muutaman taulukon:

mittaus ja anturi Anturien mittaukset, jotka löytyvät anturitaulukoista. Se sisältää viittauksen anturiin, mittauksen arvon (esim. coördinaatit: 51.123456; 3.123456) ja valinnaisen pelitunnuksen (jos peli oli aktiivinen mittauksen aikana).

Pelaajan nimet ja RFID -tunnuksen UID. Valinnainen kenttävalvoja lisätään, tämä henkilö voi muokata peliä (esim. Pysäyttää sen ennen aikoja).

pelin tiedot (aloitus- ja päättymisaika).

spel_has_speler Spelin ja spelerin välinen suhde. Tässä pelaajat määrätään peliin.

Tässä taulukossa pisteet tallennetaan. Se sisältää pelin tunnuksen, pelaajan tunnuksen, ajan, jolloin hän varasi laatikon ja ajan, jonka hän menetti (kun joku muu varastaa sen tai kun peli päättyy). Vähentämällä aloitusajan päättymisajasta voit laskea pisteet, jotka hän sai kyseisestä kaappauksesta.

Tietokannan vienti löytyy GitHubista (https://github.com/BoussonKarel/CaptureTheBox)

Avaa sql PHPMyAdmin / MySQL Workbench -ohjelmassa ja suorita se. Tietokanta on nyt tuotava.

Vaihe 4: Tilin määrittäminen TTN: ssä

Vaihe 1: Hanki tili TTN: lle ja luo sovellus

Hanki tili TheThingsNetworkissa ja valitse sitten Konsoli> Lisää sovellus.

Valitse sovelluksellesi nimi ja napsauta Lisää sovellus.

Vaihe 2: Rekisteröi laite

Kun olet tehnyt hakemuksesi, siirry kohtaan Rekisteröi laite.

Valitse laitetunnus, tämä voi olla mitä haluat (niin kauan kuin se on käärmelaukku) ja napsauta Rekisteröidy.

Napsauta Luo -kuvaketta laitteen EUI -kohdassa, niin TTN luo sellaisen sinulle.

Vaihe 3: Kirjoita kirjautumistietosi muistiin

Siirry nyt laitteeseesi ja napsauta Koodi -kuvaketta Laitteen EUI, Sovelluksen EUI ja Sovellusavain vieressä. Sen pitäisi nyt näkyä tavuryhmänä.

Ennen kuin kopioit, napsauta Vaihda -painiketta ja varmista, että Dev EUI ja App EUI ovat LSB FIRST.

Sovellusavaimesi tulee olla MSB ENSIMMÄINEN (älä muuta sitä).

Tarvitset nämä avaimet seuraavassa vaiheessa: Arduinon määrittäminen.

Vaihe 4: Kirjoita Application Acces -avaimesi muistiin

Nyt tarvitsemme vielä yhden avaimen MQTT: n määrittämiseksi Raspberry Pi -laitteeseemme.

Siirry sovellukseesi ja vieritä alas kohtaan Pääsyavaimet.

Tarvitset tätä Backend -vaiheessa.

Vaihe 5: Arduinon asentaminen

Arduino -koodi löytyy myös GitHubistani, Arduinon alta (https://github.com/BoussonKarel/CaptureTheBox)

Tämä koodi on jaettu useisiin välilehtiin, jotta se pysyy järjestyksessä.

Main.ino Pääkoodi: pin -ilmoitukset, setup () ja loop ()

0_LoRa.inoTämä koodi käsittelee viestintää LoRa: n avulla.

Se asettaa LDR-, GPS- ja RFID -tunnisteiden tiedot 13 tavun matriisiin ja lähettää sen TheThingsNetworkille.

1_LDR.inoAnalogRead (): n avulla se mittaa valosta riippuvan vastuksen jännitteen määrän.

Tämä muunnetaan sitten valoprosentiksi (0 ei mitään, 100 on matkapuhelimen taskulamppu).

2_GPS.inoTämä käyttää sarjaliikennettä TX1: n ja RX1: n (Serial1) avulla.

Se käyttää NMEA -viestejä (tarkasti $ GPRMC -viestit) laatikon leveys- ja pituusasteiden löytämiseksi.

3_RFID.inoKäyttämällä MFRC522 -kirjastoa tämä koodi etsii uusia RFID -tunnisteita. Kun niitä on, ne tallennetaan muodossa RFID_lastUID.

4_DotMatrix.inoTätä koodia käytetään alustamaan ja asettamaan pistematriisinäyttö. Se sisältää määritelmät ladattavaan animaatioon jne.

Asentaminen

Ennen kuin voit ladata tämän koodin Arduinollesi, sinun on asennettava muutama kirjasto.

Matthijskooijmanin Arduino-LMIC-kirjasto (https://github.com/matthijskooijman/arduino-lmic)

RFID -lukijan MFRC522 -kirjasto (https://github.com/miguelbalboa/rfid)

Siirry nyt osoitteeseen main.ino ja vaihda DEVEUI-, APPEUI- ja APPKEY -vaihtoehdoiksi viimeisessä vaiheessa kopioimasi.

Vaihe 6: Taustaohjelman määrittäminen

Tämän projektin taustaohjelma löytyy GitHubistani kohdasta RPI> Tausta (https://github.com/BoussonKarel/CaptureTheBox).

Kuinka se toimii?

  1. Koodi etsii 10 sekunnin välein aktiivista peliä, jos sellainen löytyy, se tallennetaan muuttujaan nimeltä huidigSpel (currentGame)
  2. Jos tilaksi on määritetty Sarja, Arduinon ja Pi: n välissä käytetään kaapelia. Pi kyselee LDR- ja GPS -arvoja. Arduino vastaa JSON -muodossa. RFID -tunnisteet lähetetään aina, kun ne esitetään.
  3. Jos tilaksi on asetettu LoRa, luodaan MQTT -asiakas, joka käynnistää takaisinsoiton aina, kun TTN vastaanottaa LoRa -tiedot. Tämä sisältää LDR-, GPS- ja RFID -tietoja.
  4. Käyttöliittymä voi noutaa tietoja API -päätepisteiden avulla. Suurin osa tiedoista haetaan huidigSpel.id -sovelluksella. Tiedot palautetaan JSON -muodossa käyttämällä jsonify ()

Muuta asetuksia Siirry osoitteeseen secrets.py ja kirjoita LoRa -sovelluksesi nimi ja Acces -avaimesi (kirjoitit aiemmin muistiin).

Siirry osoitteeseen config.py ja täytä tietokantatietosi (kuten salasana, käyttäjä…)

Yritä ajaa app.py, kun olet vahvistanut, että se toimii, voimme käyttää sitä palveluna, joka käynnistää koodin automaattisesti taustalla, kun käynnistät pi.

Voit tehdä tämän kopioimalla ctb_service.service /etc/systemd/system/ctb_service.service. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service

Ota se nyt käyttöön systemctl enable ctb_service.service avulla

Jos joudut tekemään joitain muutoksia koodiin, voit lopettaa sen helposti käyttämällä systemctl stop -toimintoa (tämä käynnistyy uudelleen uudelleenkäynnistyksen yhteydessä) tai poistaa käytöstä (pysäytä sen automaattisen käynnistymisen) käyttämällä systemctl disable -toimintoa.

Jos sinun on tarkasteltava lokeja (virheiden vuoksi), voit käyttää journalctl -u ctb_service.service -palvelua.

Lisätietoja palveluista löytyy täältä:

Vaihe 7: Käyttöliittymän asentaminen

Kuten tavallista, käyttöliittymä löytyy GitHubistani kohdasta RPI> Frontend (https://github.com/BoussonKarel/CaptureTheBox)

Liitä tämä Raspberry Pi -laitteen /var /html -kansioon.

Tämä sisältää kaikki pelille tarvittavat verkkosivut.

Se sisältää myös komentosarjan kommunikoida taustaohjelman kanssa (sekä reaaliajassa että sovellusliittymän päätepisteiden avulla).

Vaihe 8: Kotelon lisääminen

Kotelon lisääminen
Kotelon lisääminen
Kotelon lisääminen
Kotelon lisääminen

Kotelossa käytin vanhaa työkalukoteloa yhdessä seuraavien materiaalien/tekniikoiden kanssa:

  • 3D -tulostus
  • Vaahto akun pitämiseksi paikallaan
  • Kierrätetyt puulaudat
  • Kuuma liima
  • Ruuvit ja mutterit

Mitä teet tapauksellesi, on sinun valintasi! Annan sinulle taiteellisen vapauden.

Inspiraationa olen lisännyt valokuvia (valmiista) kotelostani.

Suositeltava: