Satura rādītājs:

Digitālais šahs - izsekojiet savai šaha spēlei tiešsaistē: 5 soļi
Digitālais šahs - izsekojiet savai šaha spēlei tiešsaistē: 5 soļi

Video: Digitālais šahs - izsekojiet savai šaha spēlei tiešsaistē: 5 soļi

Video: Digitālais šahs - izsekojiet savai šaha spēlei tiešsaistē: 5 soļi
Video: Eiropas baroka šedevri, amerikāņu minimālisms un latvieši. Rīgas festivāls 2021 2024, Novembris
Anonim
Digitālais šahs - izsekojiet savai šaha spēlei tiešsaistē
Digitālais šahs - izsekojiet savai šaha spēlei tiešsaistē

Kopš jaunības esmu spēlējis daudz šaha, un, tā kā tīmeklī ir milzīgs daudzums vietņu, kurās var spēlēt šahu pret datoriem vai pretiniekiem, es nekad neesmu atradis vietni, kurā tiek izsekota jūsu šaha spēle. patiesībā spēlē reālajā dzīvē. Tāpēc ar šo projektu es ceru to realizēt!

Es ceru, ka:

  • Spēj izsekot šaha figūru kustībai
  • Skatiet dažus uzvarētāju sarakstus par iepriekšējām spēlēm.
  • Izsekojiet laiku un spēlējiet ātri kā profesionāla spēle.

Tas ir ļoti sarežģīts projekts, jo, ja tas būtu pabeigts, lasīšanai būtu nepieciešami 64 gaismas sensori un 8 mikroshēmas. Tas jau ir liels uzdevums, un mēs pat neskaitām citus sensorus.

Mana koledža mums sniedza plašu darāmo lietu sarakstu:

  1. Izveidojiet mūsu projekta shēmu
  2. Izveidojiet datu bāzi datu glabāšanai un iegūšanai.
  3. Izstrādājiet vietni, izmantojot Adobe XD
  4. Atkārtoti izveidojiet šo vietni, izmantojot CSS un HTML
  5. Lasiet sensorus ar python
  6. Parādiet sensoru datus vietnē, izmantojot kolbu.

Šajā pamācībā es jūs vadīšu savā ceļā, kā arī visas grūtības un pestīšanas brīžus, ko esmu izgājis pēdējo pāris nedēļu laikā.

1. darbība: izejmateriāli/rīki

Piegādes, materiāli un instrumenti ir pirmais solis uz veiksmīgu projektu!

Rīki:

  • Lodāmurs
  • Alvas lodēšana
  • Knaibles
  • Urbjmašīna
  • Lente

Piegādes:

  • Raspberry Pi ar micro SD karti (pietiek ar 4 GB)
  • Rasberry Pi T kurpnieks
  • Šaha dēlis ar gabaliem
  • 7 segmentu displejs (TM 1637)
  • 2 skārienjutīgie sensori (TTP223B)
  • RFID lasītājs ar kartēm (MFRC522)
  • MCP3008 (atkarībā no tā, cik tālu vēlaties iet, katram MCP varat nolasīt 8 šaha koordinātas)
  • Gaismas atkarīgais pretestības tips 5288 (8 katram jūsu MCP)
  • Galvenes (no vīriešiem uz vīriešiem un no sievietēm uz vīriešiem)

Ja jums ir jāiegādājas viss, paredzamajai pašizmaksai jābūt aptuveni 125 eiro, ieskaitot piegādes izmaksas (tikai piegādēm)!

Visam nepieciešamajam ir pievienots Excel fails ar saitēm un cenām!

2. solis: shēmas un plānošana

Shēmas un plānošana!
Shēmas un plānošana!
Shēmas un plānošana!
Shēmas un plānošana!

Nākamais solis šajā projektā ir izveidot shēmu. Es izveidoju 2: vienu uz maizes dēļa un vienu tīri elektroniski. Mums būs vajadzīgas šīs shēmas, lai viss būtu tīrs un lai mēs nepievienotu nevajadzīgas lietas!

Es izmantoju programmu ar nosaukumu "Fritzing", lai izveidotu šīs shēmas, ja kādu interesē.

Krāsu kodēšana:

  • Sarkans = barošanas avots
  • Zaļš = savienojums
  • Zils = zeme

