Mundarija:

Qutini qo'lga oling: 8 qadam
Qutini qo'lga oling: 8 qadam

Video: Qutini qo'lga oling: 8 qadam

Video: Qutini qo'lga oling: 8 qadam
Video: durdona qurbonova orqachasiga salta 2024, Noyabr
Anonim
Qutini qo'lga oling
Qutini qo'lga oling
Qutini qo'lga oling
Qutini qo'lga oling

Qutini qo'lga olish - bu jamoaviy o'yin bo'lib, siz o'z mahallangizdagi do'stlaringiz bilan o'ynashingiz mumkin.

Maqsad - qutini qo'lga olish va uni iloji boricha o'z qo'lingda saqlash, boshqa o'yinchilar borib ayvoningdan yoki old bog'ingdan yashirinib o'tishga harakat qilishadi.

Bu o'yin qutini topish uchun GPS va futbolchilarni aniqlash uchun RFID teglaridan foydalanadi. Nuqta matritsasi displeyining intensivligini bu sohadagi yorug'lik foiziga mos keladigan ixtiyoriy LDR qo'shilishi mumkin.

Ta'minotlar

Mikrokontrollerlar va kompyuterlar

  • Raspberry Pi
  • Arduino (Mega) Men oddiy Uno -dan Arduino Mega -ni tanladim, chunki uning pimlari ko'proq. Bu kerak, chunki biz Dragino LoRa qalqonidan foydalanmoqdamiz, bu UNOdan foydalanishda bizni juda kam raqamli pinlar bilan qoldiradi. MASLAHAT: Haqiqiydan foydalanish yaxshidir, chunki Xitoy klonlari har doim ham kutilganidek ishlamaydi.

Sensorlar va modullar

  • 4 MAX7219 nuqta matritsali modul DOUTni DINga, CS -ni CS -ga, CLK -ni CLK -ga ulang …
  • Yorug'likka bog'liq qarshilik (10K) + qarshilik (10K)
  • NEO-7M (yoki shunga o'xshash) GPS moduli Men Velleman-dan VMA430-dan foydalanayapman
  • RC522 RFID moduli+ ba'zi RFID nishonlari/kartalari

LoRa (simsiz aloqa texnologiyasi) dan foydalanish uchun

Dragino Lora Shild

Majburiy bo'lmagan sensorlar va modullar

LCD displey Raspberry Pi -ning IP -manzilini ko'rsatish uchun

Sinov sozlamalarini o'rnatish uchun

Non paneli va Dupont kabellari (Erkak-erkak

Majburiy emas (korpus)

  • Lehimlash temir
  • Eski asbob qutisi
  • 3D bosib chiqarish uchun materiallar
  • Bir nechta ingichka yog'och taxtalar
  • Ba'zi murvat va yong'oqlar (Arduino teshiklariga sig'ishi mumkin). Mening vintlar diametri 3 mm atrofida.

Taxminiy narxni quyida keltirilgan BOM (Materiallar Bill) da topish mumkin.

1 -qadam: Raspberry Pi -ni sozlash

Raspberry Pi - bu loyihaning yuragi.

U frontend, backend va ma'lumotlar bazasini boshqaradi. Shuningdek, u orqa va Arduino o'rtasidagi aloqa uchun javobgar bo'ladi.

Raspberry Pi -dan foydalanish uchun biz quyidagilarni qilishimiz kerak:

1 -qism: Raspbian -ni Raspberry Pi -ga o'rnating

Buni qanday qilish bo'yicha qo'llanmani bu erda topishingiz mumkin:

2 -qism: Raspbian -ni Raspberry Pi -ga o'rnating Uy WiFi -ni sozlash.

Buni wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf yordamida amalga oshirish mumkin.

Pi -ni qayta ishga tushiring va ifconfig -ni yozishda siz IP -manzilni ko'rasiz

3 -qism: Veb -server va ma'lumotlar bazasini o'rnating

Agar siz Pi -ni ishga tushirgan bo'lsangiz, parolni o'zgartiring, buni passwd buyrug'i yordamida amalga oshirish mumkin.

Bu bajarilgandan so'ng, davom eting va Apache, PHP, MariaDB va PHPMyAdmin -ni o'rnating.

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-ni qayta ishga tushiring.

PHPMyAdminsudo apt ni o'rnatish phpmyadmin -y

Xavfsiz MySQL parolini o'rnatishni unutmang.

4 -qism: Kerakli Python kutubxonalarini o'rnatish

Orqa fon uchun bizga ba'zi kutubxonalar kerak bo'ladi. Ularni pip3 buyrug'i yordamida o'rnatish mumkin.

pip3 mysql-connector-python-ni o'rnating

pip3 flask-socketio-ni o'rnating

pip3 flakon-korslarni o'rnating

pip3 geventpip3 ni o'rnatish gevent-websocket

pip3 ttn o'rnating

2 -qadam: Elektronni joylashtirish

Elektronikani joylashtirish
Elektronikani joylashtirish
Elektronikani joylashtirish
Elektronikani joylashtirish

Ushbu loyihani amalga oshirish uchun biz barcha elektronikalarni ulashimiz kerak.

LoRa qalqonini osongina joyiga qo'yish mumkin. Iplarni Arduino -dagi pinlar bilan tekislang.

Boshqa ulanishlar Fritzing sxemasida tasvirlangan. Qaysi birini bu erdan yuklab olish mumkin:

3 -qadam: ma'lumotlar bazasini loyihalash

Ma'lumotlar bazasini loyihalash
Ma'lumotlar bazasini loyihalash

O'yin va sensorlar haqidagi barcha ma'lumotlarni saqlash uchun men bir nechta jadvallar tuzdim:

Sensor jadvallarida joylashgan sensorlar o'lchovlari, sensorga havola, o'lchov qiymati (masalan, koordinatalar: 51.123456; 3.123456) va ixtiyoriy o'yin identifikatori (agar o'lchash paytida o'yin faol bo'lgan bo'lsa).

O'yinchi nomlari va RFID nishonining UID. Majburiy bo'lmagan maydon moderatori qo'shiladi, bu kishi o'yinni o'zgartirishi mumkin (masalan, uni vaqtidan oldin to'xtatish).

O'yin haqida ma'lumot (boshlanish va tugash vaqti).

spel_has_speler spel va speler o'rtasidagi munosabatlar. Bu erda o'yinchilarga o'yin tayinlanadi.

Bu jadvalda hisob saqlanadi. Unda o'yin identifikatori, o'yinchi identifikatori, u qutini o'g'irlagan vaqt va uni yo'qotib qo'ygan vaqtlari (boshqa birov o'g'irlab ketganda yoki o'yin tugaganda) bor. Oxirgi vaqtdan boshlanish vaqtini olib tashlash orqali siz uning qo'lga kiritgan balini hisoblashingiz mumkin.

Ma'lumotlar bazasini eksportini GitHub -da topish mumkin (https://github.com/BoussonKarel/CaptureTheBox)

PHPMyAdmin / MySQL Workbench -da sql -ni oching va ishga tushiring. Ma'lumotlar bazasi endi import qilinishi kerak.

4 -qadam: TTN -da hisob qaydnomasini o'rnatish

1 -qadam: TTN -da ro'yxatdan o'ting va dastur yarating

TheThingsNetwork -da hisob qaydnomasini ro'yxatdan o'tkazing, so'ngra Konsol> Ilova qo'shish -ga o'ting.

Ilovangiz uchun nom tanlang va Ilovani qo'shish -ni bosing.

2 -qadam: qurilmani ro'yxatdan o'tkazing

Arizangizni to'ldirgandan so'ng, qurilmani ro'yxatdan o'tkazing.

Qurilma identifikatorini tanlang, bu siz xohlagan narsangiz bo'lishi mumkin (agar ilon bo'lsa) va Ro'yxatdan o'tish tugmasini bosing.

Qurilma EUI ostidagi "Yaratish" belgisini bosing, shunda TTN siz uchun yaratadi.

3 -qadam: Hisob ma'lumotlarini yozib oling

Endi qurilmangizga o'ting va Qurilma EUI, App EUI va App kaliti yonidagi Kod belgisini bosing. Endi u baytlar qatori sifatida ko'rinishi kerak.

Nusxa olishdan oldin, o'tish tugmasini bosing va Dev EUI va App EUI LSB FIRST ekanligiga ishonch hosil qiling.

Sizning ilova kalitingiz MSB FIRSTda qolishi kerak (buni o'zgartirmang).

Keyingi bosqichda sizga bu kalitlar kerak bo'ladi: Arduino -ni sozlash.

4 -qadam: Ilovaga kirish kalitini yozing

Endi Raspberry Pi -da MQTT -ni o'rnatish uchun bizga yana bitta kalit kerak bo'ladi.

Ilovangizga o'ting va kirish tugmachalarini pastga aylantiring.

Bu sizga Backend qadamida kerak bo'ladi.

5 -qadam: Arduino -ni sozlash

Arduino kodini Aritino ostidagi GitHub -da ham topish mumkin (https://github.com/BoussonKarel/CaptureTheBox)

Bu kod tartibli bo'lishi uchun bir nechta yorliqlarga bo'lingan.

main.ino Asosiy kod: pin deklaratsiyalari, setup () va loop ()

0_LoRa.inoBu kod LoRa yordamida aloqani boshqaradi.

U LDR, GPS va RFID teglari ma'lumotlarini 13 baytli qatorga qo'yadi va ularni TheThingsNetwork -ga yuboradi.

1_LDR.ino analogRead () yordamida nurga bog'liq rezistor ustidagi kuchlanish miqdorini o'lchaydi.

Keyin bu yorug'lik foiziga aylanadi (0 - hech narsa, 100 - uyali telefon chirog'i).

2_GPS.inoBu TX1 va RX1 (Serial1) yordamida ketma -ket aloqadan foydalanadi.

U qutining kengligi va uzunligini topish uchun NMEA xabarlaridan (aniqrog'i $ GPRMC xabarlari) foydalanadi.

3_RFID.ino MFRC522 kutubxonasidan foydalangan holda, bu kod yangi RFID teglarini qidiradi, agar u mavjud bo'lsa, u RFID_lastUID sifatida saqlanadi.

4_DotMatrix.inoBu kod nuqta matritsali displeyni ishga tushirish va sozlash uchun ishlatiladi, unda yuklash animatsiyasi va boshqalar uchun ta'riflar mavjud.

Uni sozlash

Ushbu kodni Arduino -ga yuklashdan oldin siz bir nechta kutubxonalarni o'rnatishingiz kerak bo'ladi.

Matthijskooijman Arduino-LMIC kutubxonasi (https://github.com/matthijskooijman/arduino-lmic)

RFID o'quvchi uchun MFRC522 kutubxonasi (https://github.com/miguelbalboa/rfid)

Endi main.ino -ga o'ting va DEVEUI, APPEUI va APPKEY -ni oxirgi qadamda nusxa ko'chiring.

6 -qadam: Orqa fonni sozlash

Ushbu loyihaning orqa qismini GitHub -da RPI> Backend (https://github.com/BoussonKarel/CaptureTheBox) ostida topish mumkin.

Bu qanday ishlaydi?

  1. Har 10 soniyada kod faol o'yinni qidiradi, agar u topilsa, u huidigSpel (currentGame) deb nomlangan o'zgaruvchiga saqlanadi.
  2. Agar rejim ketma -ket o'rnatilgan bo'lsa, Arduino va Pi o'rtasida kabel ishlatiladi. LDR va GPS qiymatlari uchun Pi so'rovlari. Arduino JSON formatida javob beradi, agar ular taqdim etilsa, RFID teglari yuboriladi, bu rejim faqat ishlab chiqish maqsadida ishlatilgan va endi kerak emas.
  3. Agar rejim LoRa -ga o'rnatilgan bo'lsa, MRTT mijozi yaratiladi, u LoTa ma'lumotlarini TTN qabul qilganda, qayta qo'ng'iroqni chaqiradi. Bu LDR, GPS va RFID ma'lumotlarini o'z ichiga oladi.
  4. Frontend API so'nggi nuqtalari yordamida ma'lumotlarni olishi mumkin. Ma'lumotlarning ko'pi huidigSpel.id yordamida olinadi. Data jsonify () yordamida JSON formatida qaytariladi.

Sozlamalarni o'zgartiring secret.py -ga o'ting va LoRa ilovangiz va Acces kalitingiz nomini to'ldiring (siz oldin yozgansiz).

Config.py -ga o'ting va ma'lumotlar bazasi ma'lumotlarini to'ldiring (masalan, parol, foydalanuvchi …)

Uni xizmat sifatida o'rnatish App.py -ni ishga tushirishga urinib ko'ring, bu ishlayotganini tasdiqlaganingizdan so'ng, biz uni xizmat sifatida ishlatishimiz mumkin, bu sizning pi -ni yuklaganingizda avtomatik ravishda fonda kodni ishga tushiradi.

Buni amalga oshirish uchun ctb_service.service /etc/systemd/system/ctb_service.service ga ko'chiring. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service

Endi uni systemctl enable ctb_service.service yordamida yoqing

Agar siz kodga ba'zi o'zgartirishlar kiritishingiz kerak bo'lsa, uni systemctl stop yordamida osongina to'xtatishingiz mumkin (bu qayta yuklashda qayta boshlanadi) yoki systemctl o'chirish yordamida o'chirib qo'yish (avtomatik ishga tushirishni to'xtatish).

Agar jurnallarga murojaat qilish kerak bo'lsa (xatolar tufayli), journalctl -u ctb_service.service dan foydalanishingiz mumkin.

Xizmatlar haqida ko'proq ma'lumotni bu erda topishingiz mumkin: https://www.raspberrypi.org/documentation/linux/us..

7 -qadam: Frontendni sozlash

Odatdagidek, frontendni GitHub -da RPI> Frontend ostida topish mumkin (https://github.com/BoussonKarel/CaptureTheBox)

Buni Raspberry Pi -ning /var /html papkasiga joylashtiring.

Bu o'yin uchun barcha kerakli veb -sahifalarni o'z ichiga oladi.

Shuningdek, u orqa tomon bilan aloqa qilish uchun skriptni o'z ichiga oladi (ham real vaqtda, ham API so'nggi nuqtalari yordamida).

8 -qadam: korpus qo'shish

Qopqoqni qo'shish
Qopqoqni qo'shish
Qopqoqni qo'shish
Qopqoqni qo'shish

Ish uchun men eski asboblar qutisini, quyidagi materiallar/texnikani ishlatganman:

  • 3D bosib chiqarish
  • Batareyani joyida ushlab turish uchun ko'pik
  • Qayta ishlangan yog'och taxtalar
  • Issiq elim
  • Vintlar va yong'oqlar

Sizning ishingiz bilan nima qilish - bu sizning tanlovingiz! Men sizga badiiy erkinlik beraman.

Ilhom olish uchun men o'z ishimning fotosuratlarini qo'shdim.

Tavsiya: