Cuprins:

Captează cutia: 8 pași
Captează cutia: 8 pași
Anonim
Captează cutia
Captează cutia
Captează cutia
Captează cutia

Capture The Box este un joc de teambuilding pe care îl poți juca cu prietenii din cartierul tău.

Scopul este de a captura cutia și de a o păstra în posesia dumneavoastră cât mai mult timp posibil, în timp ce alți jucători încearcă să o ducă și să se strecoare departe de veranda sau grădina din față.

Acest joc folosește GPS pentru a localiza cutia și etichetele RFID pentru a identifica jucătorii. Un LDR opțional poate fi adăugat pentru a se potrivi intensității afișajului cu matrice de puncte cu procentul de lumină din zonă.

Provizii

Microcontrolere și computere

  • Raspberry Pi
  • Arduino (Mega) Am ales un Arduino Mega peste un Uno normal, pentru că are mult mai mulți ace. Acest lucru este necesar, deoarece utilizăm un scut Dragino LoRa, care ne-ar lăsa prea puțini pini digitali atunci când folosim un UNO. SFAT: Cel mai bine este să folosiți una autentică, deoarece clonele chinezești nu funcționează întotdeauna așa cum era de așteptat.

Senzori și module

  • 4 module MAX7219 Dot Matrix Conectați DOUT la DIN, CS la CS, CLK la CLK …
  • Rezistor dependent de lumină (10K) + rezistor (10K)
  • Modul GPS NEO-7M (sau similar) Folosesc VMA430 de la Velleman
  • RC522 Modul RFID + câteva ecusoane / carduri RFID

Pentru utilizarea LoRa (tehnologie wireless)

Dragino Lora Shield

Senzori și module opționale

Un afișaj LCD Pentru a afișa adresa IP a Raspberry Pi

Pentru realizarea unei configurări de testare

