Cuprins:

Șah digital - Urmăriți-vă jocul de șah online: 5 pași
Șah digital - Urmăriți-vă jocul de șah online: 5 pași

Video: Șah digital - Urmăriți-vă jocul de șah online: 5 pași

Video: Șah digital - Urmăriți-vă jocul de șah online: 5 pași
Video: Ce înseamna semnul tau din nastere 2024, Noiembrie
Anonim
Șah digital - Urmăriți-vă jocul de șah online
Șah digital - Urmăriți-vă jocul de șah online

Am jucat o mulțime de șah încă de când eram tânăr și, din moment ce web-ul are o cantitate imensă de site-uri web pentru a juca șah împotriva computerelor sau a adversarilor live, nu am găsit niciodată un site web care să urmărească jocul dvs. de șah pe care îl sunteți. jucând de fapt în viața reală. Deci, cu acest proiect, sper să realizez asta!

Sper să:

  • Să poți urmări mișcarea pieselor de șah
  • Vedeți câteva clasamente despre jocurile anterioare.
  • Urmăriți timpul și jucați rapid ca un joc profesionist.

Este un proiect foarte complex, deoarece dacă ar fi finalizat ar necesita 64 de senzori de lumină și 8 cipuri pentru citire. Ceea ce este deja o sarcină importantă și nici măcar nu numărăm niciunul dintre ceilalți senzori.

Colegiul meu ne-a oferit o listă mare de lucruri de făcut:

  1. Creați o schemă pentru proiectul nostru
  2. Creați o bază de date pentru stocarea și obținerea datelor.
  3. Proiectați un site web utilizând Adobe XD
  4. Recreați acest site web cu CSS și HTML
  5. Citiți senzorii cu python
  6. Afișați datele senzorului pe site folosind balonul.

În acest instructiv te voi ghida în călătoria mea și în toate necazurile și momentele de mântuire prin care am trecut în ultimele două săptămâni.

Pasul 1: consumabile / instrumente

Consumabile, materiale și instrumente sunt primul pas către un proiect de succes!

Instrumente:

  • Ciocan de lipit
  • Tinut de lipit
  • Cleşte
  • Masina de gaurit
  • Bandă

Provizii:

  • Raspberry Pi cu card micro SD (4 GB ar trebui să fie suficient)
  • T-cobbler Rasberry Pi
  • Tablă de șah cu bucăți
  • Afișaj pe 7 segmente (TM 1637)
  • 2 senzori tactili (TTP223B)
  • Cititor RFID cu carduri (MFRC522)
  • MCP3008 (În funcție de cât de departe doriți să mergeți, pentru fiecare MCP puteți citi 8 coordonate de șah)
  • Rezistor dependent de lumină tip 5288 (8 pentru fiecare MCP pe care îl aveți)
  • Anteturi (de la bărbat la bărbat și de la femeie la bărbat)

Dacă trebuie să cumpărați totul, prețul de cost estimat ar trebui să fie de aproximativ 125 de euro, inclusiv costurile de expediere (numai consumabile)!

Există un fișier Excel atașat cu linkuri și prețuri la tot ce aveți nevoie!

Pasul 2: Scheme și planificare

Scheme și planificare!
Scheme și planificare!
Scheme și planificare!
Scheme și planificare!

Următorul pas al acestui proiect este de a crea o schemă. Am făcut 2: una pe panou și una pur electronică. Vom avea nevoie de aceste scheme pentru a menține totul curat și pentru a ne asigura că nu conectăm lucruri inutile!

Am folosit un program numit „Fritzing” pentru a crea aceste scheme dacă cineva este interesat.

Cod de culoare:

  • Roșu = sursa de alimentare
  • Verde = conexiune
  • Albastru = pământ

