Kazalo:

Digitalni šah - Sledite svoji šahovski igri na spletu: 5 korakov
Digitalni šah - Sledite svoji šahovski igri na spletu: 5 korakov

Video: Digitalni šah - Sledite svoji šahovski igri na spletu: 5 korakov

Video: Digitalni šah - Sledite svoji šahovski igri na spletu: 5 korakov
Video: Дэниел Шмахтенбергер: Уничтожат ли нас технологии? 2024, November
Anonim
Digitalni šah - Sledite svoji šahovski igri na spletu
Digitalni šah - Sledite svoji šahovski igri na spletu

Že od mladih nog igram veliko šaha in ker ima splet ogromno spletnih mest, na katerih lahko igrate šah proti računalnikom ali živim nasprotnikom, nikoli nisem našel spletnega mesta, ki bi spremljalo vašo šahovsko igro. dejansko igra v resničnem življenju. Zato upam, da bom s tem projektom to uresničil!

Upam, da:

  • Znati slediti gibanju šahovskih figur
  • Oglejte si lestvice najboljših o preteklih igrah.
  • Spremljajte čas in igrajte hitro kot profesionalna igra.

To je zelo kompleksen projekt, saj bi za njegovo branje potreboval 64 svetlobnih senzorjev in 8 čipov, če bi bil dokončan. Kar je že velika naloga in sploh ne štejemo nobenega drugega senzorja.

Moja fakulteta nam je dala velik seznam stvari za početi:

  1. Ustvarite shemo za naš projekt
  2. Ustvarite bazo podatkov za shranjevanje in pridobivanje podatkov.
  3. Oblikujte spletno mesto s programom Adobe XD
  4. Ponovno ustvarite to spletno mesto s CSS in HTML
  5. Preberite senzorje s pythonom
  6. Podatke senzorja na spletnem mestu pokažite s pomočjo bučke.

V tem navodilu vas bom vodil na moji poti in vse težave in trenutke odrešenja, ki sem jih preživel v zadnjih nekaj tednih.

1. korak: Zaloge/orodja

Zaloge, materiali in orodja so prvi korak do uspešnega projekta!

Orodja:

  • Spajkalnik
  • Spajkalna pločevina
  • Klešče
  • Vrtalni stroj
  • Trak

Zaloge:

  • Raspberry Pi z mikro SD kartico (4 GB bi moralo biti dovolj)
  • T-čevljar Rasberry Pi
  • Šahovska deska s kosi
  • 7 -segmentni zaslon (TM 1637)
  • 2 senzorja na dotik (TTP223B)
  • Bralnik RFID s karticami (MFRC522)
  • MCP3008 (odvisno od tega, kako daleč želite iti, za vsak MCP lahko preberete 8 šahovskih koordinat)
  • Svetlobno odvisen upor tipa 5288 (8 za vsak MCP, ki ga imate)
  • Glave (moški do moški in ženske do moški)

Če morate kupiti vse, bi morala biti ocenjena cena približno 125 evrov, vključno s stroški pošiljanja (samo zaloge)!

Priložena je datoteka Excel s povezavami in cenami za vse, kar potrebujete!

2. korak: Sheme in načrtovanje

Sheme in načrtovanje!
Sheme in načrtovanje!
Sheme in načrtovanje!
Sheme in načrtovanje!

Naslednji korak v tem projektu je izdelava sheme. Naredil sem 2: enega na krovu in enega čisto elektronskega. Te sheme bomo potrebovali, da bo vse čisto in da ne bomo povezali nepotrebnih stvari!

Če koga zanima, sem uporabil program, imenovan "Fritzing".

Barvno kodiranje:

  • Rdeča = napajanje
  • Zelena = povezava
  • Modra = zemlja

Povezave Raspberry Pi:

  • 3V3 => VC linija na plošči, ki napaja vse
  • 5V => VCC 7 -segmentnega zaslona
  • GND:

    • Ozemljeno na plošči
    • Osnova 7 -segmentnega zaslona
  • GPIO4 => Ura Izberite pin pin MCP3008
  • GPIO10 => MOSI pin MCP3008
  • GPIO9 => MISO pin MCP3008
  • GPIO11 => CLK pin MCP3008
  • GPIO7 => SDA pin MFRC522
  • GPIO19 => DIG pin prvega senzorja na dotik
  • GPIO26 => DIG pin drugega senzorja na dotik
  • GPIO20 => CLK pin sedem segmentnega zaslona
  • GPIO21 = DIO zatič zaslona sedem segmentov

Nekaj opomb o shemah:

  • Ta shema vsebuje samo 1 MCP, kar pomeni, da bo mogoče v celoti prebrati le 8 koordinat.
  • Za izbiro čipa bom uporabljal zatiče GPIO. Ker sta na voljo samo 2 zatiča za izbiro čipov s potencialno 8 MCP -ji.
  • 7 -segmentni zaslon je eden, ki ga predlaga učitelj, le 4 žice so potrebne, saj deluje po lastnem protokolu.
  • Upori na digitalnem zatiču senzorjev na dotik niso v celoti potrebni, vendar so priporočljivi.

Razlaga komponent:

  • MCP s svetlobnimi senzorji:

    • MCP3008 je 8 -kanalni 10 -bitni ADC:

      • MCP3008 bo prebral analogno vrednost svetlobnih senzorjev, ta vrednost je odvisna od količine svetlobe, ki trenutno sije na senzor.
      • V svoji kodi python bom prejel to analogno vrednost in jo pretvoril v 1 ali 0
  • Senzorji na dotik:

    Deluje tako kot gumb, za to uporabljam razred z metodo povratnega klica. Več o tem kasneje

    Bralnik RFID (MFRC 522):

    • Uporablja poseben protokol (SPI) z nameščenim paketom.
    • Kodiranje z nameščenim paketom ni težko
    • Prebere oznako in vrne vrednost oznake
    • V oznako lahko napišete tudi vrednost, zato namesto vrnitve šestnajstiške vrednosti vrne na primer ime

    7 segment (TM1637)

    • Za enostavno kodiranje uporablja tudi nameščen paket
    • Ustvarite spremenljivko s celo število, nato jo razdelite na 4 znake in pokažite te znake

3. korak: zbirka podatkov SQL

Baza podatkov SQL
Baza podatkov SQL

Tretji korak k temu projektu je ustvarjanje 3NF normalizirane baze podatkov SQL!

To bomo potrebovali za:

  • Vstavljanje podatkov
  • Pridobivanje podatkov in njihovo prikazovanje na naši spletni strani
  • Lahko natančno vidite, koliko obratov je preteklo v trenutni šahovski igri!

Razložene tabele:

  • Igre

    • Ta sledi, kdo je zmagal v določeni igri in kdaj je bila igra odigrana
    • Primarni ključ tukaj je GameID
    • Datum ima standardno vrednost trenutnega datuma
    • Zmagovalec in rezultat bosta dodana kasneje, po končani igri!
  • Igralci (igralci v nizozemščini)

    • Te vstavite ročno, lahko pa jih vstavite tudi s sistemom kartic RFID.
    • Na kartico napišite ime, nato preberite kartico in vnesite ime v to tabelo
    • Prav tako sledi zapisu zmag / porazov vsakega igralca, ki bo prikazan na spletnem mestu
  • Historiek (zgodovina)

    • To je zgodovina obratov
    • ko se šahovska figura premakne, bo tukaj posodobljena
    • Ima 3 tuje ključe, igralca, igro in šahovnico
    • datum branja (InleesDatum) je datum, ko je senzor prebran
    • ReadTime je enak ReadDate, vendar s časovno oznako
    • LocationID (LocatieID) je ime koordinate, na kateri je nameščena. na primer "a3"
  • Šahovske figure (Schaakstukken v nizozemščini)

    • Vsaka šahovska figura ima osebno izkaznico, ekipo, ime in status
    • Ekipa je 1 ali 2, črna ali bela;
    • Ime ivernega kosa bi bilo npr. "Pawn 1"
    • Status pomeni, da je kos živ ali mrtev!

4. korak: Strojna oprema

Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema
Strojna oprema

Zdaj, ko imamo vse pravilne kose, lahko začnemo nekaj ustvarjati!

Ta del razdelimo na pod korake, saj bo lažje razložiti:

  • 1. korak: V vsako koordinato šahovnice želite izvrtati luknjo, kot je prikazano na prvi sliki, izvrtajte tudi luknjo, kamor želite postaviti senzorje na dotik, čitalnik RFID in 7 -segmentni zaslon.

    Ne pozabite izvrtati nekaj lukenj na strani plošče, to je za žice različnih komponent na vrhu plošče. Veliko vrtanja, vem

  • 2. korak: Poskusite priključiti enega ali dva senzorja na Raspberry Pi, preverite, ali delujejo. Želite jih povezati z analognim bralnikom MCP, kot je razloženo prej v 2. koraku (Sheme).
  • 3. korak: To je lahko težavno in zelo uničuje živce, saj glave skakalcev niso zelo zataknjene, zato jih boste morda želeli pritrditi na ploščo, posamično ali več hkrati. Poskrbeti morate, da ostanejo obtičali na šahovnici, sicer senzorjev ne boste mogli uspešno prebrati

    NAMIG! Če vam olajša, bi lahko nekaj lepila dejansko pomagalo, da so senzorji bolj na mestu, medtem ko jih lepil, to sem odkril na težji način

5. korak: Programska oprema

Programska oprema
Programska oprema

Ko naredite strojno opremo, ki jo lahko preizkusite, poskusimo napisati kodo zanjo! Če si želite ogledati mojo kodo, pojdite na moj github.

Najprej bomo morali namestiti nekaj paketov, jaz pa sem naredil seznam za vas:

  • bučko

    Na tem bo delovala vaša koda python

  • Vtičnica za bučkoIO

    Za komunikacijo med sprednjim in zadnjim delom

  • numpy

    Uporabno za branje svetlobnih senzorjev, deluje z matrikami

  • netifaces

    Če želite natisniti svoj lastni naslov IP na 7 -segmentnem zaslonu

  • Bučka-CORS

    Skupna raba medsebojnega izvora omogoča izmenjavo paketov na različnih domenah

Poleg tega sem napisal nekaj razredov in jih lahko prosto uporabljate.

Sprednji del

Koda spletnega mesta je na voljo tudi na moji strani github!

Za sprednji del bom uporabljal Chessboard.js. Ta vstavi šahovsko tablo, ki je enostavna za uporabo, z enostavnimi premiki!

Vse na deski je prilagodljivo, zato se zabavajte! Ko prenesete najnovejšo različico, boste morali datoteke povleči v svoj projekt in jih povezati s stranjo, na kateri želite prikazati šahovnico!

Nato poskusimo ustvariti tablo, ki ne izgleda preveč težko:

Najprej v svojem html:

Drugič, v datoteki javascript:

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

in tukaj je, zdaj bi morali videti šahovnico! Prilagodite ploščo v datotekah CSS!

Zdaj želimo videti nekaj premikov na šahovnici, ne preveč težkih. Moramo pa ga prilagoditi, da bo zaledni ukaz poslal ukaz premik. Ne bom se preveč spuščal v podrobnosti, vendar želimo narediti nekaj takega:

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

Iz našega zalednega programa prejmemo seznam in med dvema koordinatama postavimo pomišljaj, nato pa z ukazom board.move izvedemo premik!

To je moja razlaga, kaj potrebujemo od vtičnika chessboard.js, pojdite na moj github, da si sami ogledate kodo

Priporočena: