Sadržaj:
- Supplies
- Korak 1: Postavljanje Raspberry Pi
- Korak 2: Postavljanje elektronike
- Korak 3: Dizajniranje baze podataka
- Korak 4: Postavljanje računa na TTN -u
- Korak 5: Postavljanje Arduina
- Korak 6: Postavljanje pozadine
- Korak 7: Postavljanje sučelja
- Korak 8: Dodavanje kućišta
Video: Snimite kutiju: 8 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:05
Capture The Box je timska igra koju možete igrati sa prijateljima u vašem susjedstvu.
Cilj je uhvatiti kutiju i držati je u svom posjedu što je duže moguće, dok drugi igrači pokušavaju otići i iskrasti je dalje od vašeg trijema ili prednjeg vrta.
Ova igra koristi GPS za lociranje okvira i RFID oznake za identifikaciju igrača. Opcijski LDR može se dodati kako bi se intenzitet matričnog prikaza uskladio s postotkom svjetlosti u tom području.
Supplies
Mikrokontroleri i računari
- Raspberry Pi
- Arduino (Mega) Odabrao sam Arduino Mega umjesto normalnog Unoa, jer ima puno više pinova. To je potrebno jer koristimo Dragino LoRa štit, koji bi nam ostavio premalo digitalnih pinova pri korištenju UNO -a. SAVJET: Najbolje je koristiti original jer kineski klonovi ne rade uvijek kako se očekivalo.
Senzori i moduli
- 4 MAX7219 Dot Matrix modulaPovežite DOUT na DIN, CS na CS, CLK na CLK…
- Otpornik ovisan o svjetlosti (10K) + otpornik (10K)
- NEO-7M (ili sličan) GPS modulKoristim VMA430 iz Vellemana
- RC522 RFID modul+ neke RFID značke/kartice
Za korištenje LoRa (bežične tehnologije)
Dragino Lora Shield
Opcijski senzori i moduli
LCD ekran Za prikaz IP adrese Raspberry Pi
Za postavljanje testa
Matična ploča i Dupont kablovi (muško-muški)
Opciono (kućište)
- Lemilica
- Stara kutija za alat
- Materijali za 3D štampanje
- Neke tanke drvene daske
- Neki vijci i matice (koji mogu stati u Arduino rupe). Moji vijci imaju promjer oko 3 mm.
Procijenjena cijena može se naći u BOM -u (Bill of Materials), dolje navedenom.
Korak 1: Postavljanje Raspberry Pi
Raspberry Pi je srce projekta.
Pokretat će frontend, pozadinu i bazu podataka. Također će biti odgovoran za komunikaciju između pozadine i Arduina.
Da bismo mogli koristiti Raspberry Pi, morat ćemo učiniti sljedeće:
1. dio: Instalirajte Raspbian na Raspberry Pi
Vodič o tome kako to učiniti možete pronaći ovdje:
Dio 2: Instalirajte Raspbian na Raspberry PiSetting your home WiFi.
To se može učiniti pomoću wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
Ponovo pokrenite Pi i trebali biste vidjeti IP adresu prilikom upisivanja ifconfig
Dio 3: Instalirajte web server i bazu podataka
Kada pokrenete svoj Pi, najbolje je promijeniti lozinku. To se može učiniti pomoću naredbe passwd.
Kad to učinite, nastavite i instalirajte Apache, PHP, MariaDB i PHPMyAdmin.
Apache, PHP sudo apt instalirajte apache2 -y sudo apt instalirajte php libapache2 -mod -php -y
MariaDB sudo apt instaliraj mariadb-server mariadb-client -y sudo apt instaliraj php-mysql -y sudo systemctl ponovo pokreni apache2.service
PHPMyAdminsudo apt install phpmyadmin -y
Ne zaboravite postaviti sigurnu lozinku za MySQL.
Dio 4: Instaliranje potrebnih Python biblioteka
Za pozadinu će nam trebati neke biblioteke. Oni se mogu instalirati pomoću naredbe pip3.
pip3 instalirajte mysql-connector-python
pip3 instalirajte flask-socketio
pip3 instalirajte flask-cors
pip3 install geventpip3 install gevent-websocket
pip3 install ttn
Korak 2: Postavljanje elektronike
Da bi ovaj projekt funkcionirao, moramo povezati svu elektroniku.
LoRa štitnik se može lako postaviti. Samo poravnajte pinove sa iglama na vašem Arduinu.
Ostale veze opisane su u mojoj Fritzing shemi. Koje možete preuzeti ovde:
Korak 3: Dizajniranje baze podataka
Da bih mogao pohraniti sve podatke o igri i senzorima, napravio sam nekoliko tablica:
mjerenje i senzor Mjerenja sa senzora, koja se nalaze u tablicama senzora. Sadrže referencu na senzor, vrijednost mjerenja (npr. koordinate: 51.123456; 3.123456) i opcionalni ID igre (ako je igra bila aktivna tokom mjerenja).
igrači Imena igrača i UID njihove RFID značke. Dodatni moderator polja je dodan, ova osoba može izmijeniti igru (npr. Zaustaviti je prije vremena).
spelInformacije o igri (početak i završetak).
spel_has_speler Odnos između spela i spelera. Ovdje se igrači dodjeljuju igri.
bezit U ovoj tabeli rezultat je sačuvan. Sadrži ID igre, ID igrača, vrijeme kada je ukrao kutiju i vrijeme kada ju je izgubio (kada je neko drugi ukrade ili kada se igra završi). Oduzimanjem vremena početka od vremena završetka, možete izračunati rezultat koji je dobio od tog snimanja.
Izvoz baze podataka može se pronaći na mom GitHubu (https://github.com/BoussonKarel/CaptureTheBox)
Otvorite sql u PHPMyAdmin / MySQL radnom stolu i pokrenite ga. Sada bi trebalo uvesti bazu podataka.
Korak 4: Postavljanje računa na TTN -u
Korak 1: Prijavite se za račun na TTN -u i kreirajte aplikaciju
Prijavite se za račun na TheThingsNetwork, a zatim idite na Konzola> Dodaj aplikaciju.
Odaberite naziv aplikacije i kliknite Dodaj aplikaciju.
Korak 2: Registrirajte uređaj
Kada podnesete aplikaciju, idite na Registracija uređaja.
Odaberite ID uređaja, to može biti što god želite (sve dok je u pitanju zmija) i kliknite Registracija.
Kliknite ikonu Generiraj pod EUI uređaja, tako da će TTN generirati jednu za vas.
Korak 3: Zapišite svoje vjerodajnice
Sada idite na svoj uređaj i kliknite ikonu koda pored EUI uređaja, EUI aplikacije i ključ aplikacije. Sada bi se trebao pojaviti kao niz bajtova.
Prije kopiranja kliknite gumb Promijeni i provjerite jesu li vaš Dev EUI i EUI za aplikaciju LSB PRVI.
Vaš ključ aplikacije trebao bi ostati MSB PRVI (nemojte to mijenjati).
Ovi ključevi trebat će vam u sljedećem koraku: Postavljanje Arduina.
Korak 4: Zapisivanje ključa Pristup aplikaciji
Sada će nam trebati još jedan ključ za postavljanje MQTT -a na našem Raspberry Pi.
Idite na svoju aplikaciju i pomaknite se dolje do ključeva za pristup.
Ovo će vam trebati u Backend koraku.
Korak 5: Postavljanje Arduina
Arduino kod možete pronaći i na mom GitHub -u, pod Arduino (https://github.com/BoussonKarel/CaptureTheBox)
Ovaj kôd je podijeljen na više kartica kako bi bio organiziran.
main.ino Glavni kod: pin deklaracije, setup () i loop ()
0_LoRa.inoOvaj kod upravlja komunikacijom pomoću LoRa.
On stavlja podatke LDR, GPS i RFID oznaka u niz od 13 bajtova i šalje ih u TheThingsNetwork.
1_LDR.ino Koristeći analogRead (), mjeri količinu napona na otporniku zavisnom od svjetlosti.
Ovo se zatim pretvara u postotak svjetlosti (0 nije ništa, 100 je svjetiljka za mobitel).
2_GPS.inoOvo koristi serijsku komunikaciju pomoću TX1 i RX1 (Serial1).
Koristi NMEA poruke (da budem precizan u $ GPRMC porukama) da pronađe geografsku širinu i dužinu okvira.
3_RFID.inoKorišćenjem biblioteke MFRC522, ovaj kod skenira nove RFID oznake. Kad god je jedan prisutan, skladišti se kao RFID_lastUID.
4_DotMatrix.inoOvaj kôd se koristi za inicijalizaciju i postavljanje matričnog prikaza. Sadrži definicije za animaciju učitavanja itd …
Postavljanje
Prije nego što možete prenijeti ovaj kôd na svoj Arduino, morat ćete instalirati nekoliko biblioteka.
Biblioteka Arduino-LMIC autora matthijskooijman (https://github.com/matthijskooijman/arduino-lmic)
Biblioteka MFRC522 za RFID čitač (https://github.com/miguelbalboa/rfid)
Sada idite na main.ino i promijenite DEVEUI, APPEUI i APPKEY u one koje ste kopirali u posljednjem koraku.
Korak 6: Postavljanje pozadine
Pozadina ovog projekta može se pronaći na mom GitHub -u, pod RPI> Backend (https://github.com/BoussonKarel/CaptureTheBox).
Kako to radi?
- Svakih 10 sekundi kôd traži aktivnu igru. Ako se pronađe, sprema se u varijablu koja se zove huidigSpel (currentGame)
- Ako je način rada postavljen na Serijski, koristi se kabel između Arduina i Pi -ja. Pi anketira vrijednosti LDR -a i GPS -a. Arduino odgovara JSON formatom. RFID oznake se šalju kad god se predstave. Ovaj način rada koristio se isključivo u razvojne svrhe i više nije potreban.
- Ako je način rada postavljen na LoRa, kreira se MQTT klijent koji pokreće povratni poziv svaki put kada LoRa podatke primi TTN. Sadrži LDR, GPS i RFID podatke.
- Frontend može dohvatiti podatke pomoću krajnjih tačaka API -ja. Većina podataka se dohvaća pomoću huidigSpel.id. Podaci se vraćaju u JSON formatu pomoću jsonify ()
Izmijenite postavke Idite na secrets.py i popunite naziv svoje LoRa aplikacije i svoj ključ pristupa (zapisali ste ranije).
Idite na config.py i popunite akreditive baze podataka (poput lozinke, korisnika …)
Postavljanje kao usluge Pokušajte pokrenuti app.py, nakon što potvrdite da ovo radi, možemo ga koristiti kao uslugu. Ovo će automatski pokrenuti kôd u pozadini kada pokrenete svoj pi.
Da biste to učinili, kopirajte ctb_service.service u /etc/systemd/system/ctb_service.service. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service
Sada ga omogućite pomoću systemctl enable ctb_service.service
Ako trebate unijeti neke izmjene u kôd, možete ga jednostavno zaustaviti upotrebom systemctl stop (ovo će se ponovo pokrenuti pri ponovnom pokretanju) ili onemogućiti je (spriječiti automatsko pokretanje) pomoću systemctl disable.
Ako trebate pregledati zapisnike (zbog grešaka), možete koristiti journalctl -u ctb_service.service.
Više informacija o uslugama možete pronaći ovdje:
Korak 7: Postavljanje sučelja
Kao i obično, frontend se može pronaći na mom GitHub -u, pod RPI> Frontend (https://github.com/BoussonKarel/CaptureTheBox)
Zalijepite ovo u /var /html mapu vašeg Raspberry Pi.
Ovo sadrži sve potrebne web stranice za igru.
Sadrži i skriptu za komunikaciju sa pozadinom (i u stvarnom vremenu i koristeći API krajnje tačke).
Korak 8: Dodavanje kućišta
Za kućište sam koristio staru kutiju za alat, zajedno sa sljedećim materijalima/tehnikama:
- 3D štampanje
- Pena za držanje baterije na mestu
- Reciklirane drvene daske
- Vruće ljepilo
- Vijci i matice
Šta ćete raditi sa vašim kućištem vaš je izbor! Daću vam umetničku slobodu.
Za inspiraciju sam dodao neke fotografije svog (završenog) kućišta.
Preporučuje se:
Snimite sjajne fotografije s iPhoneom: 9 koraka (sa slikama)
Snimajte sjajne fotografije s iPhoneom: Većina nas ovih dana nosi pametni telefon sa sobom posvuda, pa je važno znati kako koristiti kameru pametnog telefona za snimanje sjajnih fotografija! Pametni telefon imam tek nekoliko godina i volio sam imati pristojnu kameru za dokumentiranje stvari koje
Snimite bootloader u Arduino Nano 3.0 kloniranu ploču: 11 koraka
Burn Bootloader na Arduino Nano 3.0 Clone Board: nedavno je kupljen Arduino Nano 3.0 Clone od AliExpress -a koji je došao bez pokretačkog programa. Siguran sam da ima mnogo drugih ljudi koji su u istoj situaciji kao i ja, a možda su isprva pomalo poludjeli! Ne brinite, u ovom uputstvu
ESP32-CAM Snimite fotografije i pošaljite ih putem e-pošte pomoću SPIFF memorije. -- NE Potrebna SD kartica: 4 koraka
ESP32-CAM Snimite fotografije i pošaljite ih putem e-pošte pomoću SPIFF memorije. || Nije potrebna SD kartica: Pozdrav narode, ESP32-CAM ploča je jeftina razvojna ploča koja kombinira ESP32-S čip, kameru OV2640, nekoliko GPIO-ova za povezivanje perifernih uređaja i utor za microSD karticu. Ima niz aplikacija u rasponu od web servera za video streaming, ali
Snimite i pošaljite slike pomoću ESP32-Cam pomoću ESP8266 WeMos D1 R1 Wifi procesora sa Uno: 7 koraka
Snimite i pošaljite slike pomoću ESP32-Cam pomoću ESP8266 WeMos D1 R1 Wifi procesora sa Uno: Snimite sliku pomoću ESP32-Cam (OV2640) pomoću ESP8266 WeMos D1 R1 WiFI procesora sa Uno-om i pošaljite ga na e-poštu, sačuvajte na Google disku i pošaljite na Whatsapp koristi Twilio.Zahtjevi: ESP8266 WeMos D1 R1 WiFI procesor sa Uno (https: // protosupplies
Snimite videozapise s ubrzanjem pomoću Raspberry Pi -a (11 redova koda): 12 koraka (sa slikama)
Snimajte videozapise s ubrzanjem pomoću Raspberry Pi -a (11 redova koda): Nedavno sam prvi put posadio neko sjeme u svoj stolni lonac. Zaista sam bio uzbuđen gledati ih kako rastu, ali kao što svi znamo to je spor proces. Nisam mogao vidjeti rast kako me jako razočarao, ali odjednom me je probudio hobist elektronike u meni