Raspberry Pi savienojumi:

  • 3V3 => VC līnija uz maizes dēļa, barojot visu
  • 5V => 7 segmentu displeja VCC
  • GND:

    • Zeme uz maizes dēļa
    • 7 segmentu displeja pamatojums
  • GPIO4 => Pulkstenis Izvēlieties MCP3008 tapu
  • GPIO10 => MCP3008 MOSI tapa
  • GPIO9 => MCP3008 MISO tapa
  • GPIO11 => MCP3008 CLK tapa
  • GPIO7 => MFRC522 SDA tapa
  • GPIO19 => Pirmā pieskāriena sensora DIG tapa
  • GPIO26 => Otrā pieskāriena sensora DIG tapa
  • GPIO20 => CLK tapa septiņu segmentu displejā
  • GPIO21 = septītā segmenta displeja DIO tapa

Pāris piezīmes par shēmām:

  • Šī shēma satur tikai 1 MCP, tas nozīmē, ka tikai 8 koordinātas varēs nolasīt pilnībā.
  • Kā mikroshēmas izvēli es izmantošu GPIO tapas. Tā kā ir pieejamas tikai 2 mikroshēmu atlases tapas ar potenciāli 8 MCP.
  • Septiņu segmentu displeju iesaka skolotājs, ir nepieciešami tikai 4 vadi, jo tas darbojas pēc sava protokola.
  • Skārienjutīgo sensoru digitālās tapas rezistori nav pilnībā nepieciešami, taču tie ir ieteicami.

Skaidrojiet komponentus:

  • MCP ar gaismas sensoriem:

    • MCP3008 ir 8 kanālu 10 bitu ADC:

      • MCP3008 nolasīs gaismas sensoru analogo vērtību, šī vērtība ir atkarīga no gaismas daudzuma, kas pašlaik spīd uz sensora.
      • Manā pitona kodā es saņemšu šo analogo vērtību un pārvērtīšu to par 1 vai 0
  • Pieskāriena sensori:

    Darbojas tāpat kā poga, es tam izmantoju klasi ar atzvanīšanas metodi. Vairāk par šo vēlāk

    RFID lasītājs (MFRC 522):

    • Ar instalētu pakotni izmanto īpašu protokolu (SPI).
    • Nav grūti kodēt ar instalētu pakotni
    • Izlasa tagu un atgriež taga vērtību
    • Jūs varat arī ierakstīt vērtību atzīmei, tāpēc tā vietā, lai atgrieztu heksadecimālo vērtību, tā atgriež nosaukumu, piemēram

    7 segments (TM1637)

    • Izmanto arī instalētu pakotni ērtai kodēšanai
    • Izveidojiet mainīgo ar veselu skaitli, pēc tam sadaliet to 4 rakstzīmēs un parādiet šīs rakstzīmes

3. darbība: SQL datu bāze

SQL datu bāze
SQL datu bāze

Trešais solis ceļā uz šo projektu ir 3NF normalizētas SQL datu bāzes izveide!

Tas mums būs vajadzīgs:

  • Datu ievietošana
  • Datu iegūšana un parādīšana mūsu vietnē
  • Spēja precīzi redzēt, cik pagriezienu ir gājis pašreizējā šaha spēlē!

Tabulās ir paskaidrots:

  • Spēles

    • Tas izseko, kurš uzvarēja noteiktā spēlē un kad spēle tika spēlēta
    • Galvenā atslēga šeit ir GameID
    • Datumam ir pašreizējā datuma standarta vērtība
    • Uzvarētājs un rezultāts tiks pievienots vēlāk, pēc spēles beigām!
  • Spēlētāji (Spelers holandiešu valodā)

    • Tos ievieto manuāli, bet var ievietot arī, izmantojot RFID karšu sistēmu.
    • Ierakstiet kartē nosaukumu, pēc tam izlasiet kartīti un ievietojiet vārdu šajā tabulā
    • Tas arī izseko katra spēlētāja uzvaru / zaudējumu rekordu, kas tiks parādīts vietnē
  • Historiek (vēsture)

    • Šī ir pagriezienu vēsture
    • kad šaha figūra tiek pārvietota, tā tiks atjaunināta šeit
    • Tam ir 3 ārējās atslēgas, spēlētājs, spēle un šaha figūra
    • ReadDate (InleesDatum) ir datums, kad sensors tika nolasīts
    • ReadTime ir tāds pats kā ReadDate, bet ar laika zīmogu
    • LocationID (LocatieID) ir tās koordinātas nosaukums, kurā tā atrodas. piemēram, "a3"
  • Šaha gabali (Schaakstukken holandiešu valodā)

    • Katrai šaha figūrai ir ID, komanda, vārds un statuss
    • Komanda ir vai nu 1 vai 2, melna vai balta;
    • Jebkura gabala nosaukums būtu, piemēram, "Lombards 1"
    • Statuss nozīmē, ka gabals ir dzīvs vai miris!

4. solis: aparatūra

Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra
Aparatūra

Tagad, kad esam izveidojuši visus pareizos gabalus, varam sākt kaut ko radīt!

Sadalīsim šo daļu apakšposmos, jo būs vieglāk izskaidrot:

  • 1. solis: Jūs vēlaties izurbt caurumu katrā šaha dēļa koordinātā, kā parādīts pirmajā attēlā, kā arī urbt caurumu, kurā vēlaties novietot skārienjūtīgos sensorus, RFID lasītāju un 7 segmentu displeju.

    Neaizmirstiet urbt dažus caurumus dēļa sānos, tie ir paredzēti dažādu komponentu vadiem tāfeles augšpusē. Daudz urbšanas, es zinu

  • 2. darbība. Mēģiniet pieslēgt Raspberry Pi vienu vai divus sensorus, pārbaudiet, vai tie darbojas. Jūs vēlaties tos savienot ar MCP analogo lasītāju, kā paskaidrots iepriekš 2. solī (Shēmas).
  • 3. solis. Tas varētu būt sarežģīti un ļoti nervus sagraujoši, jo džemperu galvenes nav ļoti iestrēgušas vietā, iespējams, vēlēsities tos visus piestiprināt pie tāfeles, atsevišķi vai vairākus vienlaikus. Jums jāpārliecinās, ka tie paliek iestrēdzuši šaha galdā, pretējā gadījumā jūs nevarēsit sekmīgi nolasīt sensorus

    PADOMS! Ja tas jums atvieglo, dažas līmes faktiski varētu palīdzēt noturēt sensorus vairāk vietā, tos piestiprinot, es to atklāju grūtā veidā

5. solis: programmatūra

Programmatūra
Programmatūra

Kad esat izveidojis aparatūru, kuru varat pārbaudīt, mēģināsim uzrakstīt tai kādu kodu! Ja vēlaties apskatīt manu kodu, lūdzu, dodieties uz manu github.

Vispirms mums būs jāinstalē pāris pakotnes, es turpināju un izveidoju jums sarakstu:

  • kolba

    Tas būs tas, uz kā darbosies jūsu python kods

  • Kolbas ligzdaIO

    Lai sazinātos starp priekšgalu un aizmuguri

  • dūšīgs

    Noderīga gaismas sensoru lasīšanai, darbojas ar matricām

  • netifaces

    Lai izdrukātu savu IP adresi 7 segmentu displejā

  • Kolbas-CORS

    Vairāku izcelsmes regresa koplietošana ļauj paketes koplietot dažādos domēnos

Papildus tam esmu uzrakstījis pāris nodarbības, un jūs varat tās brīvi izmantot.

Priekšpuse

Vietnes kods ir pieejams arī manā github lapā!

Priekšpusei es izmantošu Chessboard.js. Tas ievieto viegli lietojamu šaha galdu ar viegli pārvietojamiem gabaliem!

Viss uz tāfeles ir pielāgojams, tāpēc izklaidējieties! Pēc jaunākās versijas lejupielādes jums vajadzēs ievilkt failus savā projektā un saistīt tos ar lapu, kurā vēlaties parādīt šaha galdu!

Pēc tam mēģināsim izveidot dēli, neizskatās pārāk grūti:

Pirmkārt, savā html:

Otrkārt, savā javascript failā:

dēlis1 = ChessBoard ('board1', 'start');

un tur jums tas ir, jums tagad vajadzētu redzēt šaha galdu! Jūtieties brīvi pielāgot dēli CSS failos!

Tagad mēs vēlamies redzēt dažus gājienus uz šaha dēļa, ne pārāk smagi. Bet mums tas ir jāpielāgo, lai pārvietošanas komanda tiktu nosūtīta no aizmugures. Es neiedziļināšos pārāk sīkumos, bet mēs vēlamies darīt kaut ko līdzīgu:

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

Mēs saņemam sarakstu no mūsu aizmugures programmas un ievietojam svītru starp abām koordinātām, pēc tam izmantojiet komandu board.move, lai izpildītu pārvietošanu!

Tas ir mans skaidrojums par to, kas mums nepieciešams no spraudņa chessboard.js, dodieties uz manu github, lai pats apskatītu kodu

Ieteicams: