
Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-23 15:08


Capture The Box je timska igra, ki jo lahko igrate s prijatelji v vaši soseščini.
Cilj je ujeti škatlo in jo hraniti v svoji posesti čim dlje, medtem ko jo drugi igralci poskušajo odnesti stran od verande ali pred vrtom.
Ta igra uporablja GPS za iskanje škatle in RFID oznake za identifikacijo igralcev. Izbirni LDR lahko dodate tako, da se intenzivnost matričnega prikaza ujema z odstotkom svetlobe na območju.
Zaloge
Mikrokrmilniki in računalniki
- Malina Pi
- Arduino (Mega) Izbral sem Arduino Mega pred običajnim Uno, ker ima veliko več zatičev. To je potrebno, ker uporabljamo ščit Dragino LoRa, ki bi nam pri uporabi UNO pustil premalo digitalnih zatičev. NAMIG: Najbolje je, da uporabite pravega, ker kitajski kloni ne delujejo vedno po pričakovanjih.
Senzorji in moduli
- 4 matrični moduli MAX7219 Priključite DOUT na DIN, CS na CS, CLK na CLK…
- Odvisno od svetlobe upor (10K) + upor (10K)
- NEO-7M (ali podoben) GPS modul Uporabljam VMA430 podjetja Velleman
- RC522 RFID modul+ nekaj značk/kartic RFID
Za uporabo LoRa (brezžična tehnologija)
Dragino Lora Ščit
Izbirni senzorji in moduli
LCD zaslon Za prikaz naslova IP Raspberry Pi
Za preskusno nastavitev
Ohišje in kabli Dupont (moški-moški)
Izbirno (ohišje)
- Spajkalnik
- Stara torbica za orodje
- Materiali za 3D tiskanje
- Nekaj tankih lesenih desk
- Nekateri vijaki in matice (ki se lahko prilegajo v luknje Arduino). Moji vijaki imajo premer približno 3 mm.
Ocenjeno ceno najdete v spodaj navedeni BOM (Bill of Materials).
1. korak: Nastavitev Raspberry Pi
Raspberry Pi je srce projekta.
Zagnala bo prednjo stran, zaledje in bazo podatkov. Odgovoren bo tudi za komunikacijo med zaledjem in Arduinom.
Če želimo uporabljati Raspberry Pi, moramo narediti naslednje:
1. del: Namestite Raspbian na Raspberry Pi
Vadnico o tem, kako to storiti, najdete tukaj:
2. del: Namestite Raspbian na Raspberry Pi Nastavitev domačega WiFi -ja.
To lahko storite z uporabo wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
Znova zaženite Pi in pri vnosu ifconfig bi morali videti naslov IP
3. del: Namestite spletni strežnik in bazo podatkov
Ko zaženete svoj Pi, je najbolje, da spremenite geslo. To lahko storite z ukazom passwd.
Ko to storite, namestite Apache, PHP, MariaDB in PHPMyAdmin.
Apache, PHP sudo apt namestite apache2 -y sudo apt namestite php libapache2 -mod -php -y
MariaDB sudo apt namestite mariadb-strežnik mariadb-client -y sudo apt namestite php-mysql -y sudo systemctl znova zaženite apache2.service
PHPMyAdminsudo apt install phpmyadmin -y
Ne pozabite nastaviti varnega gesla za MySQL.
4. del: Namestitev potrebnih knjižnic Python
Za ozadje bomo potrebovali nekaj knjižnic. Te lahko namestite z ukazom pip3.
pip3 namestite mysql-connector-python
pip3 namestite flask-socketio
pip3 namestite flask-cors
pip3 namestite geventpip3 namestite gevent-websocket
pip3 namestite ttn
2. korak: Postavitev elektronike


Da bi ta projekt deloval, moramo povezati vso elektroniko.
Ščitnik LoRa lahko enostavno namestite. Samo poravnajte zatiče z zatiči na vašem Arduinu.
Druge povezave so opisane v moji shemi Fritzing. Katero lahko prenesete tukaj:
3. korak: Oblikovanje zbirke podatkov

Za shranjevanje vseh podatkov o igri in senzorjih sem naredil nekaj tabel:
merjenje in senzor Meritve iz senzorjev, najdene v tabelah senzorjev. Vsebuje sklic na senzor, vrednost meritve (npr. koordinate: 51.123456; 3.123456) in izbirni ID igre (če je bila igra med merjenjem aktivna).
spelerImena igralcev in UID njihove značke RFID. Dodan je izbirni moderator polja, ta oseba lahko spremeni igro (npr. Zaustavi jo pred časom).
spel Informacije o igri (začetni in končni čas).
spel_has_speler Razmerje med spel in spelerjem. Tu so igralci dodeljeni igri.
brezit V tej tabeli se rezultat shrani. Vsebuje ID igre, ID igralca, čas, ko je polje ukradel, in čas, ko ga je izgubil (ko ga ukrade kdo drug ali ko se igra konča). Če od končnega časa odštejete začetni čas, lahko izračunate rezultat, ki ga je dobil pri tem zajemu.
Izvoz baze podatkov najdete na mojem GitHubu (https://github.com/BoussonKarel/CaptureTheBox)
Odprite sql v PHPMyAdmin / MySQL Workbench in ga zaženite. Zdaj je treba uvoziti bazo podatkov.
4. korak: Nastavitev računa na TTN
1. korak: Prijavite se za račun na TTN in ustvarite aplikacijo
Prijavite se za račun v TheThingsNetwork, nato pojdite na Console> Add application.
Izberite ime aplikacije in kliknite Dodaj aplikacijo.
2. korak: Registrirajte napravo
Ko se prijavite, pojdite na Register device.
Izberite ID naprave, to je lahko karkoli želite (dokler je kača) in kliknite Register.
Kliknite ikono Ustvari pod EUI naprave, zato jo bo TTN ustvaril za vas.
3. korak: Zapišite svoje poverilnice
Zdaj pojdite na svojo napravo in kliknite ikono kode zraven uporabniškega vmesnika naprave, uporabniškega vmesnika aplikacije in ključa aplikacije. Zdaj bi moral biti prikazan kot niz bajtov.
Preden kopirate, kliknite gumb Preklopi in se prepričajte, da sta vaš Dev EUI in EUI uporabniški vmesnik LSB PRVI.
Vaš ključ aplikacije mora ostati MSB PRVI (tega ne spreminjajte).
V naslednjem koraku boste potrebovali te ključe: nastavitev Arduina.
4. korak: Zapišite ključ dostopa do aplikacije
Zdaj bomo potrebovali še en ključ za nastavitev MQTT na našem Raspberry Pi.
Pojdite na aplikacijo in se pomaknite navzdol do ključev dostopa.
To boste potrebovali v koraku Backend.
5. korak: Nastavitev Arduina
Kodo Arduino lahko najdete tudi na mojem GitHubu pod Arduino (https://github.com/BoussonKarel/CaptureTheBox)
Ta koda je za večjo organiziranost razdeljena na več zavihkov.
main.ino Glavna koda: deklaracije pin, setup () in zanka ()
0_LoRa.inoTa koda upravlja komunikacijo z uporabo LoRa.
Podatke oznak LDR, GPS in RFID postavi v niz 13 bajtov in jih pošlje v TheThingsNetwork.
1_LDR.ino Z uporabo analogRead () meri količino napetosti na svetlobno odvisnem uporu.
Ta se nato pretvori v odstotek svetlobe (0 ni nič, 100 je svetilka za mobilni telefon).
2_GPS.inoTo uporablja serijsko komunikacijo z uporabo TX1 in RX1 (Serial1).
Za iskanje zemljepisne širine in dolžine polja uporablja sporočila NMEA (natančneje sporočila $ GPRMC).
3_RFID.ino Z uporabo knjižnice MFRC522 ta koda išče nove oznake RFID. Kadar koli je prisotna, se shrani kot RFID_lastUID.
4_DotMatrix.inoTa koda se uporablja za inicializacijo in nastavitev matričnega prikaza. Vsebuje definicije za nalaganje animacije itd …
Nastavitev
Preden lahko to kodo naložite v svoj Arduino, morate namestiti nekaj knjižnic.
Knjižnica Arduino-LMIC avtorja matthijskooijman (https://github.com/matthijskooijman/arduino-lmic)
Knjižnica MFRC522 za bralnik RFID (https://github.com/miguelbalboa/rfid)
Zdaj pojdite na main.ino in spremenite DEVEUI, APPEUI in APPKEY v tiste, ki ste jih kopirali v zadnjem koraku.
6. korak: Nastavitev zaledja
Zaledje tega projekta najdete na mojem GitHubu pod RPI> Backend (https://github.com/BoussonKarel/CaptureTheBox).
Kako deluje?
- Koda vsakih 10 sekund išče aktivno igro. Če jo najdemo, jo shranimo v spremenljivko, imenovano huidigSpel (currentGame)
- Če je način nastavljen na Serijski, se med Arduinom in Pi uporablja kabel. Pi išče vrednosti LDR in GPS. Arduino se odzove v formatu JSON. Oznake RFID se pošljejo vsakič, ko so predstavljene. Ta način je bil uporabljen izključno za razvojne namene in v resnici ni več potreben.
- Če je način nastavljen na LoRa, se ustvari odjemalec MQTT, ki sproži povratni klic, kadar TTN prejme podatke LoRa. Ta vsebuje podatke LDR, GPS in RFID.
- Frontend lahko pridobi podatke s pomočjo končnih točk API. Večina podatkov se pridobi z uporabo huidigSpel.id. Podatki se vrnejo v obliki JSON z uporabo jsonify ()
Spremenite nastavitve Pojdite na secrets.py in vnesite ime aplikacije LoRa in ključ dostopa (zapisali ste prej).
Pojdite na config.py in vnesite poverilnice za bazo podatkov (na primer geslo, uporabnika …)
Nastavitev kot storitve Poskusite zagnati app.py, ko potrdite, da to deluje, ga lahko uporabimo kot storitev. To bo samodejno zagnalo kodo v ozadju, ko zaženete pi.
Če želite to narediti, kopirajte ctb_service.service v /etc/systemd/system/ctb_service.service. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service
Zdaj ga omogočite z uporabo systemctl enable ctb_service.service
Če morate kodo nekaj spremeniti, jo lahko preprosto ustavite s sistemom systemctl stop (to se bo znova zagnalo ob ponovnem zagonu) ali pa onemogočite (prepreči samodejni zagon) z uporabo systemctl disable.
Če morate pregledati dnevnike (zaradi napak), lahko uporabite journalctl -u ctb_service.service.
Več informacij o storitvah najdete tukaj: https://www.raspberrypi.org/documentation/linux/us..
7. korak: Nastavitev prednje strani
Kot običajno lahko frontend najdete na mojem GitHubu pod RPI> Frontend (https://github.com/BoussonKarel/CaptureTheBox)
To prilepite v mapo /var /html vašega Raspberry Pi.
Ta vsebuje vse potrebne spletne strani za igro.
Vsebuje tudi skript za komunikacijo z zaledjem (v realnem času in z uporabo končnih točk API).
8. korak: Dodajanje ohišja


Za ohišje sem uporabil staro ohišje za orodje skupaj z naslednjimi materiali/tehnikami:
- 3D tiskanje
- Pena za ohranjanje baterije na mestu
- Reciklirane lesene deske
- Vroče lepilo
- Vijaki in matice
Kaj boste storili s svojim primerom, je vaša izbira! Dala vam bom umetniško svobodo.
Za navdih sem dodal nekaj fotografij moje (končane) zadeve.
Priporočena:
Kako pretvoriti star/poškodovan računalnik ali prenosni računalnik v medijsko škatlo: 9 korakov

Kako pretvoriti star/poškodovan računalnik ali prenosni računalnik v medijsko škatlo: V svetu, kjer tehnologija napreduje najhitreje kot mi, naša ljubljena elektronika prehitro zastara. Morda so vaše vedno ljubeče mačke na prenosni računalnik padle na mizo in zaslon se je zlomil. Ali pa morda želite medijsko škatlo za pametni televizor
Kako narediti UV sanitarno škatlo: 5 korakov

Kako narediti UV sanitarno škatlo: V tem projektu bi vdrli v UV škatlo za nohte in jo spremenili v UV sanitarno škatlo. Covid 19 je pandemija, ki se širi po vsem svetu, zdravstveni sistem je bil kompromisen in potrebuje osebno zaščitno opremo. Ponovna uporaba osebnih zaščitnih sredstev namesto nakupa novih
Izboljšajte svojo neuporabno škatlo: 5 korakov

Izboljšajte svojo neuporabno škatlo: Ta navodila vam pokažejo, kako lahko izboljšate svojo neuporabno škatlo, ko se odzove prehitro, tako da imate po preklopu stikala za vklop škatle premalo časa, da odstranite prst
Naredite čudovito škatlo za nakit z uporabo Fusion: 7 korakov (s slikami)

Naredite čudovito škatlo za nakit z uporabo Fusion: To je ena najbolj dekliških stvari, ki sem jih naredil s Fusionom. Kot material sem uporabil steklo, ki mi bo pomagalo pri pregledovanju. Vem, kako boleče je iskanje vašega nakita;)
Kako narediti rezalnik za škatlo za jajca: 8 korakov

Kako narediti rezalnik za škatlo za jajca: Smo ekipa treh študentov industrijskega oblikovanja izdelkov. Ta pouk je zbirka našega trdega dela in raziskav v tem semestru. Naloga tega semestra je bila izdelati stroj, ki bi otrokom z motnjami v duševnem razvoju pomagal pri