Talaan ng mga Nilalaman:

Digital Chess - Subaybayan ang Iyong Laro sa Chess Online: 5 Mga Hakbang
Digital Chess - Subaybayan ang Iyong Laro sa Chess Online: 5 Mga Hakbang

Video: Digital Chess - Subaybayan ang Iyong Laro sa Chess Online: 5 Mga Hakbang

Video: Digital Chess - Subaybayan ang Iyong Laro sa Chess Online: 5 Mga Hakbang
Video: Despite Of Their Busy Schedule They Still Make Time To Watch Each Others Game Happy 33rd #KKDwight ♡ 2024, Nobyembre
Anonim
Digital Chess - Subaybayan ang Iyong Chess Game Online
Digital Chess - Subaybayan ang Iyong Chess Game Online

Naglalaro ako ng maraming chess mula pa noong bata pa ako, at dahil ang web ay mayroong maraming mga website upang maglaro ng chess laban sa mga computer o live na kalaban, hindi ako kailanman nakakita ng isang website na sumusubaybay sa iyong laro sa chess na ikaw ay naglalaro talaga sa totoong buhay. Kaya sa proyektong ito inaasahan kong mapagtanto iyon!

Inaasahan kong:

  • Masusubaybayan ang paggalaw ng mga piraso ng chess
  • Tingnan ang ilang mga leaderboard tungkol sa mga nakaraang laro.
  • Subaybayan ang oras at maglaro nang mabilis tulad ng isang propesyonal na laro.

Ito ay isang napaka-kumplikadong proyekto dahil kung nakumpleto ito ay mangangailangan ng 64 light sensor at 8 chips na basahin. Alin na isang malaking gawain at hindi namin binibilang ang alinman sa iba pang mga sensor.

Binigyan kami ng aking kolehiyo ng isang malaking listahan ng mga bagay na dapat gawin:

  1. Lumikha ng isang eskematiko para sa aming proyekto
  2. Lumikha ng isang database para sa pagtatago at pagkuha ng data.
  3. Magdisenyo ng isang website gamit ang Adobe XD
  4. Muling likhain ang website na ito gamit ang CSS at HTML
  5. Basahin ang mga sensor na may sawa
  6. Ipakita ang data ng sensor sa website gamit ang flask.

Sa itinuturo na ito ay gagabayan kita sa aking paglalakbay, at lahat ng mga problema at sandali ng kaligtasan na napagdaanan ko sa huling dalawang linggo.

Hakbang 1: Mga Supply / Tool

Ang mga supply, materyales at tool ay ang unang hakbang sa isang matagumpay na proyekto!

Mga tool:

  • Panghinang
  • Soldering Tin
  • Mga Plier
  • Makina ng pagbabarena
  • Tape

Mga Pantustos:

  • Raspberry Pi na may micro SD card (4GB dapat sapat)
  • Rasberry Pi T-cobbler
  • Chess Board na may mga piraso
  • 7 segment display (TM 1637)
  • 2 Touch sensor (TTP223B)
  • RFID Reader na may mga kard (MFRC522)
  • MCP3008 (Nakasalalay sa kung gaano kalayo ang nais mong puntahan, para sa bawat MCP maaari mong mabasa ang 8 mga coordinate ng Chess)
  • Light Dependent Resistor type 5288 (8 para sa bawat MCP na mayroon ka)
  • Mga Header (Lalaki hanggang Lalaki at Babae hanggang Lalaki)

Kung kailangan mong bilhin ang lahat, ang tinatayang presyo ng gastos ay dapat na nasa 125 euro kasama na ang mga gastos sa pagpapadala (Mga supply lamang)!

Mayroong isang file na Excel na naka-attach na may mga link at presyo sa lahat ng kailangan mo!

Hakbang 2: Mga Skema at Pagpaplano

Mga Skema at Pagpaplano!
Mga Skema at Pagpaplano!
Mga Skema at Pagpaplano!
Mga Skema at Pagpaplano!

Ang susunod na hakbang sa proyektong ito ay upang lumikha ng isang iskematiko. Ginawa ko ang 2: Isa sa breadboard at isang pulos electronical. Kakailanganin namin ang mga eskematiko na ito upang mapanatiling malinis ang lahat at tiyakin na hindi namin ikonekta ang anumang hindi kinakailangang bagay!

Gumamit ako ng isang programa na tinatawag na "Fritzing" upang likhain ang mga eskematiko na ito kung mayroong interesado.

Pag-coding ng Kulay:

  • Pula = supply ng kuryente
  • Green = koneksyon
  • Asul = lupa

Mga koneksyon sa Raspberry Pi:

  • 3V3 => linya ng VC sa breadboard, pinapagana ang lahat
  • 5V => VCC ng 7 segment na ipinapakita
  • GND:

    • Bumaba sa breadboard
    • Lupa ng pagpapakita ng 7 segment
  • GPIO4 => Clock Select pin ng MCP3008
  • GPIO10 => MOSI pin ng MCP3008
  • GPIO9 => MISO pin ng MCP3008
  • GPIO11 => CLK pin ng MCP3008
  • GPIO7 => SDA pin ng MFRC522
  • GPIO19 => DIG pin ng unang Touch sensor
  • GPIO26 => DIG pin ng pangalawang Touch sensor
  • GPIO20 => CLK pin ng pitong segment na display
  • GPIO21 = DIO pin ng sevent segment na display

Ang ilang mga tala sa iskematiko:

  • Naglalaman lamang ang iskematikong ito ng 1 MCP, nangangahulugan ito na 8 coordinate lamang ang maaaring mabasa nang buo.
  • Gumagamit ako ng mga GPIO pin bilang aking Chip Select. Dahil 2 Chip select pin lamang ang magagamit na may potensyal na 8 MCP's.
  • Ang pagpapakita ng 7 segment ay isang iminungkahi ng isang guro, 4 na mga wire lamang ang kinakailangan dahil gumagana ito sa sarili nitong protokol.
  • Ang mga resistors sa digital pin ng mga touch sensor ay hindi ganap na kinakailangan, ngunit sinusulong.

Pagpapaliwanag ng mga bahagi:

  • MCP na may light sensor:

    • Ang isang MCP3008 ay isang 8 channel 10 bit ADC:

      • babasahin ng isang MCP3008 ang halaga ng analog na ilaw ng mga sensor, ang halagang ito ay nakasalalay sa dami ng ilaw na kasalukuyang nagniningning sa sensor.
      • Sa aking python code matatanggap ko ang halagang analog na iyon at i-convert ito sa isang 1 o 0
  • Mga touch sensor:

    Gumagana tulad ng isang pindutan, gumagamit ako ng isang klase para dito sa isang paraan ng callback. Higit pa rito

    RFID reader (MFRC 522):

    • Gumagamit ng isang tukoy na protocol (SPI) na may naka-install na pakete.
    • Hindi mahirap i-code gamit ang isang naka-install na pakete
    • Binabasa ang tag at ibinalik ang halaga ng tag
    • Maaari ka ring magsulat ng isang halaga sa isang tag, kaya sa halip na ibalik ang hexadecimal na halaga, nagbabalik ito ng isang pangalan halimbawa

    7 Segment (TM1637)

    • Gumagamit din ng isang naka-install na pakete para sa madaling pag-coding
    • Lumikha ng isang variable na may isang halaga ng integer, pagkatapos ay hatiin ito sa 4 na character at ipakita ang mga character na iyon

Hakbang 3: SQL Database

SQL Database
SQL Database

Ang pangatlong hakbang patungo sa proyektong ito ay ang paglikha ng isang 3NF na normalisadong database ng SQL!

Kakailanganin namin ito para sa:

  • Pagpasok ng data
  • Pagkuha ng data at ipinapakita ito sa aming website
  • Makita nang eksakto kung gaano karaming mga pagliko ang napunta sa kasalukuyang laro ng chess!

Ipinaliwanag ang mga talahanayan:

  • Mga Laro

    • Sinusubaybayan nito kung sino ang nanalo ng isang tiyak na laro at kung kailan nilalaro ang laro
    • Ang pangunahing susi dito ay isang GameID
    • Ang Petsa ay may pamantayang halaga ng kasalukuyang petsa
    • Ang nagwagi at iskor ay idadagdag sa paglaon, matapos ang laro!
  • Mga Manlalaro (Mga Speler sa Dutch)

    • Manu-manong ipinasok ang mga ito, ngunit maaari ring maipasok gamit ang RFID card system.
    • Sumulat ng isang pangalan sa iyong card, pagkatapos basahin ang card at ipasok ang pangalan sa talahanayan na ito
    • Sinusubaybayan din nito ang win / loss record ng bawat manlalaro, upang maipakita sa website
  • Historiek (Kasaysayan)

    • Ito ang kasaysayan ng pagliko
    • kapag inilipat ang isang piraso ng chess, maa-update ito rito
    • Mayroon itong 3 mga banyagang susi, manlalaro, laro at chesspiece
    • ang ReadDate (InleesDatum) ay ang petsa kung kailan nabasa ang sensor
    • Ang ReadTime ay kapareho ng ReadDate ngunit may timestamp
    • Ang locationID (LocatieID) ay ang pangalan para sa coordinate kung saan ito nakaposisyon. halimbawa "a3"
  • Mga piraso ng Chess (Schaakstukken sa dutch)

    • Ang bawat piraso ng chess ay may ID, koponan, pangalan at katayuan
    • Ang koponan ay alinman sa 1 o 2, itim o puti;
    • Ang pangalan ng kailanman piraso ay ibig sabihin ay "Pawn 1"
    • Ang katayuan ay nangangahulugang ang piraso ay buhay o patay!

Hakbang 4: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Ngayon na nakuha na namin ang lahat ng tamang mga piraso sa lugar, maaari nating simulan ang paglikha ng isang bagay!

Hatiin natin ang bahaging ito sa mga sub hakbang sapagkat mas madaling ipaliwanag:

  • Hakbang 1: Nais mong mag-drill ng isang butas sa bawat coordinate ng iyong chessboard tulad ng ipinakita sa unang larawan, mag-drill din ng isang butas kung saan mo nais na ilagay ang mga touch sensor, RFID reader at 7 segment na display.

    Huwag kalimutan na mag-drill ng ilang mga butas sa gilid ng board, ito ay para sa mga wire ng iba't ibang mga bahagi sa tuktok ng board. Maraming pagbabarena, alam ko

  • Hakbang 2: Subukang i-wire ang isa o dalawang sensor sa Raspberry Pi, suriin kung gumagana ang mga ito. Nais mong ikonekta ang mga ito sa MCP analog reader na ipinaliwanag nang mas maaga sa Hakbang 2 (Ang mga eskematiko).
  • Hakbang 3: Maaaring ito ay nakakalito at napaka-pagkasira ng nerbiyos, dahil ang mga header ng jumper ay hindi masyadong natigil sa lugar, baka gusto mong i-tape ang lahat sa pisara, alinman sa isa-isa o maramihang sabay-sabay. Dapat mong tiyakin na mananatili silang makaalis sa chessboard, kung hindi man ay hindi mo magagawang basahin ang mga sensor nang matagumpay

    TIP! Kung ginagawang madali para sa iyo, ang ilang pandikit ay maaaring makatulong sa pagpapanatili ng mga sensor nang higit pa sa lugar habang nai-tape ang mga ito, natuklasan ko ito sa mahirap na paraan

Hakbang 5: Software

Software
Software

Matapos mong magawa ang hardware na maaari mong subukan, subukang sumulat ng ilang code para dito! Kung nais mong tingnan ang aking code, mangyaring magtungo sa aking github.

Back-endFirst kakailanganin namin ng ilang mga pakete upang mai-install, nagpatuloy ako at gumawa ng isang listahan para sa iyo:

  • prasong

    Ito ang tatakbo sa iyong python code

  • Flask-socketIO

    Upang makipag-usap sa pagitan ng front-end at back-end

  • numpy

    Kapaki-pakinabang para sa pagbabasa ng mga light sensor, gumagana sa matrix's

  • netifaces

    Upang mai-print ang iyong sariling IP address sa display ng 7 segment

  • Flask-CORS

    Pagbabahagi ng pinagmulan ng sangguniang pinagmulan, pinapayagan ang pagbabahagi ng mga pakete sa iba't ibang mga domain

Sa tabi nito, nagsulat ako ng maraming klase at malaya kang gamitin ang mga ito.

Harap-harapan

Magagamit din ang code ng website sa aking pahina ng github!

Para sa front-end gagamit ako ng Chessboard.js. Nagpapasok ito ng isang madaling gamitin na chessboard na may mga madaling ilipat na mga piraso!

Lahat ng nasa board ay napapasadyang kaya magsaya ka! Matapos ma-download ang pinakabagong bersyon, kakailanganin mong i-drag ang mga file sa iyong proyekto at i-link ang mga ito sa pahina kung saan mo nais ipakita ang isang chessboard!

Pagkatapos nito, subukang lumikha ng isang board, hindi masyadong mahirap:

Una, sa iyong html:

Pangalawa, sa iyong javascript file:

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

at doon mo ito, dapat na makakita ka ng isang chessboard ngayon! Huwag mag-atubiling ipasadya ang board sa mga CSS file!

Ngayon, nais naming makita ang ilang mga galaw sa chessboard, hindi masyadong mahirap. Ngunit kailangan naming ipasadya ito upang ang utos ng paglipat ay maipapadala ng back-end. Hindi ko bibigyan ng detalyadong detalye, ngunit nais naming gumawa ng isang bagay tulad nito:

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

Nakatanggap kami ng isang listahan mula sa aming back-end programm, at naglalagay ng dash inbet pagitan ng dalawang mga coordinate, pagkatapos ay gamitin ang board.move command upang maisagawa ang paglipat!

Iyon ang paliwanag ko sa kung ano ang kailangan namin ng plugin ng chessboard.js, magtungo sa aking github upang tingnan ang code mismo.

Inirerekumendang: