Mündəricat:

Qutunu ələ keçirin: 8 addım
Qutunu ələ keçirin: 8 addım

Video: Qutunu ələ keçirin: 8 addım

Video: Qutunu ələ keçirin: 8 addım
Video: Pərdə arxası #2 - Fahişə həyatı - uşaqlar baxmasın 2024, Noyabr
Anonim
Qutunu ələ keçirin
Qutunu ələ keçirin
Qutunu ələ keçirin
Qutunu ələ keçirin

Capture The Box, qonşuluğunuzdakı dostlarınızla oynaya biləcəyiniz bir komanda qurma oyunudur.

Məqsəd, digər oyunçular gedib eyvanınızdan və ya ön bağçanızdan qaçmağa çalışarkən qutunu ələ keçirmək və mümkün qədər uzun müddət əlinizdə saxlamaqdır.

Bu oyun qutuları tapmaq üçün GPS və oyunçuları müəyyən etmək üçün RFID etiketlərindən istifadə edir. Dot matrix ekranının intensivliyini sahədəki işıq faizi ilə uyğunlaşdırmaq üçün əlavə LDR əlavə edilə bilər.

Təchizat

Mikrokontrollerlər və kompüterlər

  • Moruq Pi
  • Arduino (Mega) Daha çox sancaqlar olduğu üçün normal bir Uno üzərində bir Arduino Mega seçdim. Bir UNO istifadə edərkən bizə çox az rəqəmsal pin qoyacaq bir Dragino LoRa qalxanı istifadə etdiyimiz üçün bu lazımdır. İPUCU: Ən əslini istifadə etmək yaxşıdır, çünki Çin klonları həmişə gözlənildiyi kimi işləmir.

Sensorlar və modullar

  • 4 MAX7219 Dot Matrix Modulu DOUT -u DIN -ə, CS -ni CS -ə, CLK -ə CLK -a bağlayın …
  • İşıqdan Rezistor (10K) + Rezistor (10K)
  • NEO-7M (və ya bənzəri) GPS Modulu Velleman-dan VMA430 istifadə edirəm
  • RC522 RFID Modulu+ bəzi RFID nişanları/kartları

LoRa (simsiz texnologiya) istifadə üçün

Dragino Lora Shield

İsteğe bağlı sensorlar və modullar

LCD displey Raspberry Pi -nin IP ünvanını göstərmək üçün

Test qurmaq üçün

Çörək taxtası və Dupont Kabelləri (Kişi-Kişi

İsteğe bağlı (korpus)

  • Lehimleme dəmir
  • Köhnə alət qutusu
  • 3D çap üçün materiallar
  • Bəzi nazik taxta lövhələr
  • Bəzi cıvatalar və qoz -fındıqlar (Arduino deliklərinə sığa bilər). Vintlərimin diametri təxminən 3 mm -dir.

Təxmini bir qiymət, aşağıda daxil olan BOM -da (Material Bill) tapıla bilər.

Addım 1: Raspberry Pi qurmaq

Raspberry Pi, layihənin mərkəzidir.

Ön, arxa və verilənlər bazasını idarə edəcək. Arxa arxa ilə Arduino arasındakı ünsiyyətdən də məsul olacaq.

Raspberry Pi -dən istifadə etmək üçün aşağıdakıları etməliyik:

1 -ci hissə: Raspbian -ı Raspberry Pi -yə quraşdırın

Bunun necə ediləcəyinə dair bir təlimatı burada tapa bilərsiniz:

2 -ci hissə: Raspbian -ı Raspberry Pi -yə quraşdırın Ev WiFi -ni qurun.

Bu wpa_passphrase "Şəbəkəniz" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf istifadə edərək edilə bilər.

Pi'yi yenidən başladın və ifconfig yazarkən bir IP ünvanı görməlisiniz

3 -cü hissə: Veb serveri və verilənlər bazasını quraşdırın

Pi -ni işə saldıqdan sonra parolunuzu dəyişdirmək ən yaxşısıdır passwd əmri ilə edilə bilər.

Bunu etdikdən sonra davam edin və Apache, PHP, MariaDB və PHPMyAdmin qurun.

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 apache2.service yenidən başladın

PHPMyAdminsudo apt install phpmyadmin -y

Təhlükəsiz bir MySQL şifrəsi qurmağı unutmayın.

4 -cü hissə: Lazım olan Python kitabxanalarının quraşdırılması

Arxa plan üçün bəzi kitabxanalara ehtiyacımız olacaq. Bunlar pip3 əmri ilə quraşdırıla bilər.

pip3 mysql-connector-python qurun

pip3 flask-socketio qurun

pip3 flask-cors quraşdırın

pip3 geventpip3 gevent-websocket quraşdırın

pip3 ttn quraşdırın

Addım 2: Elektronikanın qoyulması

Elektronikanın Yerləşdirilməsi
Elektronikanın Yerləşdirilməsi
Elektronikanın Yerləşdirilməsi
Elektronikanın Yerləşdirilməsi

Bu layihənin işləməsi üçün bütün elektronikaları birləşdirməliyik.

LoRa qalxanı asanlıqla yerinə yerləşdirilə bilər. Sadəcə sancaqları Arduino üzərindəki sancaqlar ilə hizalayın.

Digər əlaqələr Fritzing sxemimdə təsvir edilmişdir. Hansını buradan yükləyə bilərsiniz:

Addım 3: Verilənlər bazasının hazırlanması

Verilənlər bazasının hazırlanması
Verilənlər bazasının hazırlanması

Bütün oyun və sensorlar məlumatlarını saxlaya bilmək üçün bir neçə cədvəl hazırladım:

Sensor cədvəllərində tapılan sensorlardakı ölçmələr, sensorun istinadını, ölçmənin dəyərini (məsələn, koordinatlar: 51.123456; 3.123456) və isteğe bağlı bir oyun idini (ölçü zamanı oyun aktiv olsaydı) ehtiva edir..

Oyunçu adları və RFID nişanının UID -si. İsteğe bağlı bir sahə moderatoru əlavə olunur, bu adam oyunu dəyişdirə bilər (məsələn, vaxtından əvvəl dayandırmaq).

Oyun məlumatı (başlanğıc və son vaxt).

spel_has_spelerSpel və speler arasındakı əlaqə. Oyunçuların bir oyuna təyin olunduğu yer budur.

Bu cədvəldə hesab saxlanılır. Oyun id, oyunçu id, qutunu oğurladığı vaxt və itirdiyi vaxt (başqası oğurladıqda və ya oyun bitəndə) ehtiva edir. Bitmə vaxtından başlanğıc vaxtını çıxarmaqla, bu tutmadan əldə etdiyi balı hesablaya bilərsiniz.

Verilənlər bazasının ixracını GitHub -da tapa bilərsiniz (https://github.com/BoussonKarel/CaptureTheBox)

SQL -i PHPMyAdmin / MySQL Workbench -də açın və işə salın. İndi verilənlər bazası idxal edilməlidir.

Addım 4: TTN -də bir hesab qurun

Addım 1: TTN -də bir hesab üçün qeydiyyatdan keçin və bir tətbiq yaradın

TheThingsNetwork -də bir hesab üçün qeydiyyatdan keçin, sonra Konsol> Tətbiq əlavə et -ə gedin.

Tətbiqiniz üçün bir ad seçin və Tətbiq əlavə et düyməsini basın.

Addım 2: Bir cihazı qeyd edin

Müraciətinizi etdikdən sonra cihazın Qeydiyyatına keçin.

Bir cihaz id seçin, bu istədiyiniz hər şey ola bilər (ilan halında olduğu müddətdə) və Qeydiyyatdan keçin.

Cihaz EUI altındakı Yarat simgesini vurun, buna görə TTN sizin üçün birini yaradacaq.

Addım 3: Etimadnamənizi yazın

İndi Cihazınıza gedin və Cihaz EUI, App EUI və App düyməsinin yanındakı Kod simgesini vurun. İndi bir bayt dizisi kimi görünməlidir.

Kopyalamadan əvvəl, keçid düyməsini vurun və Dev EUI və App EUI -nin LSB İLK olduğundan əmin olun.

Tətbiq Açarınız MSB İLK olaraq qalmalıdır (bunu dəyişməyin).

Növbəti addımda bu düymələrə ehtiyacınız olacaq: Arduino qurmaq.

Addım 4: Ərizə Giriş düyməsini yazın

İndi Raspberry Pi -də MQTT qurmaq üçün daha bir açara ehtiyacımız olacaq.

Tətbiqinizə gedin və Giriş düymələrinə gedin.

Buna Backend addımında ehtiyacınız olacaq.

Addım 5: Arduino qurmaq

Arduino kodunu Arduino altındakı GitHub -da da tapa bilərsiniz (https://github.com/BoussonKarel/CaptureTheBox)

Bu kod, mütəşəkkil olması üçün bir çox nişana bölünür.

main.ino Əsas kod: pin bəyannamələri, setup () və loop ()

0_LoRa.inoBu kod LoRa istifadə edərək ünsiyyəti idarə edir.

LDR, GPS və RFID etiketlərinin məlumatlarını 13 baytlıq bir sıra qoyur və bunu TheThingsNetwork -ə göndərir.

1_LDR.ino analogRead () istifadə edərək, İşıqdan Rezistor üzərindəki gərginliyin miqdarını ölçür.

Daha sonra bu işığın faizinə çevrilir (0 heç bir şey deyil, 100 cib telefonu fənəri).

2_GPS.inoTX1 və RX1 (Serial1) istifadə edərək Serial ünsiyyətdən istifadə edir.

Qutunun enini və uzunluğunu tapmaq üçün NMEA mesajlarından (dəqiq olaraq $ GPRMC mesajları) istifadə edir.

3_RFID.ino MFRC522 kitabxanasından istifadə edərək, bu kod yeni RFID etiketlərini axtarır. Hər biri mövcud olduqda RFID_lastUID olaraq saxlanılır.

4_DotMatrix.

Quraşdırma

Bu kodu Arduino -ya yükləməzdən əvvəl bir neçə kitabxana qurmalısınız.

Matthijskooijman tərəfindən Arduino-LMIC kitabxanası (https://github.com/matthijskooijman/arduino-lmic)

RFID oxucu üçün MFRC522 kitabxanası (https://github.com/miguelbalboa/rfid)

İndi main.ino saytına gedin və DEVEUI, APPEUI və APPKEY -i son addımı kopyaladığınıza dəyişin.

Addım 6: Arxa planın qurulması

Bu Layihənin arxa tərəfini GitHub -da, RPI> Backend altında tapa bilərsiniz (https://github.com/BoussonKarel/CaptureTheBox).

Bu necə işləyir?

  1. Hər 10 saniyədə bir kod aktiv bir oyun axtarır.
  2. Rejim Serial olaraq təyin edilərsə, Arduino ilə Pi arasında bir kabel istifadə olunur. LDR və GPS dəyərləri üçün Pi sorğuları. Arduino, JSON formatı ilə cavab verir. RFID etiketləri təqdim edildikdə göndərilir. Bu rejim yalnız inkişaf məqsədləri üçün istifadə edildi və artıq lazım deyil.
  3. Rejim LoRa olaraq təyin olunarsa, LoRa məlumatları TTN tərəfindən alındıqda geri çağırışı tetikleyen bir MQTT müştəri yaradılır. Bura LDR, GPS və RFID məlumatları daxildir.
  4. Ön uç, API son nöqtələrindən istifadə edərək məlumat əldə edə bilər. Məlumatların çoxu huidigSpel.id istifadə edərək alınır. Məlumatlar jsonify () istifadə edərək JSON formatında qaytarılır.

Parametrləri dəyişdirin Secrets.py saytına gedin və LoRa tətbiqinizin və Acces Açarınızın adını doldurun (əvvəllər yazmısınız).

Config.py saytına gedin və verilənlər bazası məlumatlarınızı (məsələn, parol, istifadəçi kimi) doldurun.

Bunu bir xidmət olaraq qurma App.py -ni işə salmağa çalışın, bunun işlədiyini təsdiqlədikdən sonra onu bir xidmət olaraq istifadə edə bilərik.

Bunu etmək üçün ctb_service.service /etc/systemd/system/ctb_service.service ünvanına kopyalayın. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service

İndi systemctl ctb_service.service imkanını istifadə edərək onu aktiv edin

Kodda bəzi dəyişikliklər etməlisinizsə, systemctl stop (bu yenidən başladıqda yenidən başlayacaq) istifadə edərək onu asanlıqla dayandıra bilərsiniz və ya systemctl deaktiv etməklə onu avtomatik olaraq işə salmağı dayandıra bilərsiniz.

Günlüklərə müraciət etmək lazımdırsa (səhvlər üzündən), journalctl -u ctb_service.service istifadə edə bilərsiniz.

Xidmətlər haqqında daha çox məlumatı burada tapa bilərsiniz:

Addım 7: Ön ucun qurulması

Həmişə olduğu kimi, ön ucu GitHub -da RPI> Frontend altında tapa bilərsiniz (https://github.com/BoussonKarel/CaptureTheBox)

Bunu Raspberry Pi -nin /var /html qovluğuna yapışdırın.

Bu oyun üçün lazım olan bütün veb səhifələri ehtiva edir.

Həm də arxa tərəflə əlaqə qurmaq üçün bir skript ehtiva edir (həm real vaxtda, həm də API son nöqtələrindən istifadə etməklə).

Addım 8: Qutunun əlavə edilməsi

Qutunun əlavə edilməsi
Qutunun əlavə edilməsi
Qutunun əlavə edilməsi
Qutunun əlavə edilməsi

Dava üçün, aşağıdakı materiallar/texnikalarla birlikdə köhnə bir alət qutusu istifadə etdim:

  • 3D çap
  • Batareyanı yerində saxlamaq üçün köpük
  • Təkrar emal edilmiş taxta lövhələr
  • İsti yapışqan
  • Vintlər və qoz -fındıq

Davanızla nə edəcəyiniz öz seçiminizdir! Sənə sənət azadlığı verəcəyəm.

İlham almaq üçün (bitmiş) davamın bəzi fotoşəkillərini əlavə etdim.

Tövsiyə: