Գրավել տուփը `8 քայլ
Գրավել տուփը `8 քայլ
Anonim
Գրավել արկղը
Գրավել արկղը
Գրավել արկղը
Գրավել արկղը

Capture The Box- ը թիմաշինության խաղ է, որը կարող եք խաղալ ձեր հարևանների ընկերների հետ:

Նպատակն է գրավել տուփը և պահել այն ձեր տիրապետության տակ որքան հնարավոր է երկար, մինչդեռ այլ խաղացողներ փորձում են գնալ և թաքնվել այն ձեր շքամուտքից կամ առջևի այգուց:

Այս խաղը օգտագործում է GPS ՝ տուփը գտնելու համար, իսկ RFID պիտակները ՝ խաղացողներին նույնականացնելու համար: Ընտրովի LDR- ն կարող է ավելացվել ՝ կետային մատրիցի ցուցադրման ինտենսիվությունը համապատասխանելու համար տարածքում առկա լույսի տոկոսին:

Պարագաներ

Միկրոկոնտրոլերներ և համակարգիչներ

  • Ազնվամորի Պի
  • Arduino (Mega) Ես ընտրեցի Arduino Mega- ն սովորական Uno- ի փոխարեն, քանի որ այն շատ ավելի շատ կապում է: Սա անհրաժեշտ է, քանի որ մենք օգտագործում ենք Dragino LoRa վահանը, որը UNO- ից օգտվելիս մեզ շատ քիչ թվային կապում կհանգեցնի: ԽՈՐՀՈՐԴ. Ավելի լավ է օգտագործել իսկական մեկը, քանի որ չինական կլոնները միշտ չէ, որ աշխատում են ինչպես և սպասվում էր:

Սենսորներ և մոդուլներ

  • 4 MAX7219 Dot Matrix մոդուլներ Միացրեք DOUT- ը DIN- ին, CS- ին CS- ին, CLK- ին CLK- ին…
  • Լույսից կախված դիմադրություն (10K) + դիմադրություն (10K)
  • NEO-7M (կամ նմանատիպ) GPS մոդուլ Ես օգտագործում եմ VMA430- ը Velleman- ից
  • RC522 RFID մոդուլ+ որոշ RFID կրծքանշաններ/քարտեր

LoRa (անլար տեխնոլոգիա) օգտագործելու համար

Դրագինո Լորա վահան

Ընտրովի սենսորներ և մոդուլներ

LCD էկրան ՝ Raspberry Pi- ի IP հասցեն ցուցադրելու համար

Թեստային կարգավորում կատարելու համար

Հացատախտակ և Dupont մալուխներ (Արական և Արական

Լրացուցիչ (պատյան)

  • Sոդման երկաթ
  • Հին գործիքի պատյան
  • Նյութեր 3D տպագրության համար
  • Որոշ բարակ փայտե տախտակներ
  • Որոշ պտուտակներ և ընկույզներ (որոնք կարող են տեղավորվել Arduino անցքերում): Իմ պտուտակները ունեն մոտ 3 մմ տրամագիծ:

Մոտավոր գինը կարելի է գտնել BOM- ում (նյութերի հաշիվ), որը ներառված է ստորև:

Քայլ 1: Ազնվամորու Pi- ի կարգավորում

Raspberry Pi- ն heartրագրի սիրտն է:

Այն կաշխատի frontend, backend և տվյալների բազան: Այն նաև պատասխանատու կլինի հետևի և Arduino- ի միջև հաղորդակցության համար:

Որպեսզի մենք օգտագործենք Raspberry Pi- ն, մենք պետք է անենք հետևյալը.

Մաս 1. Տեղադրեք Raspbian- ը Raspberry Pi- ի վրա

Ինչպես դա անել, կարելի է գտնել այստեղ ՝

Մաս 2. Տեղադրեք Raspbian- ը Raspberry Pi- ի վրա: Տեղադրեք ձեր տան WiFi- ը:

Դա կարելի է անել wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf

Վերագործարկեք Pi- ն և ifconfig մուտքագրելիս պետք է տեսնեք IP հասցե

Մաս 3. Տեղադրեք վեբ սերվերը և տվյալների բազան

Երբ ձեր Pi- ն գործարկվի, ավելի լավ է փոխել ձեր գաղտնաբառը: Դա կարելի է անել passwd հրամանով:

Երբ դա արվի, շարունակեք և տեղադրեք Apache, PHP, MariaDB և PHPMyAdmin:

Apache, PHP sudo apt տեղադրել apache2 -y sudo apt տեղադրել php libapache2 -mod -php -y

MariaDB sudo apt install mariadb-server mariadb-client -y sudo apt install php-mysql -y sudo systemctl վերագործարկել apache2.service

PHPMyAdminsudo apt տեղադրել phpmyadmin -y

Մի մոռացեք տեղադրել MySQL- ի անվտանգ գաղտնաբառ:

Մաս 4. Անհրաժեշտ Python գրադարանների տեղադրում

Հետագա ծրագրի համար մեզ անհրաժեշտ կլինեն որոշ գրադարաններ: Դրանք կարող են տեղադրվել ՝ օգտագործելով pip3 հրամանը:

pip3 տեղադրել mysql-connector-python

pip3 տեղադրել flask-socketio

pip3 տեղադրել flask-cors

pip3 տեղադրել geventpip3 տեղադրել gevent-websocket

pip3 տեղադրել ttn

Քայլ 2: Էլեկտրոնիկայի տեղադրում

Էլեկտրոնիկայի տեղադրում
Էլեկտրոնիկայի տեղադրում
Էլեկտրոնիկայի տեղադրում
Էլեկտրոնիկայի տեղադրում

Այս նախագիծը աշխատեցնելու համար մենք պետք է միացնենք ամբողջ էլեկտրոնիկան:

LoRa վահանը կարող է հեշտությամբ տեղադրվել տեղում: Պարզապես ձեր Arduino- ի քորոցները հավասարեցրեք:

Մնացած կապերը նկարագրված են իմ Fritzing սխեմայում: Որը կարելի է ներբեռնել այստեղ ՝

Քայլ 3: Տվյալների բազայի նախագծում

Տվյալների բազայի նախագծում
Տվյալների բազայի նախագծում

Խաղի և տվիչների բոլոր տվյալները պահելու համար ես պատրաստեցի մի քանի աղյուսակ.

սենսորների չափումները, որոնք գտնվում են սենսորների աղյուսակներում: Այն պարունակում է հղում սենսորին, չափման արժեքին (օրինակ ՝ կոորդինատներ ՝ 51.123456; 3.123456) և պարտադիր խաղի ID (եթե խաղը ակտիվ էր չափման ընթացքում).

խաղացողի անունները և նրանց RFID կրծքանշանի UID- ը: Ավելացվում է կամընտիր դաշտի մոդերատոր: Այս անձը կարող է փոփոխել խաղը (օրինակ ՝ ժամանակից շուտ դադարեցնել այն):

spel Խաղի տվյալները (սկիզբը և ավարտը):

spel_has_speler Հարաբերությունը spel- ի և speler- ի միջև: Սա այն է, որտեղ խաղացողները նշանակվում են խաղի:

bezit Այս աղյուսակում հաշիվը պահպանված է: Այն պարունակում է խաղի id, խաղացողի id, տուփը գողանալու ժամանակը և այն կորցնելու ժամանակը (երբ ինչ -որ մեկը գողանում է այն կամ երբ ավարտվում է խաղը): Սկզբի ժամանակը վերջնական ժամանակից հանելով ՝ կարող եք հաշվարկել այն միավորը, որը նա ստացել է այդ գրավումից:

Տվյալների բազայի արտահանում կարելի է գտնել իմ GitHub- ում (https://github.com/BoussonKarel/CaptureTheBox)

Բացեք sql- ը PHPMyAdmin / MySQL Workbench- ում և գործարկեք այն: Այժմ տվյալների բազան պետք է ներմուծվի:

Քայլ 4: Հաշվի ստեղծում TTN- ում

Քայլ 1: Գրանցվեք TTN- ի հաշվի համար և ստեղծեք ծրագիր:

Գրանցվեք հաշիվ TheThingsNetwork- ում, այնուհետև գնացեք Մխիթարել> Ավելացնել ծրագիր:

Ընտրեք ձեր դիմումի անունը և կտտացրեք Ավելացնել ծրագիր:

Քայլ 2: Գրանցեք սարքը

Երբ դիմում եք գրել, անցեք «Գրանցել սարքը»:

Ընտրեք սարքի ID- ն, սա կարող է լինել այն, ինչ ցանկանում եք (քանի դեռ օձի պատյան է) և կտտացրեք Գրանցվել:

Սեղմեք «Ստեղծել» պատկերակի վրա Device EUI- ի ներքո, այնպես որ TTN- ը ձեզ համար կստեղծի մեկը:

Քայլ 3: Գրեք ձեր հավատարմագրերը

Այժմ գնացեք ձեր Սարքը և կտտացրեք Կոդի պատկերակին ՝ Սարքի EUI, App EUI և App բանալիի կողքին: Այն այժմ պետք է հայտնվի որպես բայթերի զանգված:

Նախքան պատճենելը, կտտացրեք Փոխել կոճակը և համոզվեք, որ ձեր Dev EUI- ն և App EUI- ն LSB FIRST են:

Ձեր հավելվածի բանալին պետք է մնա MSB FIRST (մի փոխեք դա):

Հաջորդ քայլին ձեզ հարկավոր կլինեն այս բանալիները ՝ Arduino- ի կարգավորում:

Քայլ 4. Գրեք ձեր դիմումի մուտքի բանալին

Այժմ մեզ անհրաժեշտ կլինի ևս մեկ բանալին ՝ մեր Raspberry Pi- ում MQTT տեղադրելու համար:

Գնացեք ձեր Դիմում և ոլորեք ներքև դեպի Մուտքի բանալիներ:

Սա ձեզ հարկավոր կլինի Backend քայլին:

Քայլ 5: Arduino- ի կարգավորում

Arduino կոդը կարելի է գտնել նաև իմ GitHub- ում ՝ Arduino- ի ներքո (https://github.com/BoussonKarel/CaptureTheBox)

Այս ծածկագիրը բաժանված է բազմաթիվ ներդիրների ՝ այն կազմակերպված պահելու համար:

main.ino Հիմնական ծածկագիրը ՝ pin հայտարարագրեր, setup () և loop ()

0_LoRa.ino Այս ծածկագիրը կարգավորում է հաղորդակցությունը LoRa- ի միջոցով:

Այն տեղադրում է LDR, GPS և RFID պիտակների տվյալները 13 բայթ զանգվածում և դրանք ուղարկում է TheThingsNetwork:

1_LDR.ino Օգտագործելով analogRead () - ը, այն չափում է լույսի կախվածության դիմադրիչի լարման չափը:

Այնուհետև այն փոխակերպվում է լույսի տոկոսի (0 -ը ոչինչ է, 100 -ը ՝ բջջայինի լապտեր):

2_GPS.ino Սա օգտագործում է սերիական հաղորդակցություն ՝ օգտագործելով TX1 և RX1 (Serial1):

Այն օգտագործում է NMEA հաղորդագրություններ (ճշգրիտ $ GPRMC հաղորդագրությունները) ՝ տուփի լայնությունն ու երկայնությունը գտնելու համար:

3_RFID.ino Օգտագործելով MFRC522 գրադարանը, այս կոդը սկանավորում է նոր RFID պիտակներ: Երբ որևէ մեկը ներկա է, այն պահվում է որպես RFID_lastUID:

4_DotMatrix.

Կարգավորել այն:

Նախքան այս կոդը ձեր Arduino- ում վերբեռնելը, ձեզ հարկավոր է տեղադրել մի քանի գրադարան:

Arduino-LMIC գրադարանը ՝ matthijskooijman- ի կողմից (https://github.com/matthijskooijman/arduino-lmic)

MFRC522 գրադարանը RFID ընթերցողի համար (https://github.com/miguelbalboa/rfid)

Այժմ, գնացեք main.ino և փոխեք DEVEUI- ը, APPEUI- ն և APPKEY- ը նրանց, ովքեր պատճենել եք վերջին քայլը:

Քայլ 6: Հետևի կարգավորում

Այս Projectրագրի հետնապահը կարելի է գտնել իմ GitHub- ում ՝ RPI> Backend (https://github.com/BoussonKarel/CaptureTheBox) բաժնում:

Ինչպես է դա աշխատում?

  1. Ամեն 10 վայրկյանը մեկ կոդը փնտրում է ակտիվ խաղ: Եթե մեկը գտնվի, այն պահվում է huidigSpel (currentGame) կոչվող փոփոխականում:
  2. Եթե ռեժիմը սահմանվել է Serial, Arduino- ի և Pi- ի միջև օգտագործվում է մալուխ: Pi- ն հարցում է կատարում LDR և GPS արժեքների համար: Arduino- ն արձագանքում է JSON ձևաչափով: RFID պիտակները ուղարկվում են ամեն անգամ, երբ դրանք ներկայացվում են: Այս ռեժիմը օգտագործվել է բացառապես զարգացման նպատակների համար և իրականում այլևս անհրաժեշտ չէ:
  3. Եթե ռեժիմը դրված է LoRa- ի վրա, ստեղծվում է MQTT հաճախորդ, որը հետադարձ կապ է առաջացնում ամեն անգամ, երբ LoRa- ի տվյալները ստացվում են TTN- ի կողմից: Սա պարունակում է LDR, GPS և RFID տվյալներ:
  4. Ֆրոնտենդը կարող է տվյալներ ստանալ API- ի վերջնակետերի միջոցով: Տվյալների մեծ մասը վերցված է huidigSpel.id- ի միջոցով: Տվյալները վերադարձվում են JSON ձևաչափով ՝ օգտագործելով jsonify ()

Փոփոխեք կարգավորումները Գնացեք secrets.py և լրացրեք ձեր LoRa հավելվածի անունն ու ձեր մուտքի բանալին (դուք գրել եք ավելի վաղ):

Գնացեք config.py և լրացրեք ձեր տվյալների շտեմարանի հավատարմագրերը (օրինակ ՝ գաղտնաբառ, օգտվող…)

Փորձեք գործարկել app.py- ն, երբ հաստատեք, որ դա աշխատում է, մենք կարող ենք այն օգտագործել որպես ծառայություն: Սա ինքնաբերաբար կսկսի կոդը հետին պլանում, երբ բեռնեք ձեր pi- ն:

Դա անելու համար պատճենեք ctb_service.service /etc/systemd/system/ctb_service.service: sudo cp ctb_service.service /etc/systemd/system/ctb_service.service

Այժմ միացրեք այն ՝ օգտագործելով systemctl միացնել ctb_service.service

Եթե Ձեզ անհրաժեշտ է որոշ փոփոխություններ կատարել ծածկագրում, ապա այն կարող եք հեշտությամբ դադարեցնել ՝ օգտագործելով systemctl stop (սա նորից կսկսվի վերագործարկման ժամանակ) կամ անջատել այն (դադարեցնել այն ինքնաբերաբար գործարկվելուց) ՝ օգտագործելով systemctl անջատումը:

Եթե Ձեզ անհրաժեշտ է տեղեկամատյաններին խորհրդակցել (սխալների պատճառով), կարող եք օգտագործել journalctl -u ctb_service.service:

Servicesառայությունների մասին լրացուցիչ տեղեկություններ կարող եք գտնել այստեղ ՝

Քայլ 7: Տեղադրեք Frontend- ը

Ինչպես միշտ, frontend- ը կարելի է գտնել իմ GitHub- ում ՝ RPI> Frontend (https://github.com/BoussonKarel/CaptureTheBox)

Տեղադրեք սա ձեր Raspberry Pi- ի /var /html թղթապանակում:

Սա պարունակում է խաղի համար անհրաժեշտ բոլոր վեբ էջերը:

Այն պարունակում է նաև սցենար ՝ հետին պլանի հետ հաղորդակցվելու համար (ինչպես իրական ժամանակում, այնպես էլ API վերջնակետերի միջոցով):

Քայլ 8: Պատյան ավելացնելը

Ավելացնելով պատյան
Ավելացնելով պատյան
Ավելացնելով պատյան
Ավելացնելով պատյան

Գործի համար ես օգտագործել եմ հին գործի պատյան ՝ հետևյալ նյութերի/տեխնիկայի հետ միասին.

  • 3D տպագրություն
  • Փրփուր մարտկոցը տեղում պահելու համար
  • Վերամշակված փայտե տախտակներ
  • Տաք սոսինձ
  • Պտուտակներ և ընկույզներ

Այն, ինչ դուք անում եք ձեր գործի հետ, ձեր ընտրությունն է: Ես ձեզ գեղարվեստական ազատություն կտամ:

Ոգեշնչման համար ես ավելացրել եմ իմ (ավարտված) պատյանից մի քանի լուսանկար:

Խորհուրդ ենք տալիս: