Tartalomjegyzék:

Digitális sakk - Kövesse sakkjátékát online: 5 lépés
Digitális sakk - Kövesse sakkjátékát online: 5 lépés

Videó: Digitális sakk - Kövesse sakkjátékát online: 5 lépés

Videó: Digitális sakk - Kövesse sakkjátékát online: 5 lépés
Videó: Интернет-технологии - Информатика для руководителей бизнеса 2016 2024, November
Anonim
Digitális sakk - Kövesse nyomon sakkjátékát online
Digitális sakk - Kövesse nyomon sakkjátékát online

Fiatal korom óta rengeteget sakkozom, és mivel az interneten rengeteg olyan webhely van, ahol sakkozni lehet számítógépek vagy élő ellenfelek ellen, soha nem találtam olyan weboldalt, amely nyomon követné sakkjátékát. valójában a való életben játszik. Úgyhogy ezzel a projekttel ezt remélem megvalósítani!

Remélem, hogy:

  • Legyen képes követni a sakkfigurák mozgását
  • Tekintsen meg ranglistákat a korábbi játékokról.
  • Kövesse nyomon az időt, és játsszon gyorsan, mint egy profi játék.

Ez egy nagyon összetett projekt, mivel befejezése esetén 64 fényérzékelőre és 8 chipre van szükség az olvasáshoz. Ami már nagy feladat, és nem is számoljuk a többi érzékelőt.

Az egyetem nagy listát adott nekünk a tennivalókról:

  1. Készítsen vázlatot a projektünkhöz
  2. Hozzon létre egy adatbázist az adatok tárolására és megszerzésére.
  3. Weboldal tervezése Adobe XD használatával
  4. Hozza létre újra ezt a webhelyet CSS és HTML segítségével
  5. Olvassa le az érzékelőket python segítségével
  6. Mutassa be az érzékelő adatait a webhelyen lombik segítségével.

Ebben a tanulságos útmutatóban eligazítalak az utamon, és az üdvösség minden nehézségén és pillanatán keresztülmentem az elmúlt pár hétben.

1. lépés: Kellékek/eszközök

A kellékek, anyagok és eszközök az első lépés a sikeres projekthez!

Eszközök:

  • Forrasztópáka
  • Ón forrasztása
  • Fogó
  • Fúrógép
  • Szalag

Kellékek:

  • Raspberry Pi micro SD kártyával (4 GB elég lehet)
  • Rasberry Pi T-cobbler
  • Sakktábla darabokkal
  • 7 szegmenses kijelző (TM 1637)
  • 2 érintőérzékelő (TTP223B)
  • RFID olvasó kártyákkal (MFRC522)
  • MCP3008 (Attól függően, hogy milyen messzire szeretne menni, minden MCP -hez 8 sakk -koordinátát olvashat ki)
  • Fényfüggő ellenállás típus 5288 (8 minden MCP -hez)
  • Fejlécek (férfi -férfi és nő -férfi)

Ha mindent meg kell vásárolnia, akkor a becsült önköltség 125 euró körül legyen, beleértve a szállítási költségeket (csak kellékek)!

Van egy Excel fájl csatolva, linkekkel és árakkal mindenhez, amire szüksége van!

2. lépés: Sémák és tervezés

Vázlatok és tervezés!
Vázlatok és tervezés!
Vázlatok és tervezés!
Vázlatok és tervezés!

A projekt következő lépése egy vázlat létrehozása. Készítettem 2: egyet kenyérsütőn, egyet pedig tisztán elektronikusan. Szükségünk lesz erre a sémára, hogy mindent tisztán tartsunk, és ügyeljünk arra, hogy ne csatlakoztassunk felesleges dolgokat!

A "Fritzing" nevű programmal készítettem ezeket a rajzokat, ha valakit érdekel.

Színkódolás:

  • Piros = tápegység
  • Zöld = kapcsolat
  • Kék = föld

Raspberry Pi csatlakozók:

  • 3V3 => VC vonal a kenyértáblán, mindent táplálva
  • 5V => 7 szegmenses kijelző VCC
  • GND:

    • Földelni a kenyértáblán
    • A 7 szegmenses kijelző alapja
  • GPIO4 => Óraválasztó tű az MCP3008 -ban
  • GPIO10 => Az MCP3008 MOSI csapja
  • GPIO9 => Az MCP3008 MISO csapja
  • GPIO11 => Az MCP3008 CLK csapja
  • GPIO7 => Az MFRC522 SDA csapja
  • GPIO19 => Az első érintésérzékelő DIG csapja
  • GPIO26 => A második érintésérzékelő DIG csapja
  • GPIO20 => A hét szegmenses kijelző CLK csapja
  • GPIO21 = A hetedik szegmens kijelzőjének DIO csapja

Pár megjegyzés a rajzokhoz:

  • Ez a vázlat csak 1 MCP -t tartalmaz, ami azt jelenti, hogy csak 8 koordináta olvasható le teljesen.
  • Chip Select -ként GPIO csapokat fogok használni. Mivel csak 2 Chip kiválasztó csap áll rendelkezésre potenciálisan 8 MCP -vel.
  • A 7 szegmenses kijelzőt egy tanár javasolta, mindössze 4 vezeték szükséges, mivel saját protokollján működik.
  • Az érintőérzékelők digitális tüskéjén lévő ellenállásokra nincs szükség teljesen, de tanácsos.

Az összetevők magyarázata:

  • MCP fényérzékelőkkel:

    • Az MCP3008 egy 8 csatornás 10 bites ADC:

      • az MCP3008 leolvassa a fényérzékelők analóg értékét, ez az érték attól függ, hogy mennyi fény van az érzékelőn.
      • A python kódomban megkapom az analóg értéket, és 1 -re vagy 0 -ra konvertálom
  • Érintésérzékelők:

    Pont úgy működik, mint egy gomb, ehhez egy osztályt használok visszahívási módszerrel. Erről bővebben később

    RFID olvasó (MFRC 522):

    • Speciális protokollt (SPI) használ telepített csomaggal.
    • Telepített csomaggal nem nehéz kódolni
    • Olvassa el a címkét, és visszaadja a címke értékét
    • A címkékhez is írhat értéket, így a hexadecimális érték visszaadása helyett például egy nevet ad vissza

    7 szegmens (TM1637)

    • Telepített csomagot is használ az egyszerű kódoláshoz
    • Hozzon létre egy egész értékű változót, majd ossza fel 4 karakterre, és jelenítse meg ezeket a karaktereket

3. lépés: SQL adatbázis

SQL adatbázis
SQL adatbázis

A harmadik lépés a projekt felé egy 3NF normalizált SQL adatbázis létrehozása!

Erre lesz szükségünk:

  • Adatok beszúrása
  • Adatok lekérése és megjelenítése weboldalunkon
  • Pontosan látni, hogy hány fordulat ment a sakk jelenlegi játékában!

A táblázatok magyarázata:

  • Játékok

    • Ez nyomon követi, hogy ki nyert bizonyos játékot és mikor játszották
    • Az elsődleges kulcs itt a GameID
    • A Dátum standard értéke az aktuális dátum
    • A győztes és a pontszám később, a játék befejezése után kerül hozzáadásra!
  • Játékosok (Spelers hollandul)

    • Ezeket kézzel kell behelyezni, de behelyezhetők az RFID kártyarendszerrel is.
    • Írjon egy nevet a kártyájára, majd olvassa el a kártyát, és illessze be a táblázatba
    • Ezenkívül nyomon követi az egyes játékosok győzelem / vereség rekordját, amelyet a webhelyen kell megjeleníteni
  • Historiek (történelem)

    • Ez a fordulat története
    • amikor egy sakkfigurát áthelyeznek, itt frissítik
    • 3 idegen kulccsal, játékossal, játékkal és sakkfigurával rendelkezik
    • a ReadDate (InleesDatum) az a dátum, amikor az érzékelőt leolvastuk
    • A ReadTime ugyanaz, mint a ReadDate, de időbélyeggel
    • A LocationID (LocatieID) annak a koordinátának a neve, amelyen elhelyezkedik. például "a3"
  • Sakkfigurák (Schaakstukken hollandul)

    • Minden sakkfigurának van azonosítója, csapata, neve és állapota
    • A csapat vagy 1 vagy 2, fekete vagy fehér;
    • Minden darab neve "Pawn 1" lenne
    • A státusz azt jelenti, hogy a darab él vagy halott!

4. lépés: Hardver

Hardver
Hardver
Hardver
Hardver
Hardver
Hardver

Most, hogy a megfelelő darabok a helyükön vannak, elkezdhetünk valamit létrehozni!

Osszuk ezt a részt allépésekre, mert könnyebb lesz elmagyarázni:

  • 1. lépés: Ha lyukat szeretne fúrni a sakktábla minden koordinátájába, amint az az első képen látható, fúrjon lyukat is az érintőérzékelők, az RFID -olvasó és a 7 szegmenses kijelző elhelyezésére.

    Ne felejtsen el lyukakat fúrni a tábla oldalán, ezek a tábla tetején lévő különböző alkatrészek vezetékeihez tartoznak. Sok fúrás, tudom

  • 2. lépés: Próbáljon egy vagy két érzékelőt a Raspberry Pi -hez csatlakoztatni, ellenőrizze, hogy működnek -e. Ezeket az MCP analóg olvasóhoz szeretné csatlakoztatni, amint azt a 2. lépésben (A kapcsolási rajzok) korábban ismertettük.
  • 3. lépés: Ez trükkös és nagyon idegőrlő lehet, mivel az áthidaló fejlécek nem nagyon ragadtak a helyükön, érdemes lehet mindegyiket a táblához ragasztani, akár egyenként, akár egyszerre több alkalommal. Gondoskodnia kell arról, hogy megragadjanak a sakktáblán, különben nem tudja sikeresen leolvasni az érzékelőket

    TIPP! Ha ez megkönnyíti az Ön dolgát, néhány ragasztó valóban segíthet abban, hogy az érzékelőket jobban a helyükön tartsák, miközben rögzítik őket, ezt a nehéz úton fedeztem fel

5. lépés: Szoftver

Szoftver
Szoftver

Miután elkészítette a tesztelhető hardvert, próbáljunk meg néhány kódot írni hozzá! Ha meg akarja nézni a kódomat, menjen a githubomhoz.

Először néhány csomagot kell telepítenünk, és elkészítettem egy listát az Ön számára:

  • lombik

    Ezen fog futni a python kódod

  • Lombik-foglalatIO

    Kommunikáció a front-end és a back-end között

  • szar

    Hasznos a fényérzékelők olvasásához, mátrixokkal működik

  • netifacusok

    Saját IP -cím nyomtatása a 7 szegmenses kijelzőn

  • Lombik-CORS

    Keresztirányú jogorvoslat, lehetővé teszi a csomagok megosztását különböző területeken

Ezenkívül írtam pár órát, és szabadon használhatja őket.

Előlap

A weboldal kódja elérhető a github oldalamon is!

A kezelőfelületen a Chessboard.js-t fogom használni. Ez egy könnyen használható sakktáblát illeszt be könnyen mozgatható darabokkal!

A táblán minden testre szabható, így jó szórakozást! Miután letöltötte a legújabb verziót, át kell húznia a fájlokat a projektbe, és össze kell kapcsolnia azokat az oldallal, ahol sakktáblát szeretne megjeleníteni!

Ezt követően próbáljuk meg létrehozni a táblát, nem néz ki túl keményen:

Először is, a html -ben:

Másodszor, a javascript fájlban:

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

és ott van, akkor látnia kell egy sakktáblát! Nyugodtan testreszabhatja a táblát a CSS fájlokban!

Most látni akarunk néhány lépést a sakktáblán, nem túl keményen. De testreszabnunk kell, hogy a mozgatási parancsot a háttérrendszer küldje el. Nem részletezem túl sokat, de valami ilyesmit szeretnénk csinálni:

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

Kapunk egy listát a háttérprogramunktól, és kötőjelet teszünk a két koordináta közé, majd a board.move paranccsal hajtjuk végre a lépést!

Ez a magyarázatom arra, hogy mire van szükségünk a chessboard.js beépülő modulra, menjen a githubomhoz, és nézze meg saját maga a kódot

Ajánlott: