Zachyťte box: 8 krokov
Zachyťte box: 8 krokov
Anonim
Zachyťte škatuľu
Zachyťte škatuľu
Zachyťte škatuľu
Zachyťte škatuľu

Capture The Box je tímová hra, ktorú si môžete zahrať s priateľmi vo svojom okolí.

Cieľom je zajať škatuľu a udržať ju vo svojom vlastníctve čo najdlhšie, kým sa ostatní hráči pokúsia ísť a odplížiť sa z vašej verandy alebo predzáhradky.

Táto hra používa GPS na vyhľadanie poľa a značky RFID na identifikáciu hráčov. Je možné pridať voliteľný LDR, ktorý zosúladí intenzitu bodového zobrazenia s percentom svetla v oblasti.

Zásoby

Mikrokontroléry a počítače

  • Malinový koláč
  • Arduino (Mega) Vybral som Arduino Mega pred normálnym Uno, pretože má oveľa viac pinov. Je to nevyhnutné, pretože používame štít Dragino LoRa, ktorý by nám pri použití UNO ponechal príliš málo digitálnych pinov. TIP: Najlepšie je použiť originálny, pretože čínske klony nefungujú vždy podľa očakávania.

Senzory a moduly

  • 4 MAX7219 bodové maticové moduly Pripojenie DOUT na DIN, CS na CS, CLK na CLK…
  • Svetlo závislý odpor (10K) + odpor (10K)
  • GPS modul NEO-7M (alebo podobný) Používam VMA430 od Vellemana
  • RF5 modul RC522+ niekoľko odznakov/kariet RFID

Na používanie LoRa (bezdrôtová technológia)

Štít Dragino Lora

Voliteľné senzory a moduly

LCD displej Na zobrazenie IP adresy Raspberry Pi

Na vykonanie testovacieho nastavenia

Nepájivá doska a káble Dupont (muž-muž

Voliteľné (puzdro)

  • Spájkovačka
  • Starý kufrík na náradie
  • Materiály pre 3D tlač
  • Niektoré tenké drevené dosky
  • Niektoré skrutky a matice (ktoré sa zmestia do otvorov Arduino). Moje skrutky majú priemer približne 3 mm.

Odhadovanú cenu nájdete v kusovníku (kusovníku), ktorý je zahrnutý nižšie.

Krok 1: Nastavenie Raspberry Pi

Raspberry Pi je srdcom projektu.

Spustí frontend, backend a databázu. Bude tiež zodpovedný za komunikáciu medzi backendom a Arduino.

Aby sme mohli používať Raspberry Pi, budeme musieť urobiť nasledovné:

Časť 1: Nainštalujte Raspbian na Raspberry Pi

Návod, ako na to, nájdete tu:

Časť 2: Nainštalujte Raspbian na Raspberry PiNastavenie domáceho WiFi.

To je možné vykonať pomocou wpa_passphrase „YourNetwork“„YourSSID“>> /etc/wpa_supplicant/wpa_supplicant.conf

Reštartujte počítač Pi a pri zadávaní príkazu ifconfig by sa vám mala zobraziť adresa IP

Časť 3: Nainštalujte webový server a databázu

Keď máte Pi v prevádzke, je najlepšie zmeniť si heslo. To je možné vykonať pomocou príkazu passwd.

Akonáhle to bude hotové, pokračujte a nainštalujte si Apache, PHP, MariaDB a 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 restart apache2.service

PHPMyAdminsudo vhodná inštalácia phpmyadmin -y

Nezabudnite nastaviť bezpečné heslo pre server MySQL.

Časť 4: Inštalácia potrebných knižníc Pythonu

Na backend budeme potrebovať niekoľko knižníc. Tieto je možné nainštalovať pomocou príkazu pip3.

pip3 nainštalujte mysql-connector-python

pip3 nainštalujte flask-socketio

pip3 nainštalujte flask-cors

pip3 nainštalovať geventpip3 nainštalovať gevent-websocket

pip3 nainštalujte ttn

Krok 2: Rozloženie elektroniky

Usporiadanie elektroniky
Usporiadanie elektroniky
Usporiadanie elektroniky
Usporiadanie elektroniky

Aby tento projekt fungoval, musíme pripojiť všetku elektroniku.

Štít LoRa je možné ľahko nasadiť. Stačí zarovnať kolíky s kolíkmi na vašom Arduine.

Ostatné spojenia sú popísané v mojej Fritzingovej schéme. Čo je možné stiahnuť tu:

Krok 3: Návrh databázy

Navrhovanie databázy
Navrhovanie databázy

Aby som mohol uložiť všetky údaje o hre a senzoroch, urobil som niekoľko tabuliek:

meranie a senzor Merania zo senzorov nájdete v tabuľkách senzorov. Obsahuje odkaz na senzor, hodnotu merania (napr. coördinates: 51.123456; 3.123456) a voliteľné ID hry (ak bola počas merania aktívna hra).

spelerMená hráčov a UID ich odznaku RFID. Pridá sa voliteľný moderátor poľa. Táto osoba môže hru upraviť (napr. Zastaviť ju pred časom).

spelInformácie o hre (začiatok a koniec).

spel_has_speler Vzťah medzi spel a speler. Tu sú hráči priradení k hre.

bezitV tejto tabuľke je skóre uložené. Obsahuje ID hry, ID hráča, čas, kedy krabicu ukradol a čas, kedy ju stratil (keď ju niekto iný ukradne alebo keď sa hra skončí). Odpočítaním času začiatku od času konca môžete vypočítať skóre, ktoré z tohto zajatia získal.

Export databázy nájdete na mojom GitHub (https://github.com/BoussonKarel/CaptureTheBox)

Otvorte sql v PHPMyAdmin / MySQL Workbench a spustite ho. Teraz by sa mala importovať databáza.

Krok 4: Nastavenie účtu v službe TTN

Krok 1: Zaregistrujte si účet na TTN a vytvorte aplikáciu

Zaregistrujte si účet na serveri TheThingsNetwork a potom prejdite na položku Konzola> Pridať aplikáciu.

Vyberte názov aplikácie a kliknite na položku Pridať aplikáciu.

Krok 2: Zaregistrujte zariadenie

Po zadaní žiadosti prejdite na položku Zaregistrovať zariadenie.

Vyberte ID zariadenia, môže to byť čokoľvek (pokiaľ ide o hadie puzdro) a kliknite na položku Registrovať.

Kliknite na ikonu Generovať v časti Zariadenie EUI, aby vám TTN vygenerovalo jedno za vás.

Krok 3: Zapíšte si svoje poverenia

Teraz prejdite na svoje zariadenie a kliknite na ikonu Kód vedľa položky Device EUI, App EUI a App key. Teraz by sa mal zobrazovať ako pole bajtov.

Pred kopírovaním kliknite na tlačidlo Prepnúť a uistite sa, že vaše Dev EUI a aplikácia EUI sú LSB PRVÉ.

Váš kľúč aplikácie by mal zostať na prvom mieste (nemeňte to).

Tieto kľúče budete potrebovať v nasledujúcom kroku: Nastavenie Arduina.

Krok 4: Zapíšte si kľúč prístupu k aplikácii

Teraz budeme potrebovať ešte jeden kľúč na nastavenie MQTT na našom Raspberry Pi.

Prejdite na svoju aplikáciu a prejdite nadol na položku Prístupové kľúče.

Budete to potrebovať v kroku Backend.

Krok 5: Nastavenie Arduina

Kód Arduino nájdete aj na mojom GitHub pod Arduino (https://github.com/BoussonKarel/CaptureTheBox)

Tento kód je rozdelený do viacerých kariet, aby bol organizovaný.

main.ino Hlavný kód: deklarácie pinov, setup () a loop ()

0_LoRa.inoTento kód spracováva komunikáciu pomocou LoRa.

Údaje zo značiek LDR, GPS a RFID vloží do poľa s veľkosťou 13 bajtov a odošle ich do siete TheThingsNetwork.

1_LDR.ino Použitím analogRead () meria množstvo napätia na svetle závislom odpore.

Toto sa potom prevedie na percento svetla (0 znamená nič, 100 znamená baterku do mobilu).

2_GPS.inoToto používa sériovú komunikáciu pomocou TX1 a RX1 (Serial1).

Na zistenie zemepisnej šírky a dĺžky poľa používa správy NMEA (presnejšie správy $ GPRMC).

3_RFID.ino Použitím knižnice MFRC522 tento kód skenuje nové tagy RFID. Kedykoľvek je prítomný, uloží sa ako RFID_lastUID.

4_DotMatrix.ino Tento kód sa používa na inicializáciu a nastavenie zobrazenia bodovej matice. Obsahuje definície pre načítavanie animácie atď.

Nastavenie

Predtým, ako budete môcť nahrať tento kód do svojho Arduina, budete musieť nainštalovať niekoľko knižníc.

Knižnica Arduino-LMIC od matthijskooijman (https://github.com/matthijskooijman/arduino-lmic)

Knižnica MFRC522 pre čítačku RFID (https://github.com/miguelbalboa/rfid)

Teraz choďte na main.ino a zmeňte DEVEUI, APPEUI a APPKEY na tie, ktoré ste skopírovali v poslednom kroku.

Krok 6: Nastavenie backendu

Backend tohto projektu nájdete na mojom GitHub pod RPI> Backend (https://github.com/BoussonKarel/CaptureTheBox).

Ako to funguje?

  1. Každých 10 sekúnd kód hľadá aktívnu hru. Ak sa nájde, uloží sa do premennej s názvom huidigSpel (currentGame)
  2. Ak je režim nastavený na Sériový, medzi Arduinom a Pi sa použije kábel. Pi zisťuje hodnoty LDR a GPS. Arduino reaguje vo formáte JSON. Značky RFID sa odosielajú vždy, keď sú predložené. Tento režim bol použitý výhradne na vývojové účely a už nie je skutočne potrebný.
  3. Ak je režim nastavený na LoRa, vytvorí sa klient MQTT, ktorý spustí spätné volanie vždy, keď TTN prijme údaje LoRa. Obsahuje údaje LDR, GPS a RFID.
  4. Frontend môže získavať údaje pomocou koncových bodov API. Väčšina údajov sa získava pomocou huidigSpel.id. Údaje sa vracajú vo formáte JSON pomocou jsonify ()

Upravte nastavenia Prejdite na adresu secrets.py a zadajte názov svojej aplikácie LoRa a kľúč Acces (ste si zapísali skôr).

Prejdite na stránku config.py a zadajte svoje prihlasovacie údaje do databázy (napríklad heslo, používateľ …)

Skúste spustiť aplikáciu app.py, akonáhle potvrdíte, že funguje, môžeme ju použiť ako službu. Tým sa kód automaticky spustí na pozadí, keď spustíte svoj pi.

Za týmto účelom skopírujte ctb_service.service do /etc/systemd/system/ctb_service.service. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service

Teraz to povoľte pomocou systemctl enable ctb_service.service

Ak potrebujete vykonať nejaké zmeny v kóde, môžete ho jednoducho zastaviť pomocou príkazu systemctl stop (toto sa spustí znova pri reštarte) alebo zakázať je (zastaviť automatické spustenie) pomocou príkazu systemctl disable.

Ak potrebujete nahliadnuť do protokolov (kvôli chybám), môžete použiť journalctl -u ctb_service.service.

Viac informácií o službách nájdete tu: https://www.raspberrypi.org/documentation/linux/us..

Krok 7: Nastavenie frontendu

Frontend ako obvykle nájdete na mojom GitHube v časti RPI> Frontend (https://github.com/BoussonKarel/CaptureTheBox)

Vložte to do priečinka /var /html vášho Raspberry Pi.

Obsahuje všetky potrebné webové stránky pre hru.

Obsahuje tiež skript na komunikáciu so serverom (v reálnom čase aj pomocou koncových bodov API).

Krok 8: Pridanie puzdra

Pridanie puzdra
Pridanie puzdra
Pridanie puzdra
Pridanie puzdra

Na prípad som použil starý kufrík na náradie spolu s nasledujúcimi materiálmi/technikami:

  • 3D tlač
  • Pena na udržanie batérie na svojom mieste
  • Recyklované drevené dosky
  • Horúce lepidlo
  • Skrutky a matice

To, čo so svojim prípadom urobíte, je vaša voľba! Dám vám umeleckú slobodu.

Pre inšpiráciu som pridal niekoľko fotografií môjho (hotového) kufríka.