Sisällysluettelo:

Digitaalinen shakki - Seuraa shakkipeliäsi verkossa: 5 vaihetta
Digitaalinen shakki - Seuraa shakkipeliäsi verkossa: 5 vaihetta

Video: Digitaalinen shakki - Seuraa shakkipeliäsi verkossa: 5 vaihetta

Video: Digitaalinen shakki - Seuraa shakkipeliäsi verkossa: 5 vaihetta
Video: Tekijänoikeusinfra Workshop 1: Digitaidot & metadata 1.12.2020 2024, Marraskuu
Anonim
Digitaalinen shakki - Seuraa shakkipeliäsi verkossa
Digitaalinen shakki - Seuraa shakkipeliäsi verkossa

Olen pelannut paljon shakkia nuoresta asti, ja koska verkossa on valtava määrä sivustoja, joilla voi pelata shakkia tietokoneita tai live -vastustajia vastaan, en ole koskaan löytänyt verkkosivustoa, joka seuraa shakkipeliäsi oikeastaan pelaamassa tosielämässä. Joten tämän projektin avulla toivon ymmärtäväni sen!

Toivon:

  • Pystyy seuraamaan shakkipalojen liikettä
  • Katso joitakin tulostauluja menneistä peleistä.
  • Seuraa aikaa ja pelaa nopeasti kuin ammattimainen peli.

Se on erittäin monimutkainen projekti, koska sen valmistuminen vaatisi 64 valoanturia ja 8 sirua lukemiseen. Mikä on jo iso tehtävä, emmekä edes laske muita antureita.

Yliopistoni antoi meille suuren luettelon tehtävistä:

  1. Luo kaavio projektillemme
  2. Luo tietokanta tietojen tallentamista ja keräämistä varten.
  3. Suunnittele verkkosivusto Adobe XD: llä
  4. Luo tämä sivusto uudelleen CSS: llä ja HTML: llä
  5. Lue anturit pythonilla
  6. Näytä anturitiedot verkkosivustolla pullon avulla.

Tässä ohjeessa opastan sinua matkallani, ja kaikki vaikeudet ja pelastuksen hetket olen käynyt läpi nämä viimeiset pari viikkoa.

Vaihe 1: Tarvikkeet/työkalut

Tarvikkeet, materiaalit ja työkalut ovat ensimmäinen askel onnistuneeseen projektiin!

Työkalut:

  • Juotin
  • Tina juotos
  • Pihdit
  • Porakone
  • Nauha

Tarvikkeet:

  • Raspberry Pi micro SD -kortilla (4 Gt pitäisi riittää)
  • Rasberry Pi T-kenkä
  • Shakkilauta palasilla
  • 7 segmentin näyttö (TM 1637)
  • 2 kosketusanturia (TTP223B)
  • RFID -lukija korteilla (MFRC522)
  • MCP3008 (Riippuen siitä, kuinka pitkälle haluat mennä, voit lukea jokaisesta MCP: stä 8 shakkikoordinaattia)
  • Valosta riippuva vastustyyppi 5288 (8 jokaiselle käytössäsi olevalle MCP: lle)
  • Otsikot (uros -uros ja naaras -uros)

Jos sinun on ostettava kaikki, arvioidun omakustannushinnan tulisi olla noin 125 euroa sisältäen toimituskulut (vain tarvikkeet)!

Liitteenä on Excel -tiedosto, jossa on linkit ja hinnat kaikkeen mitä tarvitset!

Vaihe 2: Kaaviot ja suunnittelu

Kaaviot ja suunnittelu!
Kaaviot ja suunnittelu!
Kaaviot ja suunnittelu!
Kaaviot ja suunnittelu!

Seuraava vaihe tässä projektissa on luoda kaavio. Tein 2: Yksi leipälaudalla ja toinen puhtaasti elektroninen. Tarvitsemme tämän kaavion pitääksemme kaiken puhtaana ja varmistaaksemme, että emme yhdistä tarpeettomia tavaroita!

Käytin ohjelmaa nimeltä "Fritzing" luomaan nämä kaaviot, jos jotakuta kiinnostaa.

Värikoodit:

  • Punainen = virtalähde
  • Vihreä = yhteys
  • Sininen = maa

Raspberry Pi -yhteydet:

  • 3V3 => VC -linja leipälaudalla, joka saa kaiken virtaa
  • 5V => 7 segmentin näytön VCC
  • GND:

    • Maata leipälaudalla
    • 7 segmentin näytön pohja
  • GPIO4 => Kello Valitse MCP3008: n nasta
  • GPIO10 => MCP3008: n MOSI -nasta
  • GPIO9 => MCP3008: n MISO -nasta
  • GPIO11 => MCP3008: n CLK -nasta
  • GPIO7 => MFRC522: n SDA -nasta
  • GPIO19 => Ensimmäisen kosketusanturin DIG -nasta
  • GPIO26 => Toisen kosketusanturin DIG -nasta
  • GPIO20 => Seitsemän segmentin näytön CLK -nasta
  • GPIO21 = seitsemännen segmentin näytön DIO -nasta

Pari huomautusta kaavioista:

  • Tämä kaavio sisältää vain 1 MCP: n, mikä tarkoittaa, että vain 8 koordinaattia voidaan lukea kokonaan.
  • Käytän GPIO -nastoja Chip Selectina. Koska vain 2 Chip Select -tappia on saatavana mahdollisesti 8 MCP: n kanssa.
  • Opettajan ehdottama 7 -segmenttinen näyttö, vain 4 johtoa tarvitaan, koska se toimii omalla protokollallaan.
  • Kosketusantureiden digitaalisen tapin vastuksia ei tarvita täysin, mutta ne ovat suositeltavia.

Osien selittäminen:

  • MCP valoanturilla:

    • MCP3008 on 8 -kanavainen 10 -bittinen ADC:

      • MCP3008 lukee valosensorien analogisen arvon, tämä arvo riippuu anturiin parhaillaan palamisesta.
      • Python -koodissani vastaanotan analogisen arvon ja muunnan sen 1: ksi tai 0: ksi
  • Kosketusanturit:

    Toimii aivan kuin painike, käytän tätä luokkaa soittoprosessilla. Tästä lisää myöhemmin

    RFID -lukija (MFRC 522):

    • Käyttää tiettyä protokollaa (SPI) asennetun paketin kanssa.
    • Ei ole vaikea koodata asennetulla paketilla
    • Lukee tunnisteen ja palauttaa tunnisteen arvon
    • Voit myös kirjoittaa arvon tunnisteeseen, joten heksadesimaalisen arvon palauttamisen sijaan se palauttaa nimen

    7 -segmentti (TM1637)

    • Käyttää myös asennettua pakettia koodauksen helpottamiseksi
    • Luo muuttuja, jolla on kokonaisluku, jaa se sitten neljään merkkiin ja näytä nämä merkit

Vaihe 3: SQL -tietokanta

SQL -tietokanta
SQL -tietokanta

Kolmas askel kohti tätä projektia on luoda 3NF normalisoitu SQL -tietokanta!

Tarvitsemme tätä:

  • Tietojen lisääminen
  • Tietojen hakeminen ja näyttäminen verkkosivustollamme
  • Pystyy näkemään tarkasti, kuinka monta kierrosta on kulunut nykyisessä shakkipelissä!

Taulukot selitetään:

  • Pelit

    • Tämä seuraa, kuka voitti tietyn pelin ja milloin peli pelattiin
    • Ensisijainen avain tässä on GameID
    • Päivämäärällä on nykyisen päivämäärän vakioarvo
    • Voittaja ja pisteet lisätään myöhemmin, pelin päätyttyä!
  • Pelaajat (Spelers hollanniksi)

    • Nämä lisätään manuaalisesti, mutta ne voidaan lisätä myös RFID -korttijärjestelmän avulla.
    • Kirjoita kortille nimi, lue kortti ja lisää nimi tähän taulukkoon
    • Se seuraa myös kunkin pelaajan voitto / tappio -ennätystä, joka näytetään verkkosivustolla
  • Historia (Historia)

    • Tämä on käännehistoria
    • kun shakkinappula siirretään, se päivitetään täällä
    • Siinä on 3 vierasta avainta, pelaaja, peli ja shakkinappula
    • ReadDate (InleesDatum) on päivämäärä, jolloin anturi luettiin
    • ReadTime on sama kuin ReadDate, mutta sillä on aikaleima
    • LocationID (LocatieID) on koordinaatin nimi, johon se on sijoitettu. esimerkiksi "a3"
  • Shakkipalat (Schaakstukken hollanniksi)

    • Jokaisella shakkinappulalla on tunnus, joukkue, nimi ja tila
    • Joukkue on joko 1 tai 2, musta tai valkoinen;
    • Ainaisen kappaleen nimi olisi "Pawn 1"
    • Tila tarkoittaa, että pala on elossa tai kuollut!

Vaihe 4: Laitteisto

Laitteisto
Laitteisto
Laitteisto
Laitteisto
Laitteisto
Laitteisto

Nyt kun olemme saaneet kaikki oikeat palaset paikoilleen, voimme alkaa luoda jotain!

Jaetaan tämä osa alivaiheisiin, koska se on helpompi selittää:

  • Vaihe 1: Jos haluat porata reiän shakkilaudasi jokaiseen koordinaattiin ensimmäisen kuvan mukaisesti, poraa myös reikä, johon haluat sijoittaa kosketusanturit, RFID -lukijan ja 7 segmentin näytön.

    Älä unohda porata joitakin reikiä levyn sivulle, nämä ovat levyn päällä olevien eri komponenttien johdot. Paljon poraamista, tiedän

  • Vaihe 2: Yritä kytkeä yksi tai kaksi anturia Raspberry Pi -laitteeseen, tarkista, toimivatko ne. Haluat liittää ne analogiseen MCP -lukijaan, kuten edellä vaiheessa 2 (Kaaviot) on selitetty.
  • Vaihe 3: Tämä voi olla hankalaa ja erittäin hermoja tuhoavaa, koska hyppääjän otsikot eivät ole kovin jumissa paikoillaan, saatat haluta teipata ne kaikki taululle joko yksittäin tai useita kerralla. Sinun on varmistettava, että ne pysyvät jumissa shakkilaudalla, muuten et voi lukea antureita onnistuneesti

    KÄRKI! Jos se helpottaa sinua, jotkut liimat voivat todella auttaa pitämään anturit paremmin paikallaan nauhoittaessani, huomasin tämän vaikealla tavalla

Vaihe 5: Ohjelmisto

Ohjelmisto
Ohjelmisto

Kun olet tehnyt laitteiston, jota voit testata, yritämme kirjoittaa sille koodia! Jos haluat katsoa koodiani, mene githubini.

Takaosa Ensin tarvitsemme pari pakettia asennettavaksi, jatkoin ja tein luettelon sinulle:

  • pullo

    Tätä python -koodiasi käytetään

  • PullorasiaIO

    Kommunikoida etu- ja takaosan välillä

  • numpy

    Hyödyllinen valosensorien lukemiseen, toimii matriisin kanssa

  • netifasseja

    Voit tulostaa oman IP -osoitteesi 7 -segmentin näyttöön

  • Pullo-CORS

    Alkuperäisten turvautumisoikeuksien jakaminen mahdollistaa pakettien jakamisen eri toimialueille

Tämän lisäksi olen kirjoittanut pari luokkaa ja voit vapaasti käyttää niitä.

Käyttöliittymä

Verkkosivun koodi löytyy myös github -sivultani!

Käyttöliittymässä käytän Chessboard.js-tiedostoa. Tämä lisää helppokäyttöisen shakkilaudan, jossa on helposti siirrettävät kappaleet!

Kaikki taululla olevat asiat ovat muokattavissa, joten pidä hauskaa! Kun olet ladannut uusimman version, sinun on vedettävä tiedostot projektiin ja linkitettävä ne sivulle, jolla haluat näyttää shakkilaudan!

Sen jälkeen yritetään luoda taulu, ei näytä liian kovalta:

Ensinnäkin html:

Toiseksi JavaScript -tiedostossa:

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

ja siellä sinulla on se, sinun pitäisi pystyä näkemään shakkilauta nyt! Voit vapaasti muokata taulua CSS -tiedostoissa!

Nyt haluamme nähdä joitakin liikkeitä shakkilaudalla, ei liian kovaa. Mutta meidän on mukautettava sitä, jotta siirtokomento lähetetään taustapuolelta. En mene liikaa yksityiskohtiin, mutta haluamme tehdä jotain tällaista:

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

Saamme luettelon taustaohjelmastamme ja laitamme viivan kahden koordinaatin väliin ja käytä sitten board.move-komentoa suorittamaan siirto!

Tämä on selitykseni siitä, mitä tarvitsemme chessboard.js -laajennuksen, mene githubini katsomaan koodia itse

Suositeltava: