Kunan ang Kahon: 8 Hakbang
Kunan ang Kahon: 8 Hakbang
Anonim
Kunan ang Kahon
Kunan ang Kahon
Kunan ang Kahon
Kunan ang Kahon

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

Pagtula sa Elektronika
Pagtula sa Elektronika
Pagtula sa Elektronika
Pagtula sa 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

Pagdidisenyo ng Database
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?

  1. 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)
  2. 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.
  3. 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.
  4. 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

Pagdaragdag ng isang Casing
Pagdaragdag ng isang Casing
Pagdaragdag ng isang Casing
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.