
Բովանդակություն:
2025 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2025-01-23 14:48


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) բաժնում:
Ինչպես է դա աշխատում?
- Ամեն 10 վայրկյանը մեկ կոդը փնտրում է ակտիվ խաղ: Եթե մեկը գտնվի, այն պահվում է huidigSpel (currentGame) կոչվող փոփոխականում:
- Եթե ռեժիմը սահմանվել է Serial, Arduino- ի և Pi- ի միջև օգտագործվում է մալուխ: Pi- ն հարցում է կատարում LDR և GPS արժեքների համար: Arduino- ն արձագանքում է JSON ձևաչափով: RFID պիտակները ուղարկվում են ամեն անգամ, երբ դրանք ներկայացվում են: Այս ռեժիմը օգտագործվել է բացառապես զարգացման նպատակների համար և իրականում այլևս անհրաժեշտ չէ:
- Եթե ռեժիմը դրված է LoRa- ի վրա, ստեղծվում է MQTT հաճախորդ, որը հետադարձ կապ է առաջացնում ամեն անգամ, երբ LoRa- ի տվյալները ստացվում են TTN- ի կողմից: Սա պարունակում է LDR, GPS և RFID տվյալներ:
- Ֆրոնտենդը կարող է տվյալներ ստանալ 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 տպագրություն
- Փրփուր մարտկոցը տեղում պահելու համար
- Վերամշակված փայտե տախտակներ
- Տաք սոսինձ
- Պտուտակներ և ընկույզներ
Այն, ինչ դուք անում եք ձեր գործի հետ, ձեր ընտրությունն է: Ես ձեզ գեղարվեստական ազատություն կտամ:
Ոգեշնչման համար ես ավելացրել եմ իմ (ավարտված) պատյանից մի քանի լուսանկար:
Խորհուրդ ենք տալիս:
Կառուցեք ձեր սեփական MP3 ձայնային տուփը `7 քայլ

Կառուցեք ձեր սեփական MP3 ձայնային տուփը. Երբևէ պատկերացրե՞լ եք, որ ձեր սեփական MP3 բարձրախոսը կառուցեք ձեր դպրոցի գիտության տոնավաճառի համար: Այս նախագծում մենք ձեզ քայլ առ քայլ կսովորեցնենք, որ դուք կառուցեք ձեր սեփական խոսնակը և օգտագործեք քիչ ռեսուրսներ և զվարճացեք ձեր ընկերների հետ: Հետևաբար, այս նախագծում դուք
Բարելավեք ձեր անպետք տուփը ՝ 5 քայլ

Բարելավեք ձեր անօգուտ տուփը
Թարմացրեք ձեր օղու նվերների տուփը. 7 քայլ (նկարներով)

Թարմացրեք ձեր օղու նվերների տուփը: Այս ուսանելի ծրագրում ես ցույց կտամ, թե ինչպես եմ ես արդիականացրել օղու նվերների տուփը `դրան ավելացնելով մի քանի rgb LED: Այն ունի երեք գործող ռեժիմ ՝ ստատիկ գույներ, պտտվող գույներ և խաղի ռեժիմ: Խաղի ռեժիմում սարքը պատահականորեն վերցնում է մեկ շիշը և շրթունքները փչում
Անհատականացրեք ձեր Run երկխոսության տուփը `8 քայլ

Անհատականացրեք ձեր Run երկխոսության տուփը. Օգտագործեք ռեսուրսային հաքեր `ձեր համակարգիչը հարմարեցնելու համար, մասնավորապես` գործարկվող երկխոսության տուփը: Դարձրեք ձեր համակարգիչը ձեր պես զով և սովորեք որևէ բան այդ ընթացքում:
Որքան հեշտ է կրկնօրինակել ձեր Linux տուփը ՝ օգտագործելով Rdiff- պահուստավորումը ՝ 9 քայլ

Որքան հեշտ է կրկնօրինակել ձեր Linux տուփը ՝ օգտագործելով Rdiff- կրկնօրինակը