Բովանդակություն:

Թվային շախմատ - Հետևեք ձեր շախմատի խաղին առցանց ՝ 5 քայլ
Թվային շախմատ - Հետևեք ձեր շախմատի խաղին առցանց ՝ 5 քայլ

Video: Թվային շախմատ - Հետևեք ձեր շախմատի խաղին առցանց ՝ 5 քայլ

Video: Թվային շախմատ - Հետևեք ձեր շախմատի խաղին առցանց ՝ 5 քայլ
Video: Նոյեմբերի 16, 2023 Պոդքասթ. Վերջապես: Մեծ ալիքը խոսում է: @moreperfectunion 2024, Նոյեմբեր
Anonim
Թվային շախմատ - Հետևեք ձեր շախմատային խաղին առցանց
Թվային շախմատ - Հետևեք ձեր շախմատային խաղին առցանց

Ես պատանի հասակից շատ շախմատ եմ խաղում, և քանի որ համացանցում կան բազմաթիվ կայքեր, որոնցում կարելի է շախմատ խաղալ համակարգիչների կամ կենդանի հակառակորդների դեմ, ես ոչ մի անգամ չեմ գտել մի կայք, որը հետևի ձեր շախմատային խաղին իրականում խաղում է իրական կյանքում: Այսպիսով, այս նախագծով ես հույս ունեմ դա գիտակցել:

Ես հույս ունեմ ՝

  • Կարողանալ հետևել շախմատի խաղաքարերի շարժմանը
  • Տեսեք մի քանի առաջատար խաղատախտակների մասին ցուցատախտակներ:
  • Հետևեք ժամանակին և արագ խաղացեք պրոֆեսիոնալ խաղի պես:

Դա շատ բարդ նախագիծ է, քանի որ ավարտին հասցնելու համար կպահանջվի 64 լուսային տվիչ և 8 չիպ: Ինչն արդեն մեծ խնդիր է, և մենք նույնիսկ չենք հաշվում մյուս սենսորներից որևէ մեկը:

Իմ քոլեջը մեզ տվեց անելիքների մեծ ցուցակ.

  1. Ստեղծեք սխեմա մեր նախագծի համար
  2. Ստեղծեք տվյալների պահեստավորման և ստացման տվյալների բազա:
  3. Նախագծեք կայք ՝ օգտագործելով Adobe XD
  4. Ստեղծեք այս կայքը CSS- ով և HTML- ով
  5. Կարդացեք սենսորները պիթոնով
  6. Flaույց տվեք սենսորների տվյալները վեբ կայքում `օգտագործելով շիշ:

Այս ուսանելի ուսուցմամբ ես ձեզ կառաջնորդեմ իմ ճանապարհորդության ընթացքում, և փրկության բոլոր դժվարություններն ու պահերը, որոնք ես ապրել եմ այս վերջին երկու շաբաթների ընթացքում:

Քայլ 1: Սարքավորումներ/գործիքներ

Պիտույքները, նյութերն ու գործիքները հաջողակ ծրագրի առաջին քայլն են:

Գործիքներ:

  • Sոդման երկաթ
  • Sոդման անագ
  • Տափակաբերան աքցան
  • Հորատման մեքենա
  • Կասետային

Պարագաներ:

  • Raspberry Pi միկրո SD քարտով (4 ԳԲ -ն պետք է բավարար լինի)
  • Rasberry Pi T-cobbler
  • Շախմատի տախտակ խաղաքարերով
  • 7 հատվածի էկրան (TM 1637)
  • 2 հպման տվիչ (TTP223B)
  • RFID ընթերցող ՝ քարտերով (MFRC522)
  • MCP3008 (Կախված նրանից, թե որքան հեռու եք ուզում գնալ, յուրաքանչյուր MCP- ի համար կարող եք կարդալ 8 շախմատային կոորդինատներ)
  • Լույսից կախված դիմադրության տիպ 5288 (8 ձեր յուրաքանչյուր MCP- ի համար)
  • Վերնագրեր (Արականից արական և իգականից տղամարդու)

Եթե Ձեզ անհրաժեշտ է ամեն ինչ գնել, ապա մոտավոր արժեքը պետք է լինի մոտ 125 եվրո, ներառյալ առաքման ծախսերը (միայն մատակարարումներ):

Կա Excel ֆայլ, որը կցված է հղումներով և գներով այն ամենի համար, ինչ ձեզ հարկավոր է:

Քայլ 2: Սխեմաներ և պլանավորում:

Սխեմաներ և պլանավորում
Սխեմաներ և պլանավորում
Սխեմաներ և պլանավորում
Սխեմաներ և պլանավորում

Այս նախագծի հաջորդ քայլը սխեմատիկ ձևավորումն է: Ես պատրաստել եմ 2 ՝ մեկը հացահատիկի վրա, մեկը ՝ զուտ էլեկտրոնային: Այս սխեմաները մեզ պետք կգան ՝ ամեն ինչ մաքուր պահելու և համոզվելու համար, որ մենք չենք միացնում ոչ մի ավելորդ իր:

Ես օգտագործել եմ «Fritzing» անունը կրող ծրագիրը ՝ այս սխեմաները ստեղծելու համար, եթե որևէ մեկին հետաքրքրում է:

Գույնի կոդավորում

  • Կարմիր = սնուցման աղբյուր
  • Կանաչ = կապ
  • Կապույտ = գետնին

Raspberry Pi կապեր

  • 3V3 => VC գիծ տախտակի վրա, սնուցելով ամեն ինչ
  • 5V => 7 հատվածի ցուցադրման VCC
  • GND:

    • Հողի սեղանի վրա
    • 7 հատվածի ցուցադրման հիմք
  • GPIO4 => ockամացույց Ընտրեք MCP3008- ի քորոցը
  • GPIO10 => MCP3008- ի MOSI կապում
  • GPIO9 => MISP3008 MISO փին
  • GPIO11 => MCP3008 CLK կապում
  • GPIO7 => MFRC522 SDA քորոց
  • GPIO19 => Առաջին Touch սենսորի DIG կապ
  • GPIO26 => Երկրորդ Touch սենսորի DIG կապ
  • GPIO20 => Յոթ հատվածի ցուցադրման CLK կապ
  • GPIO21 = Յոթ հատվածի ցուցադրման DIO կապում

Մի քանի նշումներ սխեմատիկայի վերաբերյալ

  • Այս սխեման պարունակում է ընդամենը 1 MCP, սա նշանակում է, որ ընդամենը 8 կոորդինատները կկարողանան ամբողջությամբ կարդալ:
  • Ես օգտագործելու եմ GPIO կապում որպես Chip Select: Քանի որ միայն 2 չիպերի ընտրված կապում են հասանելի պոտենցիալ 8 MCP- ով:
  • 7 հատվածի ցուցադրումը ուսուցչի առաջարկածն է, անհրաժեշտ է ընդամենը 4 լար, քանի որ այն աշխատում է իր սեփական արձանագրության վրա:
  • Հպման տվիչների թվային քորոցի դիմադրությունները լիովին անհրաժեշտ չեն, բայց խորհուրդ են տրվում:

Բաղադրիչների բացատրություն.

  • MCP լուսային տվիչներով.

    • MCP3008- ը 8 ալիք 10 բիթանոց ADC է.

      • MCP3008- ը կարդալու է լույսի տվիչների անալոգային արժեքը, այս արժեքը կախված է սենսորից ներկայումս շողացող լույսի քանակից:
      • Իմ պիթոնի ծածկագրում ես կստանամ այդ անալոգային արժեքը և այն կվերածեմ 1 -ի կամ 0 -ի
  • Հպման տվիչներ

    Աշխատում է այնպես, ինչպես կոճակը, ես դրա համար դաս եմ օգտագործում հետադարձ կապի մեթոդով: Այս մասին ավելի ուշ

    RFID ընթերցող (MFRC 522):

    • Օգտագործում է հատուկ արձանագրություն (SPI) `տեղադրված փաթեթով:
    • Տեղադրված փաթեթով կոդավորելը դժվար չէ
    • Կարդում է պիտակը և վերադարձնում պիտակի արժեքը
    • Դուք կարող եք նաև արժեք գրել պիտակի վրա, ուստի տասնվեցական արժեքը վերադարձնելու փոխարեն այն վերադարձնում է անուն, օրինակ

    7 հատված (TM1637)

    • Նաև օգտագործում է տեղադրված փաթեթ ՝ հեշտ կոդավորման համար
    • Ստեղծեք փոփոխական ամբողջ արժեքով, այնուհետև բաժանեք այն 4 նիշի և ցույց տվեք այդ նիշերը

Քայլ 3: SQL տվյալների շտեմարան

SQL տվյալների շտեմարան
SQL տվյալների շտեմարան

Այս ծրագրի երրորդ քայլը 3NF նորմալացված SQL տվյալների բազայի ստեղծումն է:

Սա մեզ պետք կգա հետևյալի համար.

  • Տվյալների տեղադրում
  • Տվյալների ստացում և ցուցադրում մեր կայքում
  • Կարողանալ ճշգրիտ տեսնել, թե քանի շրջադարձ է կատարվել շախմատի ընթացիկ պարտիայում:

Աղյուսակները բացատրված են

  • Խաղեր

    • Սա հետևում է, թե ով է հաղթել որոշակի խաղ և երբ է խաղացել
    • Այստեղ առաջնային բանալին GameID- ն է
    • Ամսաթիվն ունի ընթացիկ ամսաթվի ստանդարտ արժեք
    • Հաղթողն ու հաշիվը կավելացվեն ավելի ուշ ՝ խաղի ավարտից հետո:
  • Խաղացողներ (հոլանդերեն լեզվով խոսողներ)

    • Սրանք տեղադրվում են ձեռքով, բայց կարող են տեղադրվել նաև RFID քարտային համակարգի միջոցով:
    • Գրեք անուն ձեր քարտին, ապա կարդացեք քարտը և տեղադրեք անունը այս աղյուսակում
    • Այն նաև հետևում է յուրաքանչյուր խաղացողի հաղթանակի / պարտության գրանցմանը, որը կցուցադրվի կայքում
  • Պատմություն (պատմություն)

    • Սա հերթի պատմությունն է
    • երբ շախմատի կտորը տեղափոխվում է, այն կթարմացվի այստեղ
    • Այն ունի 3 արտաքին բանալիներ, խաղացող, խաղ և շախմատ
    • ReadDate (InleesDatum) ամսաթիվն է, երբ սենսորը կարդացվել է
    • ReadTime- ը նույնն է, ինչ ReadDate- ը, բայց ունի ժամկետային նշան
    • LocationID (LocatieID) կոորդինատի անունն է, որտեղ այն տեղադրված է: օրինակ «a3»
  • Շախմատի կտորներ (Schaakstukken հոլանդերեն)

    • Շախմատի յուրաքանչյուր կտոր ունի ID, թիմ, անուն և կարգավիճակ
    • Թիմը կա՛մ 1 է, կա՛մ 2, սև կամ սպիտակ;
    • Երբևէ կտորի անունը կլինի «Գրավ 1»
    • Կարգավիճակը նշանակում է, որ կտորը կենդանի է կամ մահացած:

Քայլ 4: Սարքավորումներ

Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ
Սարքավորումներ

Այժմ, երբ մենք ունենք բոլոր ճիշտ կտորները տեղում, կարող ենք սկսել ինչ -որ բան ստեղծել:

Եկեք այս մասը բաժանենք ենթաքայլերի, քանի որ ավելի հեշտ կլինի բացատրել.

  • Քայլ 1. wantանկանում եք ձեր շախմատային տախտակի յուրաքանչյուր կոորդինատում անցք բացել, ինչպես ցույց է տրված առաջին նկարում, ինչպես նաև անցք, որտեղ ցանկանում եք տեղադրել հպման տվիչները, RFID ընթերցողը և 7 հատվածի ցուցադրումը:

    Մի մոռացեք տախտակի կողքին մի քանի անցք անել, դրանք տախտակի վերևում գտնվող տարբեր բաղադրիչների լարերի համար են: Շատ հորատումներ, ես գիտեմ:

  • Քայլ 2. Փորձեք մեկ կամ երկու տվիչ միացնել Raspberry Pi- ին, ստուգեք, արդյոք դրանք աշխատում են: Դուք ցանկանում եք դրանք միացնել MCP անալոգային ընթերցողին, ինչպես բացատրվել է Քայլ 2 -ում ավելի վաղ (սխեմաները):
  • Քայլ 3: Սա կարող է բարդ լինել և շատ նյարդայնացնող, քանի որ ցատկերի վերնագրերը շատ խրված չեն տեղում, գուցե ցանկանաք դրանք բոլորը կպցնել տախտակին `առանձին կամ միանգամից: Դուք պետք է համոզվեք, որ նրանք խրված են մնում շախմատային տախտակին, հակառակ դեպքում դուք չեք կարողանա հաջողությամբ կարդալ սենսորները

    ԽՈՐՀՈՐԴ! Եթե դա ձեզ համար ավելի դյուրին է դարձնում, ինչ -որ սոսինձ կարող է իրականում օգնել սենսորներն ավելի ամր պահել տեղում, երբ դրանք կպչում եք, ես դա դժվար ճանապարհով հայտնաբերեցի:

Քայլ 5: Softwareրագրակազմ

Ծրագրային ապահովում
Ծրագրային ապահովում

Սարքավորումներ պատրաստելուց հետո, որոնք կարող եք փորձարկել, եկեք փորձենք դրա համար ինչ -որ կոդ գրել: Եթե ցանկանում եք նայել իմ ծածկագրին, խնդրում ենք անցնել իմ github- ին:

Սկզբում մենք պետք է տեղադրենք մի քանի փաթեթ, ես առաջ գնացի և ձեզ համար ցուցակ կազմեցի.

  • շիշ

    Սա այն է, ինչի վրա կաշխատի ձեր պիթոնի կոդը

  • Flask-socketIO

    Առջևի և հետևի միջև հաղորդակցվելու համար

  • թմրած

    Օգտակար է լույսի տվիչների ընթերցման համար, աշխատում է մատրիցով

  • ցանցային դեմքեր

    7 հատվածի էկրանին ձեր սեփական IP հասցեն տպելու համար

  • Flask-CORS

    Տարբեր ծագման ռեսուրսների փոխանակում, թույլ է տալիս փաթեթները կիսել տարբեր տիրույթներում:

Դրան զուգահեռ, ես գրել եմ մի քանի դաս, և դուք ազատ եք դրանք օգտագործել:

Դիմային մաս

Կայքի կոդը հասանելի է նաև իմ github էջում:

Առջևի մասում ես կօգտագործեմ Chessboard.js- ը: Սա տեղադրում է հեշտ օգտագործման շախմատային տախտակ ՝ հեշտ տեղաշարժվող կտորներով:

Գրատախտակին ամեն ինչ հարմարեցված է, այնպես որ զվարճացեք: Վերջին տարբերակը ներբեռնելուց հետո դուք պետք է ֆայլերը քաշեք ձեր նախագծի մեջ և դրանք կապեք այն էջին, որտեղ ցանկանում եք ցուցադրել շախմատի տախտակ:

Դրանից հետո, եկեք փորձենք տախտակ ստեղծել, այնքան էլ դժվար չի թվում

Նախ, ձեր html- ում

Երկրորդ, ձեր javascript ֆայլում

board1 = ChessBoard ('board1', 'start');

և ահա այն, այժմ պետք է կարողանաք տեսնել շախմատի տախտակ: Ազատորեն հարմարեցրեք տախտակը CSS ֆայլերում:

Այժմ մենք ցանկանում ենք որոշ քայլեր տեսնել շախմատի տախտակի վրա ՝ ոչ շատ կոշտ: Բայց մենք պետք է այն անհատականացնենք, որպեսզի շարժման հրամանը ուղարկվի back-end- ով: Չեմ մանրամասնի շատ, բայց մենք ուզում ենք անել հետևյալը.

new_lijst = [Data.data [0], Data.data [1]; commando = new_lijst [0].concat ('-', new_lijst [1]); տախտակ 1. շարժվել (հրամանատար);

Մենք ստանում ենք ցուցակ մեր back-end ծրագրից և երկու կոորդինատների միջև ընկնում ենք մի գծիկ, այնուհետև օգտագործում ենք board.move հրամանը `քայլը կատարելու համար:

Դա իմ բացատրությունն է այն բանի, թե ինչ է մեզ պետք շախմատային տախտակ. Js plugin- ի համար

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