Cuprins:
- Provizii
- Pasul 1: Configurarea Raspberry Pi
- Pasul 2: Dispunerea electronice
- Pasul 3: Proiectarea bazei de date
- Pasul 4: Configurarea unui cont pe TTN
- Pasul 5: Configurarea Arduino
- Pasul 6: Configurarea backend-ului
- Pasul 7: Configurarea frontendului
- Pasul 8: Adăugarea unei carcase
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:42
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
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
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ã?
- La fiecare 10 secunde, codul caută un joc activ. Dacă se găsește unul, acesta este salvat într-o variabilă numită huidigSpel (currentGame)
- 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.
- 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.
- 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
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:
Cutia zilei de vis pentru persoana specială din viața ta: 11 pași (cu imagini)
Cutia zilei de vis pentru persoana specială din viața ta: această cutie mică indică numărul de zile pe care iubitul meu și cu mine ne trăim viața împreună. Desigur, pentru tine data poate fi orice, ar putea spune zilele de la căsătorie, din ziua în care te-ai întâlnit tu și soțul tău, ziua în care te-ai mutat
Cutia asistentei: 7 pași
Infirmieră: „Infirmieră” este un sistem personal de scanare vitală pe care o persoană îl poate folosi la domiciliu pentru a-și verifica în mod regulat temperatura și pulsul, fără niciun efort. Asistenta medicală înregistrează și stochează datele despre temperatură și frecvență a pulsului și chiar merge
Îmbunătățiți-vă cutia inutilă: 5 pași
Îmbunătățiți-vă cutia inutilă: această instrucțiune vă arată cum puteți îmbunătăți cutia inutilă, atunci când reacționează prea repede, astfel încât să aveți puțin timp pentru a scoate degetul după ce comutați comutatorul pentru a activa cutia
EF 230 Captează Soarele: 6 pași
EF 230 Captures the Sun: Acest instructable va detalia modul de utilizare a unui kit / placa de circuit Arduino și a MATLAB pentru a crea un prototip de sistem de energie pentru acasă, care se concentrează pe achiziția de energie eoliană și solară. Cu materialele adecvate și folosind codul / configurarea furnizate, puteți
Antena antenă satelit reutilizată captează semnale Wi-Fi și telefon mobil: 4 pași
Antena antenă satelit reafăcută captează semnale Wi-Fi și telefon mobil: Când m-am mutat din San Antonio înapoi în Carolina de Nord rurală, m-am trezit complet incapabil să obțin un semnal Wi-Fi sau telefon mobil în care locuiam. Singura modalitate pentru mine de a obține un semnal celular a fost să conduc peste o milă în ambele direcții de unde