O placă de prindere și cabluri Dupont (masculin-masculin

Opțional (carcasă)

  • Ciocan de lipit
  • O cutie de instrumente veche
  • Materiale pentru imprimare 3D
  • Câteva scânduri subțiri de lemn
  • Unele șuruburi și piulițe (care se pot încadra în găurile Arduino). Șuruburile mele au un diametru de aproximativ 3 mm.

Un preț estimat poate fi găsit în BOM (Lista materialelor), inclusă mai jos.

Pasul 1: Configurarea Raspberry Pi

Raspberry Pi este inima Proiectului.

Acesta va rula frontend-ul, backend-ul și baza de date. De asemenea, va fi responsabil pentru comunicarea dintre backend și Arduino.

Pentru a putea folosi Raspberry Pi, va trebui să facem următoarele:

Partea 1: Instalați Raspbian pe un Raspberry Pi

Un tutorial despre cum se face acest lucru poate fi găsit aici:

Partea 2: Instalați Raspbian pe un Raspberry Pi Configurarea WiFi-ului de acasă.

Acest lucru se poate face folosind wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Reporniți Pi și ar trebui să vedeți o adresă IP când introduceți ifconfig

Partea 3: Instalați serverul web și baza de date

Odată ce aveți Pi-ul în funcțiune, cel mai bine este să vă schimbați parola. Acest lucru se poate face cu comanda passwd.

Odată ce ați terminat, continuați și instalați Apache, PHP, MariaDB și 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 apt instalează phpmyadmin -y

Nu uitați să setați o parolă securizată MySQL.

Partea 4: Instalarea bibliotecilor Python necesare

Pentru backend, vom avea nevoie de niște biblioteci. Acestea pot fi instalate folosind comanda pip3.

pip3 instalează mysql-connector-python

pip3 instalează flask-socketio

pip3 instalează flask-cors

pip3 instalează geventp3 instalează gevent-websocket

pip3 instalează ttn

Pasul 2: Dispunerea electronice

Dispunerea electronice
Dispunerea electronice
Dispunerea electronice
Dispunerea electronice

Pentru ca acest proiect să funcționeze, trebuie să conectăm toate componentele electronice.

Scutul LoRa poate fi ușor pus în poziție. Doar aliniați pinii cu pinii de pe Arduino.

Celelalte conexiuni sunt descrise în schema mea Fritzing. Care poate fi descărcat de aici:

Pasul 3: Proiectarea bazei de date

Proiectarea bazei de date
Proiectarea bazei de date

Pentru a putea stoca toate jocurile și datele senzorilor, am făcut câteva tabele:

măsurare și senzor Măsurătorile din senzori, găsite în tabelele senzorilor. Conține o referință la senzor, valoarea măsurătorii (de exemplu, coordonate: 51.123456; 3.123456) și un id opțional de joc (dacă un joc a fost activ în timpul măsurării).

speler Numele jucătorului și UID-ul insignei RFID. Se adaugă un moderator de câmp opțional, această persoană poate modifica jocul (de exemplu, oprindu-l înainte de timp).

spelInformațiile jocului (ora de început și sfârșit).

spel_has_speler Relația dintre spel și speler. Aici jucătorii sunt repartizați la un joc.

bezit În acest tabel, scorul este salvat. Conține ID-ul jocului, ID-ul jucătorului, timpul în care a furat cutia și timpul în care a pierdut-o (când altcineva o fură sau când se termină jocul). Prin scăderea timpului de început din ora de sfârșit, puteți calcula scorul pe care l-a obținut din acea captură.

Un export al bazei de date poate fi găsit pe GitHub (https://github.com/BoussonKarel/CaptureTheBox)

Deschideți sql-ul în PHPMyAdmin / MySQL Workbench și rulați-l. Baza de date ar trebui acum să fie importată.

Pasul 4: Configurarea unui cont pe TTN

Pasul 1: Înscrieți-vă pentru un cont pe TTN și creați o aplicație

Înscrieți-vă pentru un cont pe TheThingsNetwork, apoi accesați Consolă> Adăugați aplicație.

Alegeți un nume pentru aplicația dvs. și faceți clic pe Adăugați aplicație.

Pasul 2: Înregistrați un dispozitiv

După ce ați făcut cererea, accesați Înregistrare dispozitiv.

Alegeți un ID de dispozitiv, acesta poate fi orice doriți (atâta timp cât este cazul șarpelui) și faceți clic pe Înregistrare.

Faceți clic pe pictograma Generați sub dispozitiv EUI, astfel încât TTN va genera una pentru dvs.

Pasul 3: Scrierea acreditărilor

Acum accesați dispozitivul dvs. și faceți clic pe pictograma Cod de lângă dispozitivul EUI, aplicația EUI și cheia aplicației. Ar trebui să apară acum ca o serie de octeți.

Înainte de a copia, faceți clic pe butonul Comutare și asigurați-vă că Dev EUI și App EUI sunt LSB FIRST.

Cheia dvs. de aplicație ar trebui să rămână MSB FIRST (nu schimbați asta).

Veți avea nevoie de aceste taste în pasul următor: Configurarea Arduino.

Pasul 4: Notarea cheii de acces la aplicație

Acum vom avea nevoie de încă o cheie pentru a configura MQTT pe Raspberry Pi.

Accesați aplicația dvs. și derulați în jos la Taste de acces.

Veți avea nevoie de acest lucru în pasul Backend.

Pasul 5: Configurarea Arduino

Codul Arduino poate fi găsit și pe GitHub, sub Arduino (https://github.com/BoussonKarel/CaptureTheBox)

Acest cod este împărțit în mai multe file, pentru a-l menține organizat.

main.ino Codul principal: declarații pin, setup () și loop ()

0_LoRa.ino Acest cod gestionează comunicarea utilizând LoRa.

Acesta pune datele etichetelor LDR, GPS și RFID într-o matrice de 13 octeți și le trimite către TheThingsNetwork.

1_LDR.ino Folosind analogRead (), măsoară cantitatea de tensiune peste rezistența dependentă de lumină.

Aceasta este apoi convertită la un procent de lumină (0 fiind nimic, 100 fiind o lanternă pentru telefonul mobil).

2_GPS.ino Aceasta folosește comunicarea serială utilizând TX1 și RX1 (Serial1).

Folosește mesaje NMEA (pentru a fi precise mesajele $ GPRMC) pentru a găsi latitudinea și longitudinea casetei.

3_RFID.ino Folosind biblioteca MFRC522, acest cod scanează noi etichete RFID. Ori de câte ori este prezent, acesta stochează în RFID_lastUID.

4_DotMatrix.inoAcest cod este folosit inițializați și setați afișarea matricii de puncte. Acesta conține definiții pentru animația de încărcare etc …

Configurarea acestuia

Înainte de a putea încărca acest cod pe Arduino, va trebui să instalați câteva biblioteci.

Biblioteca Arduino-LMIC de matthijskooijman (https://github.com/matthijskooijman/arduino-lmic)

Biblioteca MFRC522 pentru cititorul RFID (https://github.com/miguelbalboa/rfid)

Acum, accesați main.ino și schimbați DEVEUI, APPEUI și APPKEY cu cele pe care le-ați copiat ultimul pas.

Pasul 6: Configurarea backend-ului

Backend-ul acestui proiect poate fi găsit pe GitHub, sub RPI> Backend (https://github.com/BoussonKarel/CaptureTheBox).

Cum functioneazã?

  1. La fiecare 10 secunde, codul caută un joc activ. Dacă se găsește unul, acesta este salvat într-o variabilă numită huidigSpel (currentGame)
  2. Dacă modul este setat la Serial, se utilizează un cablu între Arduino și Pi. Pi analizează valorile LDR și GPS. Arduino răspunde cu un format JSON. Etichetele RFID sunt trimise ori de câte ori sunt prezentate. Acest mod a fost utilizat exclusiv în scopuri de dezvoltare și nu mai este necesar.
  3. Dacă modul este setat la LoRa, se creează un client MQTT care declanșează un apel invers ori de câte ori datele LoRa sunt primite de TTN. Acesta conține date LDR, GPS și RFID.
  4. Frontend-ul poate prelua date folosind punctele finale API. Majoritatea datelor sunt preluate folosind huidigSpel.id. Data este returnată în format JSON folosind jsonify ()

Modificați setările Accesați secrets.py și completați numele aplicației LoRa și cheia de acces (ați notat mai devreme).

Accesați config.py și completați acreditările bazei de date (cum ar fi parola, utilizatorul …)

Configurarea acestuia ca serviciu Încercați să rulați app.py, după ce ați confirmat că funcționează, îl putem folosi ca serviciu. Acest lucru va porni automat codul în fundal când porniți pi-ul.

Pentru a face acest lucru, copiați ctb_service.service în /etc/systemd/system/ctb_service.service. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service

Acum activați-l folosind systemctl enable ctb_service.service

Dacă trebuie să faceți unele modificări la cod, îl puteți opri cu ușurință utilizând systemctl stop (aceasta va porni din nou la repornire) sau dezactivați (opriți-l de la pornirea automată) utilizând systemctl disable.

Dacă trebuie să consultați jurnalele (din cauza erorilor), puteți utiliza journalctl -u ctb_service.service.

Mai multe informații despre servicii pot fi găsite aici:

Pasul 7: Configurarea frontendului

Ca de obicei, frontendul poate fi găsit pe GitHub, sub RPI> Frontend (https://github.com/BoussonKarel/CaptureTheBox)

Lipiți acest lucru în folderul / var / html al Raspberry Pi.

Acesta conține toate paginile web necesare pentru joc.

De asemenea, conține un script pentru a comunica cu backend-ul (atât în timp real, cât și folosind punctele finale API).

Pasul 8: Adăugarea unei carcase

Adăugarea unei carcase
Adăugarea unei carcase
Adăugarea unei carcase
Adăugarea unei carcase

Pentru caz, am folosit o cutie de instrumente veche, împreună cu următoarele materiale / tehnici:

  • printare 3d
  • Spumă pentru menținerea bateriei în poziție
  • Scânduri din lemn reciclate
  • Lipici fierbinte
  • Șuruburi și piulițe

Ceea ce faci cu cazul tău este alegerea ta! Am să-ți dau libertate artistică.

Pentru inspirație, am adăugat câteva fotografii ale carcasei mele (terminate).

Recomandat: