Obsah:

Capture the Box: 8 kroků
Capture the Box: 8 kroků

Video: Capture the Box: 8 kroků

Video: Capture the Box: 8 kroků
Video: ЮЛЯ ФИНЕСС: Как я вышла с 8 этажа! Групповое изнасилование под мефедроном, психиатрическая больница 2024, Listopad
Anonim
Zachyťte krabici
Zachyťte krabici
Zachyťte krabici
Zachyťte krabici

Capture The Box je teambuildingová hra, kterou můžete hrát s přáteli ve svém okolí.

Cílem je zajmout krabici a udržet ji ve svém vlastnictví co nejdéle, zatímco ostatní hráči se ji pokusí dostat pryč z vaší verandy nebo předzahrádky.

Tato hra využívá GPS k vyhledání boxu a RFID tagy k identifikaci hráčů. Může být přidán volitelný LDR, který odpovídá intenzitě jehličkového displeje s procentem světla v oblasti.

Zásoby

Mikrokontroléry a počítače

  • Raspberry Pi
  • Arduino (Mega) Vybral jsem si Arduino Mega než normální Uno, protože má mnohem více pinů. Je to nutné, protože používáme štít Dragino LoRa, který by nám při použití UNO ponechal příliš málo digitálních pinů. TIP: Nejlepší je použít skutečný, protože čínské klony nefungují vždy podle očekávání.

Senzory a moduly

  • 4 moduly MAX7219 Dot Matrix Připojte DOUT na DIN, CS na CS, CLK na CLK…
  • Odpor závislý na světle (10K) + odpor (10K)
  • GPS modul NEO-7M (nebo podobný) Používám VMA430 od Vellemana
  • RC522 RFID modul+ nějaké RFID odznaky/karty

Pro použití LoRa (bezdrátová technologie)

Štít Dragino Lora

Volitelné senzory a moduly

LCD displej Pro zobrazení IP adresy Raspberry Pi

Pro nastavení testu

Prkénko a Dupont kabely (Male-Male

Volitelné (pouzdro)

  • Páječka
  • Starý kufřík na nářadí
  • Materiály pro 3D tisk
  • Nějaká tenká dřevěná prkna
  • Některé šrouby a matice (které se vejdou do otvorů Arduino). Moje šrouby mají průměr kolem 3 mm.

Odhadovanou cenu najdete v kusovníku (kusovníku), který je součástí níže.

Krok 1: Nastavení Raspberry Pi

Raspberry Pi je srdcem projektu.

Spustí frontend, backend a databázi. Bude také zodpovědný za komunikaci mezi backendem a Arduinem.

Abychom mohli používat Raspberry Pi, budeme muset udělat následující:

Část 1: Nainstalujte si Raspbian na Raspberry Pi

Návod, jak na to, najdete zde:

Část 2: Nainstalujte si Raspbian na Raspberry Pi Nastavení domácí WiFi.

To lze provést pomocí wpa_passphrase „YourNetwork“„YourSSID“>> /etc/wpa_supplicant/wpa_supplicant.conf

Restartujte Pi a při zadávání ifconfig byste měli vidět IP adresu

Část 3: Nainstalujte si webový server a databázi

Jakmile máte Pi v provozu, je nejlepší změnit heslo. To lze provést pomocí příkazu passwd.

Jakmile to bude hotovo, pokračujte a nainstalujte 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á instalace phpmyadmin -y

Nezapomeňte nastavit zabezpečené heslo pro MySQL.

Část 4: Instalace nezbytných knihoven Pythonu

Pro backend budeme potřebovat nějaké knihovny. Ty lze nainstalovat pomocí příkazu pip3.

pip3 nainstalujte mysql-connector-python

pip3 install flask-socketio

pip3 nainstalujte flask-cors

pip3 install geventpip3 install gevent-websocket

pip3 install ttn

Krok 2: Rozložení elektroniky

Rozložení elektroniky
Rozložení elektroniky
Rozložení elektroniky
Rozložení elektroniky

Aby tento projekt fungoval, musíme připojit veškerou elektroniku.

Štít LoRa lze snadno nasadit na místo. Stačí zarovnat kolíky s kolíky na vašem Arduinu.

Ostatní připojení jsou popsána v mém Fritzingově schématu. Které lze stáhnout zde:

Krok 3: Návrh databáze

Navrhování databáze
Navrhování databáze

Aby bylo možné ukládat všechna data ze hry a senzorů, vytvořil jsem několik tabulek:

měření a senzor Měření ze senzorů, která se nacházejí v tabulkách senzorů. Obsahuje odkaz na senzor, hodnotu měření (např. coördinates: 51.123456; 3.123456) a volitelné ID hry (pokud byla během měření aktivní hra).

speler Jména hráčů a UID jejich odznaku RFID. Je přidán volitelný moderátor pole, tato osoba může hru upravit (např. Ji včas zastavit).

spel Informace o hře (začátek a konec).

spel_has_speler Vztah mezi spel a speler. Zde jsou hráči přiřazeni ke hře.

bezitV této tabulce je skóre uloženo. Obsahuje ID hry, ID hráče, čas, kdy krabici ukradl a čas, kdy ji ztratil (když ji někdo jiný ukradne nebo když hra skončí). Odečtením času začátku od času konce můžete vypočítat skóre, které z tohoto zajetí získal.

Export databáze lze nalézt na mém GitHubu (https://github.com/BoussonKarel/CaptureTheBox)

Otevřete sql v PHPMyAdmin / MySQL Workbench a spusťte jej. Nyní by měla být importována databáze.

Krok 4: Nastavení účtu na TTN

Krok 1: Zaregistrujte si účet na TTN a vytvořte aplikaci

Zaregistrujte si účet na webu TheThingsNetwork a poté přejděte do části Konzola> Přidat aplikaci.

Vyberte název aplikace a klikněte na Přidat aplikaci.

Krok 2: Zaregistrujte zařízení

Až vytvoříte přihlášku, přejděte na Zaregistrovat zařízení.

Vyberte ID zařízení, může to být cokoli chcete (pokud jde o hadí případ) a klikněte na Registrovat.

Klikněte na ikonu Generovat v části Device EUI, takže TTN vám ji vygeneruje.

Krok 3: Zapište si přihlašovací údaje

Nyní přejděte do svého zařízení a klikněte na ikonu Kód vedle Device EUI, App EUI a App key. Nyní by se měl zobrazit jako pole bajtů.

Před kopírováním klikněte na tlačítko Přepnout a ujistěte se, že vaše Dev EUI a App EUI jsou LSB FIRST.

Váš klíč aplikace by měl zůstat MSB FIRST (neměňte to).

Tyto klíče budete potřebovat v dalším kroku: Nastavení Arduina.

Krok 4: Zapište si klíč pro přístup k aplikaci

Nyní budeme potřebovat ještě jeden klíč k nastavení MQTT na našem Raspberry Pi.

Přejděte do své aplikace a přejděte dolů na Acces Keys.

Budete to potřebovat v kroku Backend.

Krok 5: Nastavení Arduina

Kód Arduino najdete také na mém GitHubu pod Arduino (https://github.com/BoussonKarel/CaptureTheBox)

Tento kód je rozdělen do několika karet, aby byl organizovaný.

main.ino Hlavní kód: deklarace pinů, setup () a loop ()

0_LoRa.ino Tento kód zpracovává komunikaci pomocí LoRa.

Vloží data značek LDR, GPS a RFID do 13 bajtů a odešle je do TheThingsNetwork.

1_LDR.ino Pomocí analogRead () měří množství napětí přes odpor závislý na světle.

Toto je pak převedeno na procento světla (0 je nic, 100 je baterka pro mobilní telefon).

2_GPS.ino Toto používá sériovou komunikaci pomocí TX1 a RX1 (Serial1).

K nalezení zeměpisné šířky a délky pole používá zprávy NMEA (přesněji zprávy $ GPRMC).

3_RFID.ino Pomocí knihovny MFRC522 tento kód vyhledává nové tagy RFID. Kdykoli je přítomen, ukládá se jako RFID_lastUID.

4_DotMatrix.ino Tento kód slouží k inicializaci a nastavení zobrazení jehličkové matice. Obsahuje definice pro načítání animace atd …

Nastavení

Než budete moci nahrát tento kód do svého Arduina, budete muset nainstalovat několik knihoven.

Knihovna Arduino-LMIC od matthijskooijman (https://github.com/matthijskooijman/arduino-lmic)

Knihovna MFRC522 pro čtečku RFID (https://github.com/miguelbalboa/rfid)

Nyní přejděte na main.ino a změňte DEVEUI, APPEUI a APPKEY na ty, které jste zkopírovali v posledním kroku.

Krok 6: Nastavení backendu

Backend tohoto projektu najdete na mém GitHubu pod RPI> Backend (https://github.com/BoussonKarel/CaptureTheBox).

Jak to funguje?

  1. Každých 10 sekund kód vyhledá aktivní hru. Pokud je nalezena, uloží se do proměnné s názvem huidigSpel (currentGame)
  2. Pokud je režim nastaven na Sériový, mezi Arduinem a Pi se použije kabel. Pi dotazuje na hodnoty LDR a GPS. Arduino odpovídá formátem JSON. Štítky RFID jsou odesílány vždy, když jsou prezentovány. Tento režim byl použit pouze pro vývojové účely a již není opravdu nutný.
  3. Pokud je režim nastaven na LoRa, vytvoří se klient MQTT, který spustí zpětné volání, kdykoli TTN přijme data LoRa. Obsahuje data LDR, GPS a RFID.
  4. Frontend může načítat data pomocí koncových bodů API. Většina dat je získána pomocí huidigSpel.id. Data jsou vrácena ve formátu JSON pomocí jsonify ()

Upravte nastavení Přejděte na secrets.py a vyplňte název své aplikace LoRa a klíč Acces (jste si to zapsali dříve).

Přejděte na config.py a zadejte své přihlašovací údaje do databáze (například heslo, uživatel …)

Zkuste to spustit app.py, jakmile potvrdíte, že to funguje, můžeme to použít jako službu. To automaticky spustí kód na pozadí, když spustíte svůj pi.

Chcete -li to provést, zkopírujte ctb_service.service do /etc/systemd/system/ctb_service.service. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service

Nyní ji povolte pomocí systemctl enable ctb_service.service

Pokud potřebujete v kódu provést nějaké změny, můžete jej snadno zastavit pomocí systemctl stop (toto se spustí znovu při restartu) nebo disable is (zastavit automatické spouštění) pomocí systemctl disable.

Pokud potřebujete nahlédnout do protokolů (kvůli chybám), můžete použít journalctl -u ctb_service.service.

Více informací o službách naleznete zde:

Krok 7: Nastavení frontendu

Jako obvykle lze frontend najít na mém GitHubu pod RPI> Frontend (https://github.com/BoussonKarel/CaptureTheBox)

Vložte to do složky /var /html vašeho Raspberry Pi.

Obsahuje všechny potřebné webové stránky pro hru.

Obsahuje také skript pro komunikaci s backendem (v reálném čase i pomocí koncových bodů API).

Krok 8: Přidání pouzdra

Přidání pouzdra
Přidání pouzdra
Přidání pouzdra
Přidání pouzdra

Pro případ jsem použil starý kufřík na nářadí spolu s následujícími materiály/technikami:

  • 3D tisk
  • Pěna pro udržení baterie na svém místě
  • Recyklovaná dřevěná prkna
  • Horké lepidlo
  • Šrouby a matice

Co uděláte se svým případem, je vaše volba! Dám vám uměleckou svobodu.

Pro inspiraci jsem přidal pár fotek mého (hotového) případu.

Doporučuje: