Talaan ng mga Nilalaman:
- Mga gamit
- Hakbang 1: Pag-set up ng Raspberry Pi
- Hakbang 2: Paglalagay ng Elektronika
- Hakbang 3: Pagdidisenyo ng Database
- Hakbang 4: Pagse-set up ng isang Account sa TTN
- Hakbang 5: Pag-set up ng Arduino
- Hakbang 6: Pag-set up ng Backend
- Hakbang 7: Pag-set up ng Frontend
- Hakbang 8: Pagdaragdag ng isang Casing
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Ang Capture The Box ay isang teambuilding na laro na maaari mong i-play sa mga kaibigan sa iyong kapitbahayan.
Ang layunin ay upang makuha ang kahon at itago ito sa iyong pagmamay-ari hangga't maaari habang ang ibang mga manlalaro ay subukan na pumunta at sneak ito ang layo mula sa iyong beranda o harap na hardin.
Ang larong ito ay gumagamit ng GPS upang hanapin ang kahon at mga tag ng RFID upang makilala ang mga manlalaro. Ang isang opsyonal na LDR ay maaaring idagdag upang tumugma sa tindi ng display ng dot matrix na may porsyento ng ilaw sa lugar.
Mga gamit
Mga Microcontroller at computer
- Raspberry Pi
- Arduino (Mega) Pinili ko ang isang Arduino Mega kaysa sa isang normal na Uno, dahil mayroon itong maraming higit pang mga pin. Ito ay kinakailangan dahil gumagamit kami ng isang kalasag na Dragino LoRa, na mag-iiwan sa amin ng masyadong maliit na mga digital na pin kapag gumagamit ng isang UNO. TIP: Mas mahusay na gumamit ng isang tunay, sapagkat ang mga clone ng Intsik ay hindi laging gumagana tulad ng inaasahan.
Mga sensor at module
- 4 MAX7219 Dot Matrix Modules Ikonekta ang DOUT sa DIN, CS sa CS, CLK sa CLK…
- Light Dependent Resistor (10K) + Resistor (10K)
- NEO-7M (o katulad) Module ng GPS Gumagamit ako ng VMA430 mula sa Velleman
- RC522 RFID Module + ilang mga RFID badge / card
Para sa paggamit ng LoRa (wireless technology)
Dragino Lora Shield
Mga opsyonal na sensor at module
Isang LCD display Upang maipakita ang IP address ng Raspberry Pi
Para sa paggawa ng isang pag-set up ng pagsubok
Isang breadboard at Dupont Cables (Lalaki-Lalaki
Opsyonal (pambalot)
- Panghinang
- Isang lumang kaso ng tool
- Mga materyales para sa pag-print sa 3D
- Ilang manipis na mga tabla na gawa sa kahoy
- Ang ilang mga bolt at mani (na maaaring magkasya sa mga butas ng Arduino). Ang aking mga turnilyo ay may diameter na humigit-kumulang 3mm.
Ang isang tinatayang presyo ay matatagpuan sa BOM (Bill of Materials), kasama sa ibaba.
Hakbang 1: Pag-set up ng Raspberry Pi
Ang Raspberry Pi ay ang puso ng Project.
Patakbuhin nito ang frontend, backend at database. Magiging responsable din ito para sa komunikasyon sa pagitan ng backend at ng Arduino.
Upang magamit namin ang Raspberry Pi, kakailanganin naming gawin ang mga sumusunod:
Bahagi 1: I-install ang Raspbian sa isang Raspberry Pi
Ang isang tutorial sa kung paano ito gawin ay matatagpuan dito:
Bahagi 2: I-install ang Raspbian sa isang Raspberry PiSetting ang iyong WiFi sa bahay.
Magagawa ito gamit ang wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
I-reboot ang Pi at dapat mong makita ang isang IP address kapag nagta-type sa ifconfig
Bahagi 3: I-install ang webserver at database
Kapag natapos mo na ang iyong Pi at tumatakbo, mas mahusay na baguhin ang iyong password. Maaari itong magawa sa command passwd.
Kapag tapos na iyon, sige at i-install ang Apache, PHP, MariaDB at PHPMyAdmin.
Apache, PHP sudo apt install apache2 -y sudo apt install php libapache2-mod-php -y
MariaDB sudo apt i-install ang mariadb-server mariadb-client -y sudo apt install php-mysql -y sudo systemctl restart apache2.service
PHPMyAdminsudo apt install phpmyadmin -y
Huwag kalimutang magtakda ng isang ligtas na MySQL password.
Bahagi 4: Pag-install ng mga kinakailangang aklatan ng Python
Para sa backend, kakailanganin namin ng ilang mga aklatan. Maaari itong mai-install gamit ang utos na pip3.
pip3 i-install ang MySQL-Connector-Python
pip3 i-install ang flask-socketio
pip3 i-install ang flask-cors
i-install ang pip3 geventpip3 i-install ang gevent-websocket
pip3 install ttn
Hakbang 2: Paglalagay ng Elektronika
Upang maisagawa ang Proyekto na ito, kailangan naming ikonekta ang lahat ng mga electronics.
Ang kalasag ng LoRa ay madaling mailagay sa lugar. Ihanay lamang ang mga pin sa mga pin sa iyong Arduino.
Ang iba pang mga koneksyon ay inilarawan sa aking Fritzing scheme. Alin ang maaaring ma-download dito:
Hakbang 3: Pagdidisenyo ng Database
Upang maiimbak ang lahat ng data ng laro at sensor, gumawa ako ng ilang mga talahanayan:
pagsukat at sensor Ang mga sukat mula sa mga sensor, na matatagpuan sa mga talahanayan ng sensor. Naglalaman ito ng isang sanggunian sa sensor, ang halaga ng pagsukat (hal. coördinates: 51.123456; 3.123456) at isang opsyonal na id ng laro (kung ang isang laro ay aktibo sa pagsukat).
Ang mga pangalan ng manlalaro at ang UID ng kanilang RFID badge. Ang isang opsyonal na moderator ng patlang ay idinagdag, maaaring baguhin ng taong ito ang laro (hal. Ihinto ito bago ang oras).
spelAng impormasyon ng laro (simula at oras ng pagtatapos).
spel_has_spelerAng ugnayan sa pagitan ng spel at speler. Dito itinalaga ang mga manlalaro sa isang laro.
sa talahanayan na ito, ang iskor ay nai-save. Naglalaman ito ng game id, player id, sa oras na nakawin niya ang kahon at oras na nawala ito (kapag may ibang nagnanakaw nito o kapag natapos ang laro). Sa pamamagitan ng pagbawas sa oras ng pagsisimula mula sa oras ng pagtatapos, maaari mong kalkulahin ang iskor na nakuha niya mula sa pagkuha na iyon.
Ang isang pag-export ng database ay matatagpuan sa aking GitHub (https://github.com/BoussonKarel/CaptureTheBox)
Buksan ang sql sa PHPMyAdmin / MySQL Workbench at patakbuhin ito. Ang database ay dapat na ngayong mai-import.
Hakbang 4: Pagse-set up ng isang Account sa TTN
Hakbang 1: Mag-sign up para sa isang account sa TTN at lumikha ng isang application
Mag-sign up para sa isang account sa TheThingsNetwork, pagkatapos ay pumunta sa Console> Magdagdag ng application.
Pumili ng isang pangalan para sa iyong aplikasyon at i-click ang Magdagdag ng application.
Hakbang 2: Magrehistro ng isang aparato
Kapag nagawa mo na ang iyong aplikasyon, pumunta sa Magrehistro aparato.
Pumili ng isang id ng aparato, maaari itong maging anumang nais mo (hangga't ito ay kaso ng ahas) at i-click ang Magrehistro.
Mag-click sa icon na Bumuo sa ilalim ng Device EUI, kaya't ang TTN ay bubuo ng isa para sa iyo.
Hakbang 3: Pagsusulat ng iyong mga kredensyal
Pumunta ngayon sa iyong Device at mag-click sa icon ng Code sa tabi ng Device EUI, App EUI at App key. Dapat itong lumitaw ngayon bilang isang hanay ng mga byte.
Bago ka makopya, i-click ang pindutang Lumipat at siguraduhin na ang iyong Dev EUI at App EUI ay LSB UNA.
Ang iyong App Key ay dapat manatiling MSB UNA (huwag baguhin iyon).
Kakailanganin mo ang mga key na ito sa susunod na hakbang: Pagse-set up ng Arduino.
Hakbang 4: Pagsulat ng iyong key ng Mga Application Acces
Ngayon kakailanganin namin ang isa pang susi upang mai-set up ang MQTT sa aming Raspberry Pi.
Pumunta sa iyong Application at mag-scroll pababa sa Acces Keys.
Kakailanganin mo ito sa hakbang sa Backend.
Hakbang 5: Pag-set up ng Arduino
Ang code ng Arduino ay maaari ding makita sa aking GitHub, sa ilalim ng Arduino (https://github.com/BoussonKarel/CaptureTheBox)
Ang code na ito ay nahahati sa maraming mga tab, upang mapanatili itong maayos.
main.ino Ang pangunahing code: mga deklarasyon ng pin, pag-setup () at loop ()
0_LoRa.ino Hinahawakan ng code na ito ang komunikasyon gamit ang LoRa.
Inilalagay nito ang data ng mga tag ng LDR, GPS at RFID sa isang hanay ng 13 bytes at ipinapadala ito sa TheThingsNetwork.
1_LDR.ino Gumagamit ng analogRead (), sinusukat nito ang dami ng boltahe sa Light Dependent Resistor.
Pagkatapos ay mai-convert ito sa isang porsyento ng ilaw (0 na wala, 100 na isang flashlight ng cellphone).
2_GPS.ino Gumagamit ito ng Serial na komunikasyon gamit ang TX1 at RX1 (Serial1).
Gumagamit ito ng mga mensahe sa NMEA (ang mga mensahe na $ GPRMC na tumpak) upang makita ang latitude at longitude ng kahon.
3_RFID.ino Gamit ang MFRC522 library, ini-scan ng code na ito ang mga bagong tag ng RFID. Kailan man naroroon, nag-iimbak ito bilang RFID_lastUID.
4_DotMatrix.ino Ang code na ito ay ginagamit na ipasimula at itakda ang display ng dot matrix. Naglalaman ito ng mga kahulugan para sa paglo-load ng animasyon atbp…
Pagse-set up nito
Bago mo mai-upload ang code na ito sa iyong Arduino, kakailanganin mong mag-install ng ilang mga aklatan.
Ang Arduino-LMIC library ni matthijskooijman (https://github.com/matthijskooijman/arduino-lmic)
Ang MFRC522 library para sa RFID reader (https://github.com/miguelbalboa/rfid)
Ngayon, pumunta sa main.ino at palitan ang DEVEUI, APPEUI at APPKEY sa mga kinopya mo noong huling hakbang.
Hakbang 6: Pag-set up ng Backend
Ang backend para sa Project na ito ay matatagpuan sa aking GitHub, sa ilalim ng RPI> Backend (https://github.com/BoussonKarel/CaptureTheBox).
Paano ito gumagana?
- Tuwing 10 segundo, ang code ay naghahanap ng isang aktibong laro. Kung ang isa ay matatagpuan, nai-save ito sa isang variable na tinatawag na huidigSpel (currentGame)
- Kung ang mode ay nakatakda sa Serial, isang cable ang ginagamit sa pagitan ng Arduino at ng Pi. Ang Pi poll para sa mga halaga ng LDR at GPS. Ang Arduino ay tumutugon sa isang format na JSON. Ang mgaRFID tag ay ipinapadala tuwing ipinakita ang mga ito. Ang mode na ito ay nagamit lamang para sa mga hangarin sa pag-unlad at hindi na talaga kinakailangan.
- Kung ang mode ay nakatakda sa LoRa, isang MQTT client ang nilikha na magpapalitaw ng isang callback tuwing ang data ng LoRa ay natanggap ng TTN. Naglalaman ito ng data ng LDR, GPS at RFID.
- Maaaring makuha ng frontend ang data gamit ang mga endpoint ng API. Karamihan sa data ay nakuha gamit ang huidigSpel.id. Ang data ay ibinalik sa format na JSON gamit ang jsonify ()
Baguhin ang mga setting
Pumunta sa config.py at punan ang iyong mga kredensyal sa Database (tulad ng password, gumagamit…)
Pagse-set up nito bilang isang serbisyo Subukang patakbuhin ang app.py, sa sandaling nakumpirma mo na gumagana ito, maaari natin itong magamit bilang isang serbisyo. Awtomatiko nitong sisisimulan ang code sa background kapag na-boot mo ang iyong pi.
Upang gawin ang kopyang ito CTb_service.service sa /etc/systemd/system/ctb_service.service. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service
Paganahin ito ngayon gamit ang systemctl paganahin ang ctb_service.service
Kung kailangan mong gumawa ng ilang mga pagbabago sa code, madali mong mapatigil ito gamit ang systemctl stop (magsisimulang muli ito sa pag-reboot) o huwag paganahin ang (itigil ito mula sa awtomatikong pagsisimula) gamit ang hindi paganahin ng systemctl.
Kung kailangan mong kumonsulta sa mga log (dahil sa mga error), maaari mong gamitin ang journalctl -u ctb_service.service.
Ang karagdagang impormasyon sa mga serbisyo ay matatagpuan dito: https://www.raspberrypi.org/documentation/linux/us..
Hakbang 7: Pag-set up ng Frontend
Tulad ng dati, ang frontend ay matatagpuan sa aking GitHub, sa ilalim ng RPI> Frontend (https://github.com/BoussonKarel/CaptureTheBox)
I-paste ito sa / var / html folder ng iyong Raspberry Pi.
Naglalaman ito ng lahat ng kinakailangang mga web page para sa laro.
Naglalaman din ito ng isang script upang makipag-usap sa backend (parehong realtime at paggamit ng mga endpoint ng API).
Hakbang 8: Pagdaragdag ng isang Casing
Para sa kaso, gumamit ako ng isang dating tool case, kasama ang mga sumusunod na materyales / diskarte:
- Pagpi-print ng 3D
- Bula para sa pagpapanatili ng baterya sa lugar
- Mga recycled na tabla na gawa sa kahoy
- Mainit na pandikit
- Mga tornilyo at mani
Ano ang gagawin mo sa iyong kaso ay ang iyong pinili! Bibigyan kita ng kalayaan sa masining.
Para sa inspirasyon, nagdagdag ako ng ilang larawan ng aking (natapos) na kaso.