Mundarija:
- Ta'minotlar
- 1 -qadam: Raspberry Pi -ni sozlash
- 2 -qadam: Elektronni joylashtirish
- 3 -qadam: ma'lumotlar bazasini loyihalash
- 4 -qadam: TTN -da hisob qaydnomasini o'rnatish
- 5 -qadam: Arduino -ni sozlash
- 6 -qadam: Orqa fonni sozlash
- 7 -qadam: Frontendni sozlash
- 8 -qadam: korpus qo'shish
Video: Qutini qo'lga oling: 8 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
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
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
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?
- Har 10 soniyada kod faol o'yinni qidiradi, agar u topilsa, u huidigSpel (currentGame) deb nomlangan o'zgaruvchiga saqlanadi.
- 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.
- 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.
- 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
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:
Alyuminiy qutini qanday qilish kerak: 5 qadam
Alyuminiy qutini qanday qilish kerak. Siz elektr energiyasini ishlab chiqarish uchun alyumin qutilaridan foydalanishingiz mumkin
Dasturni yozib oling va uni yozib oling: 8 qadam
O'qish dasturini yaratish uchun dasturni yaratish kerakmi ?: O'yin dasturining oxirgi versiyasi Texnologiyaning eng so'nggi bosqichi bo'lib o'tdi, shuning uchun u o'z dasturini yaratdi. Python va kutubxonachilarning vazifasi shundaki, ular hech qanday dasturga ega emas
MP3 ovozli moduli yordamida fazali qutini qanday qilish kerak: 4 qadam
MP3 ovozli modul yordamida fazali qutini qanday yasash mumkin: Menda oxirgi DIY loyihamdan eslatib o'tilgan kristalli epoksi qatronlar bor va men uni isrof qilmoqchi emasman. Tejamkorlik tamoyillariga ko'ra, men epoksiyadan ozgina narsalarga qo'l qo'yishga qaror qildim. Ba'zida tushkunlikka tushganingizda, gapirishni xohlamaysiz. Men faqat
Statik va DHCP IP sozlamalarini sozlash uchun ESP32 qo'lga olish portali: 8 qadam
Statik va DHCP IP sozlamalarini sozlash uchun ESP32 qo'lga oluvchi portali: ESP 32 - bu Wi -Fi va BLE bilan birlashtirilgan qurilma. Bu IoT loyihalari uchun o'ziga xos sovg'adir. Faqat SSID, parol va IP konfiguratsiyangizni bering va narsalarni bulutga birlashtiring. Biroq, IP sozlamalari va foydalanuvchi ma'lumotlarini boshqarish bosh bo'lishi mumkin
Yo'lga qayting: 4 qadam
Yo'lga qayting: Bu ko'rsatma sizga EP (elektr quvvati) RC mashinasini boshqarishga qanday qaytishni ko'rsatib beradi