Conexiuni Raspberry Pi:

  • 3V3 => Linia VC de pe panou, alimentând totul
  • 5V => VCC cu afișaj pe 7 segmente
  • GND:

    • Pământ pe panou
    • Masa afișajului pe 7 segmente
  • GPIO4 => Ceas Selectați pinul MCP3008
  • GPIO10 => pin MOSI al MCP3008
  • GPIO9 => pin MISO al MCP3008
  • GPIO11 => pin CLK al MCP3008
  • GPIO7 => pin SDA al MFRC522
  • GPIO19 => Pin DIG al primului senzor tactil
  • GPIO26 => PIN DIG al celui de-al doilea senzor tactil
  • GPIO20 => PIN CLK al afișajului cu șapte segmente
  • GPIO21 = pin DIO al afișajului de șapte segmente

Câteva note despre schemă:

  • Această schemă conține doar 1 MCP, ceea ce înseamnă că doar 8 coordonate vor putea fi citite complet.
  • Voi folosi pini GPIO ca Chip Select. Deoarece doar 2 pini de selectare a cipurilor sunt disponibili cu potențial 8 MCP-uri.
  • Afișajul pe 7 segmente este unul sugerat de un profesor, sunt necesare doar 4 fire, deoarece funcționează pe propriul protocol.
  • Rezistențele de pe pinul digital al senzorilor tactili nu sunt pe deplin necesare, dar sunt recomandate.

Explicarea componentelor:

  • MCP cu senzori de lumină:

    • Un MCP3008 este un ADC pe 8 canale pe 10 biți:

      • un MCP3008 va citi valoarea analogică a senzorilor de lumină, această valoare depinde de cantitatea de lumină care strălucește în prezent pe senzor.
      • În codul meu Python voi primi acea valoare analogică și o voi converti într-un 1 sau 0
  • Senzori tactili:

    Funcționează la fel ca un buton, folosesc o clasă pentru aceasta cu o metodă de apel invers. Mai multe despre asta mai târziu

    Cititor RFID (MFRC 522):

    • Folosește un protocol specific (SPI) cu un pachet instalat.
    • Nu este greu de codificat cu un pachet instalat
    • Citește eticheta și returnează valoarea etichetei
    • De asemenea, puteți scrie o valoare într-o etichetă, astfel încât, în loc să returneze valoarea hexazecimală, returnează un nume, de exemplu

    7 segmente (TM1637)

    • De asemenea, folosește un pachet instalat pentru codificare ușoară
    • Creați o variabilă cu o valoare întreagă, apoi împărțiți-o în 4 caractere și arătați aceste caractere

Pasul 3: Baza de date SQL

Baza de date SQL
Baza de date SQL

Al treilea pas către acest proiect este crearea unei baze de date SQL normalizate 3NF!

Vom avea nevoie de acest lucru pentru:

  • Introducerea datelor
  • Obținerea datelor și afișarea lor pe site-ul nostru web
  • Putând vedea exact câte ture au trecut în jocul actual de șah!

Tabelele explicate:

  • Jocuri

    • Acesta urmărește cine a câștigat un anumit joc și când a fost jucat jocul
    • Cheia principală aici este un GameID
    • Data are o valoare standard a datei curente
    • Câștigătorul și scorul vor fi adăugate mai târziu, după terminarea jocului!
  • Jucători (Spelers în olandeză)

    • Acestea sunt inserate manual, dar pot fi inserate și folosind sistemul de carduri RFID.
    • Scrieți un nume pe card, apoi citiți cardul și introduceți numele în acest tabel
    • De asemenea, urmărește înregistrarea de câștig / pierdere a fiecărui jucător, care va fi afișată pe site
  • Historiek (Istorie)

    • Aceasta este istoria rândurilor
    • când o piesă de șah este mutată, aceasta va fi actualizată aici
    • Are 3 chei străine, jucător, joc și piesă de șah
    • ReadDate (InleesDatum) este data la care senzorul a fost citit
    • ReadTime este același cu ReadDate, dar cu un timestamp
    • LocationID (LocatieID) este numele coordonatei pe care este poziționată. de exemplu „a3”
  • Piese de șah (Schaakstukken în olandeză)

    • Fiecare piesă de șah are un ID, o echipă, un nume și un statut
    • Echipa este fie 1, fie 2, negru sau alb;
    • Numele piesei vreodată ar fi „Pion 1”
    • Statutul înseamnă că piesa este vie sau moartă!

Pasul 4: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Acum, că avem toate piesele corecte la locul lor, putem începe să creăm ceva!

Să împărțim această parte în sub-pași, deoarece va fi mai ușor de explicat:

  • Pasul 1: doriți să găuriți o gaură în fiecare coordonată a tabloului de șah, așa cum se arată în prima imagine, de asemenea, găuriți o gaură în care doriți să plasați senzorii tactili, cititorul RFID și afișajul pe 7 segmente.

    Nu uitați să faceți niște găuri pe partea laterală a plăcii, acestea sunt pentru firele diferitelor componente de deasupra plăcii. O mulțime de foraje, știu

  • Pasul 2: Încercați să conectați unul sau doi senzori la Raspberry Pi, verificați dacă funcționează. Doriți să le conectați la cititorul analogic MCP așa cum s-a explicat mai devreme în Pasul 2 (Schemele).
  • Pasul 3: Acest lucru ar putea fi complicat și foarte nervos, deoarece anteturile jumperului nu sunt foarte blocate la locul lor, poate doriți să le lipiți pe toate pe tablă, fie individual, fie mai multe simultan. Trebuie să vă asigurați că rămân blocați pe tabla de șah, altfel nu veți putea citi senzorii cu succes

    BACSIS! Dacă vă este mai ușor, un anumit adeziv ar putea ajuta la menținerea senzorilor mai în poziție în timp ce îi înregistrați, am descoperit acest lucru în mod greu

Pasul 5: Software

Software
Software

După ce ați creat hardware pe care îl puteți testa, să încercăm să scriem un cod pentru el! Dacă doriți să aruncați o privire asupra codului meu, vă rugăm să vă îndreptați către github-ul meu.

În primul rând, vom avea nevoie de câteva pachete pentru a fi instalate, am continuat și am făcut o listă pentru dvs.:

  • balon

    Pe asta va rula codul dvs. python

  • Flask-socketIO

    Pentru a comunica între front-end și back-end

  • neclintit

    Util pentru citirea senzorilor de lumină, funcționează cu matrice

  • netifaces

    Pentru a imprima propria adresă IP pe afișajul pe 7 segmente

  • Flask-CORS

    Partajarea recursurilor pe mai multe origini, permite partajarea pachetelor în diferite domenii

Apoi, am scris câteva clase și ești liber să le folosești.

În față

Codul site-ului este, de asemenea, disponibil pe pagina mea de github!

Pentru front-end voi folosi Chessboard.js. Aceasta introduce o tablă de șah ușor de utilizat, cu piese ușor de mutat!

Totul de pe tablă este personalizabil, așa că distrează-te! După ce ați descărcat cea mai recentă versiune, va trebui să trageți fișierele în proiect și să le conectați la pagina în care doriți să afișați o tablă de șah!

După aceea, să încercăm să creăm o placă, nu arată prea greu:

Mai întâi, în html:

În al doilea rând, în fișierul dvs. javascript:

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

și iată-l, ar trebui să poți vedea acum o tablă de șah! Simțiți-vă liber să personalizați placa în fișierele CSS!

Acum, vrem să vedem câteva mișcări pe tabla de șah, nu prea greu. Dar trebuie să o personalizăm, astfel încât comanda de mutare să fie trimisă de back-end. Nu voi intra în prea multe detalii, dar vrem să facem așa ceva:

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

Primim o listă din programul nostru back-end și punem o liniuță între cele două coordonate, apoi folosim comanda board.move pentru a executa mutarea!

Aceasta este explicația mea despre ce avem nevoie de pluginul chessboard.js, mergeți la github-ul meu pentru a arunca singur codul

Recomandat: