
Tartalomjegyzék:
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-23 14:47


A Capture The Box egy csapatépítő játék, amelyet a környéken élő barátokkal játszhat.
A cél az, hogy elfogja a dobozt, és a lehető leghosszabb ideig a birtokában tartsa, míg más játékosok megpróbálnak elmenni, és ellopják a verandától vagy az előkerttől.
Ez a játék a GPS -t használja a doboz és az RFID -címkék azonosítására a játékosok számára. Az opcionális LDR hozzáadható a pontmátrix kijelző intenzitásának és a terület százalékos fényerejének megfelelően.
Kellékek
Mikrokontrollerek és számítógépek
- Raspberry Pi
- Arduino (Mega) Arduino Mega -t választottam a normál Uno helyett, mert sokkal több csapja van. Erre azért van szükség, mert Dragino LoRa pajzsot használunk, ami miatt túl kevés digitális csap maradna az UNO használata során. TIPP: A legjobb, ha eredeti klónt használ, mert a kínai klónok nem mindig a várt módon működnek.
Érzékelők és modulok
- 4 MAX7219 Dot Matrix ModulesConnect DOUT to DIN, CS to CS, CLK to CLK …
- Fényfüggő ellenállás (10K) + ellenállás (10K)
- NEO-7M (vagy hasonló) GPS modul A Velleman VMA430-at használom
- RC522 RFID modul+ néhány RFID jelvény/kártya
A LoRa (vezeték nélküli technológia) használatához
Dragino Lora pajzs
Opcionális érzékelők és modulok
LCD kijelző A Raspberry Pi IP -címének megjelenítéséhez
A teszt beállításához
Kenyérsütő deszka és Dupont kábelek (férfi-férfi)
Opcionális (burkolat)
- Forrasztópáka
- Régi szerszámos tok
- Anyagok 3D nyomtatáshoz
- Néhány vékony fa deszka
- Néhány csavar és anya (amelyek elférnek az Arduino lyukakban). A csavarjaim átmérője körülbelül 3 mm.
A becsült ár megtalálható az alábbi BOM -ban (Bill of Materials).
1. lépés: A Raspberry Pi beállítása
A Raspberry Pi a projekt szíve.
Futtatni fogja a frontendet, a backendet és az adatbázist. Ez lesz a felelős a háttér és az Arduino közötti kommunikációért is.
A Raspberry Pi használatához a következőket kell tennünk:
1. rész: A Raspbian telepítése Raspberry Pi -re
Az oktatóanyag ennek módjáról itt található:
2. rész: A Raspbian telepítése a Raspberry Pi -re Az otthoni WiFi beállítása.
Ezt megteheti a wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf használatával
Indítsa újra a Pi -t, és látnia kell egy IP -címet az ifconfig beírásakor
3. rész: Telepítse a webszervert és az adatbázist
Miután elindította a Pi -t, a legjobb, ha megváltoztatja a jelszavát. Ezt megteheti a passwd paranccsal.
Ha ez megtörtént, telepítse az Apache, PHP, MariaDB és PHPMyAdmin alkalmazásokat.
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 install phpmyadmin -y
Ne felejtsen el beállítani egy biztonságos MySQL jelszót.
4. rész: A szükséges Python könyvtárak telepítése
A háttérrendszerhez szükségünk lesz néhány könyvtárra. Ezeket a pip3 paranccsal lehet telepíteni.
pip3 telepítse a mysql-connector-python programot
pip3 telepítse a flask-socketio-t
pip3 telepítse a lombikhüvelyeket
pip3 install geventpip3 install gevent-websocket
pip3 install ttn
2. lépés: Az elektronika elhelyezése


Ahhoz, hogy ez a projekt működjön, csatlakoztatnunk kell az összes elektronikát.
A LoRa pajzs könnyen a helyére tehető. Csak igazítsa a csapokat az Arduino csapjaihoz.
A többi kapcsolatot a Fritzing -sémám írja le. Ami innen letölthető:
3. lépés: Az adatbázis tervezése

Annak érdekében, hogy az összes játék- és érzékelőadatot tárolhassam, készítettem néhány táblázatot:
Az érzékelők mérései az érzékelőtáblákban találhatók. Ez tartalmaz egy hivatkozást az érzékelőre, a mérés értékére (pl. coördinates: 51.123456; 3.123456) és egy opcionális játék azonosítót (ha egy játék aktív volt a mérés során).
A játékosok neve és RFID -jelvényük UID -je. Az opcionális mezőmoderátor hozzáadásra kerül, ez a személy módosíthatja a játékot (pl. Leállíthatja idő előtt).
A játék információi (kezdési és befejezési idő).
spel_has_spelerA kapcsolat a spel és a speler között. Itt osztják ki a játékosokat egy játékba.
ebben a táblázatban a pontszám mentésre kerül. Ez tartalmazza a játék azonosítóját, a játékos azonosítóját, az időt, amikor ellopta a dobozt, és azt az időt, amikor elvesztette (amikor valaki más ellopja vagy amikor a játék véget ér). Ha kivonja a kezdési időt a befejezési időből, kiszámíthatja az adott felvételből kapott pontszámot.
Az adatbázis exportja megtalálható a GitHub -on (https://github.com/BoussonKarel/CaptureTheBox)
Nyissa meg az SQL -t a PHPMyAdmin / MySQL Workbench alkalmazásban, és futtassa azt. Az adatbázist most importálni kell.
4. lépés: Fiók beállítása TTN -en
1. lépés: Regisztráljon egy fiókot a TTN -en, és hozzon létre egy alkalmazást
Regisztráljon fiókot a TheThingsNetwork webhelyen, majd válassza a Konzol> Alkalmazás hozzáadása lehetőséget.
Válassza ki az alkalmazás nevét, majd kattintson az Alkalmazás hozzáadása gombra.
2. lépés: Regisztráljon egy eszközt
Az alkalmazás elkészítése után lépjen az Eszköz regisztrálása oldalra.
Válasszon egy eszközazonosítót, ez bármi lehet (ha kígyótok), és kattintson a Regisztráció gombra.
Kattintson a Generálás ikonra az Eszköz EUI alatt, így a TTN generál egyet Önnek.
3. lépés: Jegyezze fel hitelesítő adatait
Most menjen az Eszközhöz, és kattintson az Eszköz EUI, Alkalmazás EUI és Alkalmazáskulcs melletti Kód ikonra. Most bájtok tömbjeként kell megjelennie.
Másolás előtt kattintson a Váltás gombra, és győződjön meg arról, hogy Dev EUI és App EUI elsődleges LSB.
Az alkalmazáskulcsnak elsőnek MSB -nek kell maradnia (ezt ne változtassa meg).
Ezekre a kulcsokra lesz szüksége a következő lépésben: Az Arduino beállítása.
4. lépés: Írja le az Application Acces kulcsot
Most még egy kulcsra lesz szükségünk az MQTT beállításához a Raspberry Pi -n.
Nyissa meg az alkalmazást, és görgessen le a Hozzáférési kulcsok elemhez.
Erre szüksége lesz a Backend lépésben.
5. lépés: Az Arduino beállítása
Az Arduino kód megtalálható a GitHub -on is, az Arduino alatt (https://github.com/BoussonKarel/CaptureTheBox)
Ez a kód több lapra van osztva, hogy rendszerezett legyen.
A fő kód: pin deklarációk, setup () és loop ()
0_LoRa.inoEz a kód kezeli a LoRa használatával történő kommunikációt.
Az LDR, GPS és RFID címkék adatait 13 bájtos tömbbe helyezi, és továbbítja a TheThingsNetwork számára.
1_LDR.inoAnalogRead () használatával méri a fényfüggő ellenállás feszültségét.
Ezt azután a fény százalékos értékévé alakítják át (a 0 semmi, 100 a mobil zseblámpa).
2_GPS.inoEz a soros kommunikációt használja a TX1 és RX1 (Serial1) használatával.
NMEA üzeneteket (pontosabban a $ GPRMC üzeneteket) használ a doboz szélességének és hosszúságának megkereséséhez.
3_RFID.ino Az MFRC522 könyvtár használatával ez a kód új RFID -címkéket keres. Amikor jelen van, az RFID_lastUID formátumban tárolja.
4_DotMatrix.inoEz a kód a inicializálásra és a pontmátrix -kijelző beállítására szolgál. Tartalmazza a betöltő animáció definícióit stb.
Felállítása
Mielőtt feltöltheti ezt a kódot Arduino készülékére, telepítenie kell néhány könyvtárat.
Matthijskooijman Arduino-LMIC könyvtára (https://github.com/matthijskooijman/arduino-lmic)
Az MFRC522 könyvtár az RFID olvasóhoz (https://github.com/miguelbalboa/rfid)
Most menjen a main.ino oldalra, és módosítsa a DEVEUI, APPEUI és APPKEY beállításokat azokra, amelyeket az utolsó lépésben másolt.
6. lépés: A háttérrendszer beállítása
A projekt háttere megtalálható a GitHub -on, az RPI> Backend (https://github.com/BoussonKarel/CaptureTheBox) alatt.
Hogyan működik?
- 10 másodpercenként a kód keres egy aktív játékot. Ha talál egyet, akkor a huidigSpel (currentGame) nevű változóba menti
- Ha az üzemmód sorosra van állítva, kábelt használnak az Arduino és a Pi között. A Pi lekérdezi az LDR és a GPS értékeit. Az Arduino JSON formátummal válaszol. Az RFID -címkéket minden alkalommal elküldik, amikor bemutatják. Ezt az üzemmódot kizárólag fejlesztési célokra használták, és már nem szükséges.
- Ha az üzemmód LoRa -ra van állítva, akkor létrejön egy MQTT -ügyfél, amely visszahívást indít, amikor LoRa -adatokat fogad a TTN. Ez LDR, GPS és RFID adatokat tartalmaz.
- A kezelőfelület adatokat kérhet le az API végpontok segítségével. A legtöbb adat a huidigSpel.id használatával kerül lekérésre. Az adatok JSON formátumban kerülnek visszaadásra a jsonify () használatával
Lépjen a secrets.py oldalra, és írja be a LoRa alkalmazás nevét és a hozzáférési kulcsot (amit korábban leírt).
Lépjen a config.py oldalra, és töltse ki az adatbázis hitelesítő adatait (például jelszó, felhasználó…)
Próbálja meg futtatni az app.py -t, miután megerősítette, hogy ez működik, szolgáltatásként használhatjuk. Ez automatikusan elindítja a kódot a háttérben, amikor elindítja a pi -t.
Ehhez másolja a ctb_service.service mappát az /etc/systemd/system/ctb_service.service címre. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service
Most engedélyezze a systemctl enable ctb_service.service használatával
Ha módosítania kell a kódot, egyszerűen leállíthatja azt a systemctl stop használatával (ez újraindul újraindításkor), vagy letiltja (leállítja az automatikus indítást) a systemctl letiltásával.
Ha meg kell vizsgálnia a naplókat (hibák miatt), használhatja a journalctl -u ctb_service.service szolgáltatást.
A szolgáltatásokról bővebb információ itt található:
7. lépés: A kezelőfelület beállítása
A szokásos módon a kezelőfelület megtalálható a GitHub -on, az RPI> Frontend alatt (https://github.com/BoussonKarel/CaptureTheBox)
Illessze be a Raspberry Pi /var /html mappájába.
Ez tartalmazza a játékhoz szükséges összes weboldalt.
Tartalmaz egy szkriptet a háttérrendszerrel való kommunikációhoz (valós időben és az API végpontok használatával is).
8. lépés: A burkolat hozzáadása


A tokhoz egy régi szerszámtartót használtam, a következő anyagokkal/technikákkal együtt:
- 3D nyomtatás
- Hab az akkumulátor helyén tartásához
- Újrahasznosított fa deszka
- Forró ragasztó
- Csavarok és anyák
A te döntésed, hogy mit teszel az ügyeddel! A művészi szabadságot adom neked.
Inspirációként hozzáadtam néhány fotót a (kész) tokomról.
Ajánlott:
Ultrahangos érzékelő szabályozható rögzítése: 9 lépés (képekkel)

Szabályozható ultrahangos érzékelő tartó: Szia! Alejandro vagyok. 8. osztályos vagyok, és az IITA technológiai intézet tanulója vagyok. Erre a versenyre egy szabályozható rögzítést készítettem a robotika ultrahangos érzékelőjéhez, amelyet közvetlenül a robothoz vagy egy szervóhoz lehet csatlakoztatni, és
Laptop Lego Webkamera/modul rögzítése: 5 lépés

Laptop Lego Webkamera/modul rögzítése: Itt egy módja annak, hogy webkamerát vagy esetemben hangszórót rögzítsen egy laptophoz. A kialakítás könnyen megváltoztatható a legjobb illeszkedés érdekében
A hüvelykujj meghajtó sapkájának rögzítése: 3 lépés (képekkel)

Hogyan lehet megkötni a hüvelykujj -meghajtó sapkáját: A Corsair GTX hüvelykujj -meghajtóm egy nagyon masszív eszköz, kemény, alumínium külsővel. Azonban nincs rögzítés a kupak és a hüvelykujj -meghajtó teste között, így a kupak elvesztése nagyon reális lehetőség. Ebben a rövid utasításban
Az Onyx Neo fülhallgató rögzítése (nem töltés): 7 lépés

Az Onyx Neo fülhallgató rögzítése (nem töltés): Egy ideje vettem néhány Onyx Neo fülhallgatót. Nagyon jó hangot adnak, és szeretem őket, de a közelmúltban úgy döntöttek, hogy abbahagyják a töltést. Mivel meglehetősen olcsók voltak, először azt hittem, hogy az akkumulátor halt meg a rossz minőségű használat miatt
Cédrus (szivar?) Doboz hangszóró doboz: 8 lépés (képekkel)

Cedar (szivar?) Doboz hangszóró doboz: A Munny hangszórók ihlette, de nem hajlandó többet költeni, mint 10 dollár, itt az én útmutatásom a régi számítógépes hangszórók, a fából készült doboz a takarékboltból és sok forró ragasztó segítségével