Turinys:

Skaitmeniniai šachmatai - stebėkite savo šachmatų žaidimą internete: 5 žingsniai
Skaitmeniniai šachmatai - stebėkite savo šachmatų žaidimą internete: 5 žingsniai

Video: Skaitmeniniai šachmatai - stebėkite savo šachmatų žaidimą internete: 5 žingsniai

Video: Skaitmeniniai šachmatai - stebėkite savo šachmatų žaidimą internete: 5 žingsniai
Video: CS50 2015 – 11-я неделя 2024, Lapkritis
Anonim
Skaitmeniniai šachmatai - stebėkite savo šachmatų žaidimą internete
Skaitmeniniai šachmatai - stebėkite savo šachmatų žaidimą internete

Nuo pat jaunystės žaidžiau daug šachmatų, ir kadangi žiniatinklyje yra daugybė svetainių, kuriose galima žaisti šachmatais prieš kompiuterius ar gyvus priešininkus, niekada neradau svetainės, kurioje būtų sekama jūsų šachmatų partija žaidžia realiame gyvenime. Taigi su šiuo projektu tikiuosi tai suvokti!

Aš tikiuosi:

  • Gebėti sekti šachmatų figūrų judėjimą
  • Peržiūrėkite pirmaujančiųjų sąrašus apie ankstesnius žaidimus.
  • Stebėkite laiką ir žaiskite greitai kaip profesionalus žaidimas.

Tai labai sudėtingas projektas, nes jei jis bus baigtas, reikės 64 šviesos jutiklių ir 8 lustų. Tai jau yra didelė užduotis ir mes net neskaičiuojame jokių kitų jutiklių.

Mano kolegija mums pateikė didelį sąrašą dalykų, kuriuos reikia padaryti:

  1. Sukurkite mūsų projekto schemą
  2. Sukurkite duomenų bazę duomenims saugoti ir gauti.
  3. Sukurkite svetainę naudodami „Adobe XD“
  4. Sukurkite šią svetainę naudodami CSS ir HTML
  5. Skaitykite jutiklius naudodami python
  6. Rodykite jutiklio duomenis svetainėje naudodami kolbą.

Šioje pamokoje aš jums padėsiu savo kelionėje ir visas bėdas bei išgelbėjimo akimirkas, kurias išgyvenau per pastarąsias porą savaičių.

1 žingsnis: reikmenys/įrankiai

Prekės, medžiagos ir įrankiai yra pirmasis žingsnis į sėkmingą projektą!

Įrankiai:

  • Lituoklis
  • Litavimo skarda
  • Replės
  • Gręžimo mašina
  • Juosta

Priedai:

  • „Raspberry Pi“su „micro SD“kortele (turėtų pakakti 4 GB)
  • „Rasberry Pi T-cobbler“
  • Šachmatų lenta su gabalėliais
  • 7 segmentų ekranas (TM 1637)
  • 2 jutikliniai jutikliai (TTP223B)
  • RFID skaitytuvas su kortelėmis (MFRC522)
  • MCP3008 (priklausomai nuo to, kiek norite nueiti, kiekvienam MCP galite perskaityti 8 šachmatų koordinates)
  • Priklausomas nuo šviesos rezistorius 5288 (8 kiekvienam MCP)
  • Antraštės (vyrai - vyrai ir moterys - vyrai)

Jei jums reikia nusipirkti viską, numatoma savikaina turėtų būti apie 125 eurus, įskaitant siuntimo išlaidas (tik reikmenys)!

Yra „Excel“failas su nuorodomis ir kainomis prie visko, ko jums reikia!

2 žingsnis: schemos ir planavimas

Schemos ir planavimas!
Schemos ir planavimas!
Schemos ir planavimas!
Schemos ir planavimas!

Kitas šio projekto žingsnis yra sukurti schemą. Aš padariau 2: vieną ant duonos lentos ir vieną visiškai elektroninį. Mums reikės šios schemos, kad viskas būtų švari ir kad neprijungtume nereikalingų dalykų!

Aš sukūriau šias schemas, jei kam nors įdomu, naudoju programą „Fritzing“.

Spalvų kodavimas:

  • Raudona = maitinimo šaltinis
  • Žalia = jungtis
  • Mėlyna = žemė

„Raspberry Pi“jungtys:

  • 3V3 => VC linija ant duonos lentos, maitinanti viską
  • 5V => 7 segmentų ekrano VCC
  • GND:

    • Žemė ant duonos lentos
    • 7 segmentų ekrano pagrindas
  • GPIO4 => Laikrodis Pasirinkite MCP3008 kaištį
  • GPIO10 => MCP3008 MOSI kaištis
  • GPIO9 => MCP3008 MISO kaištis
  • GPIO11 => MCP3008 CLK kaištis
  • GPIO7 => MFRC522 SDA kaištis
  • GPIO19 => Pirmojo jutiklinio jutiklio DIG kaištis
  • GPIO26 => Antrojo jutiklinio jutiklio DIG kaištis
  • GPIO20 => Septynių segmentų ekrano CLK kaištis
  • GPIO21 = septintojo segmento ekrano DIO kaištis

Keletas pastabų apie schemą:

  • Šioje schemoje yra tik 1 MCP, tai reiškia, kad iki galo bus galima nuskaityti tik 8 koordinates.
  • Aš naudoju GPIO kaiščius kaip „Chip Select“. Kadangi yra tik 2 lustų pasirinkimo kaiščiai su galimai 8 MCP.
  • 7 segmentų ekraną siūlo mokytojas, reikia tik 4 laidų, nes jis veikia pagal savo protokolą.
  • Jutiklinių jutiklių skaitmeninio kaiščio rezistoriai nėra visiškai reikalingi, tačiau patariama.

Komponentų paaiškinimas:

  • MCP su šviesos jutikliais:

    • MCP3008 yra 8 kanalų 10 bitų ADC:

      • MCP3008 nuskaitys šviesos jutiklių analoginę vertę, ši vertė priklauso nuo jutiklio šviečiančios šviesos kiekio.
      • Į savo „Python“kodą aš gausiu tą analoginę vertę ir konvertuosiu ją į 1 arba 0
  • Lietimo jutikliai:

    Veikia kaip mygtukas, tam naudoju klasę su atgalinio ryšio metodu. Daugiau apie tai vėliau

    RFID skaitytuvas (MFRC 522):

    • Naudojamas specialus protokolas (SPI) su įdiegtu paketu.
    • Nesunku koduoti naudojant įdiegtą paketą
    • Skaito žymą ir grąžina žymos vertę
    • Taip pat galite įrašyti žymę į vertę, todėl vietoj to, kad grąžintų šešioliktainę reikšmę, ji grąžina, pavyzdžiui, pavadinimą

    7 segmentas (TM1637)

    • Taip pat naudojamas įdiegtas paketas, skirtas lengvai koduoti
    • Sukurkite kintamąjį su sveiko skaičiaus reikšme, tada padalinkite jį į 4 simbolius ir parodykite tuos simbolius

3 žingsnis: SQL duomenų bazė

SQL duomenų bazė
SQL duomenų bazė

Trečias žingsnis šio projekto link yra 3NF normalizuotos SQL duomenų bazės sukūrimas!

Mums to prireiks:

  • Duomenų įterpimas
  • Gauti duomenis ir juos parodyti mūsų svetainėje
  • Galėdami tiksliai pamatyti, kiek posūkių įvyko dabartiniame šachmatų žaidime!

Lentelėse paaiškinta:

  • Žaidimai

    • Tai seka, kas laimėjo tam tikrą žaidimą ir kada žaidimas buvo žaidžiamas
    • Pagrindinis raktas čia yra „GameID“
    • Data turi standartinę dabartinės datos vertę
    • Nugalėtojas ir rezultatas bus pridėti vėliau, pasibaigus žaidimui!
  • Žaidėjai (olandų kalba)

    • Jie įterpiami rankiniu būdu, bet taip pat gali būti įterpiami naudojant RFID kortelių sistemą.
    • Įrašykite savo kortelės pavadinimą, tada perskaitykite kortelę ir įveskite pavadinimą į šią lentelę
    • Jis taip pat seka kiekvieno žaidėjo laimėjimų / pralaimėjimų rekordą, kuris bus rodomas svetainėje
  • Istorija (istorija)

    • Tai posūkio istorija
    • perkėlus šachmatų figūrą, ji bus atnaujinta čia
    • Jame yra 3 užsienio raktai, žaidėjas, žaidimas ir šachmatas
    • „ReadDate“(InleesDatum) yra data, kai jutiklis buvo nuskaitytas
    • „ReadTime“yra tas pats kaip „ReadDate“, bet su laiko žyma
    • LocationID (LocatieID) yra koordinatės, kurioje ji yra, pavadinimas. pvz "a3"
  • Šachmatų figūros („Schaakstukken“olandų kalba)

    • Kiekviena šachmatų figūra turi ID, komandą, vardą ir statusą
    • Komanda yra 1 arba 2, juoda arba balta;
    • Visų kūrinių pavadinimas būtų „Pėstininkas 1“
    • Būsena reiškia, kad kūrinys yra gyvas arba negyvas!

4 žingsnis: aparatinė įranga

Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga
Techninė įranga

Dabar, kai turime visus reikiamus kūrinius, galime pradėti kažką kurti!

Padalinkime šią dalį į papildomus veiksmus, nes bus lengviau paaiškinti:

  • 1 žingsnis: norite išgręžti skylę į kiekvieną šachmatų lentos koordinatę, kaip parodyta pirmame paveikslėlyje, taip pat išgręžkite skylę, kurioje norite įdėti jutiklinius jutiklius, RFID skaitytuvą ir 7 segmentų ekraną.

    Nepamirškite išgręžti skylių plokštės šone, jos skirtos įvairių komponentų laidams ant plokštės viršaus. Daug gręžimo, aš žinau

  • 2 veiksmas: pabandykite prijungti vieną ar du jutiklius prie „Raspberry Pi“, patikrinkite, ar jie veikia. Norite juos prijungti prie MCP analoginio skaitytuvo, kaip paaiškinta anksčiau 2 veiksme (Schemos).
  • 3 žingsnis: Tai gali būti sudėtinga ir labai sugadinti nervus, nes trumpiklių antraštės nėra labai įstrigusios, galbūt norėsite juos visus užklijuoti lenta atskirai arba kelis iš karto. Turite įsitikinti, kad jie lieka įstrigę šachmatų lentoje, kitaip negalėsite sėkmingai perskaityti jutiklių

    PATARIMAS! Jei jums tai palengvins, kai kurie klijai iš tikrųjų gali padėti išlaikyti jutiklius, kol juos klijuojate, aš tai atradau sunkiu būdu

5 žingsnis: programinė įranga

Programinė įranga
Programinė įranga

Sukūrę aparatūrą, kurią galėsite išbandyti, pabandykime parašyti tam tikrą kodą! Jei norite pažvelgti į mano kodą, eikite į mano „github“.

Pirmiausia mums reikės kelių paketų, kuriuos reikia įdiegti, ir aš padariau jums sąrašą:

  • kolba

    Tai bus jūsų python kodas

  • Kolbos lizdasIO

    Bendravimas tarp priekinio ir galinio

  • kvailas

    Naudinga skaityti šviesos jutiklius, veikia su matricomis

  • tinklai

    Norėdami išspausdinti savo IP adresą 7 segmentų ekrane

  • Kolba-CORS

    Kryžminis kilmės kreipimosi bendrinimas leidžia paketus bendrinti skirtinguose domenuose

Be to, aš parašiau keletą kursų ir jūs galite laisvai jais naudotis.

Priekinis galas

Svetainės kodas taip pat yra mano „github“puslapyje!

Priekinėje pusėje naudosiu „Chessboard.js“. Tai įdeda lengvai naudojamą šachmatų lentą su lengvai perkeliamomis figūromis!

Viskas lentoje yra pritaikoma, todėl smagiai! Atsisiuntę naujausią versiją, turėsite vilkti failus į savo projektą ir susieti juos su puslapiu, kuriame norite rodyti šachmatų lentą!

Po to pabandykime sukurti lentą, neatrodo per daug:

Pirma, savo html:

Antra, „JavaScript“faile:

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

ir jūs turite tai, dabar turėtumėte matyti šachmatų lentą! Nesivaržykite pritaikyti lentos CSS failuose!

Dabar norime pamatyti keletą šachmatų lentos judesių, ne per sunkių. Bet mes turime jį pritaikyti, kad perkėlimo komanda būtų siunčiama iš galinės pusės. Per daug nesileisiu į detales, bet norime padaryti kažką panašaus:

new_lijst = [Data.data [0], Data.data [1]; commando = new_lijst [0].concat ('-', new_lijst [1]); board1.move (komandinis);

Mes gauname sąrašą iš savo užpakalinės programos ir įdedame brūkšnį tarp dviejų koordinačių, tada naudokite komandą board.move, kad įvykdytumėte perkėlimą!

Tai yra mano paaiškinimas, ko mums reikia „chessboard.js“papildinio, eikite į mano „Github“ir pažiūrėkite kodą patys

Rekomenduojamas: