Sadržaj:

Digitalni šah - Pratite svoju šahovsku igru na mreži: 5 koraka
Digitalni šah - Pratite svoju šahovsku igru na mreži: 5 koraka

Video: Digitalni šah - Pratite svoju šahovsku igru na mreži: 5 koraka

Video: Digitalni šah - Pratite svoju šahovsku igru na mreži: 5 koraka
Video: PLAYSTATION - ТЕЛЕФОН! 2024, Novembar
Anonim
Digitalni šah - Pratite svoju šahovsku igru na mreži
Digitalni šah - Pratite svoju šahovsku igru na mreži

Igrao sam mnogo šaha od mladosti, a budući da web ima ogromnu količinu web stranica na kojima možete igrati šah protiv računara ili živih protivnika, nikada nisam pronašao web stranicu koja prati vašu šahovsku partiju zapravo igra u stvarnom životu. Stoga se ovim projektom nadam da ću to realizirati!

Nadam se da ću:

  • Moći pratiti kretanje šahovskih figura
  • Pogledajte neke tabele s rezultatima o prošlim igrama.
  • Pratite vrijeme i igrajte brzo poput profesionalne igre.

To je vrlo složen projekt jer će, ako se dovrši, zahtijevati 64 svjetlosna senzora i 8 čipova za čitanje. Što je već veliki zadatak i ne računamo čak niti jedan drugi senzor.

Moj fakultet dao nam je veliku listu stvari koje trebamo učiniti:

  1. Napravite shemu za naš projekt
  2. Napravite bazu podataka za skladištenje i dobivanje podataka.
  3. Dizajnirajte web stranicu koristeći Adobe XD
  4. Ponovo kreirajte ovu web stranicu s CSS -om i HTML -om
  5. Čitajte senzore s pythonom
  6. Prikažite podatke senzora na web stranici pomoću tikvice.

U ovom uputstvu vodit ću vas na svom putovanju i svim nevoljama i trenucima spasenja kroz koje sam prošao ovih posljednjih nekoliko sedmica.

Korak 1: Potrošni materijal/alati

Potrošni materijal, materijali i alati prvi su korak do uspješnog projekta!

Alati:

  • Lemilica
  • Lemni lim
  • Kliješta
  • Bušilica
  • Tape

Potrošni materijal:

  • Raspberry Pi sa mikro SD karticom (4 GB bi trebalo biti dovoljno)
  • Rasberry Pi T-obućar
  • Šahovska ploča sa figurama
  • 7 -segmentni ekran (TM 1637)
  • 2 senzora za dodir (TTP223B)
  • RFID čitač sa karticama (MFRC522)
  • MCP3008 (Ovisno o tome koliko daleko želite ići, za svaki MCP možete pročitati 8 šahovskih koordinata)
  • Otpornik ovisan o svjetlu 5288 (8 za svaki MCP koji imate)
  • Zaglavlja (muški na muški i ženski na muški)

Ako trebate kupiti sve, procijenjena cijena bi trebala biti oko 125 eura, uključujući troškove dostave (samo potrošni materijal)!

U prilogu je Excel datoteka s vezama i cijenama na sve što vam treba!

Korak 2: Sheme i planiranje

Sheme i planiranje!
Sheme i planiranje!
Sheme i planiranje!
Sheme i planiranje!

Sljedeći korak u ovom projektu je stvaranje sheme. Napravio sam 2: jedan na ploči i jedan čisto elektronički. Ove sheme će nam trebati da sve bude čisto i da ne povežemo nepotrebne stvari!

Koristio sam program pod nazivom "Fritzing" za kreiranje ovih shema ako nekoga zanima.

Kodiranje u boji:

  • Crveno = napajanje
  • Zelena = veza
  • Plava = zemlja

Raspberry Pi veze:

  • 3V3 => VC linija na matičnoj ploči, napaja sve
  • 5V => VCC 7 -segmentnog prikaza
  • GND:

    • Uzemljen na ploči
    • U osnovi 7 -segmentnog ekrana
  • GPIO4 => Sat Odaberite pin za MCP3008
  • GPIO10 => MOSI pin MCP3008
  • GPIO9 => MISO pin MCP3008
  • GPIO11 => CLK pin MCP3008
  • GPIO7 => SDA pin MFRC522
  • GPIO19 => DIG pin prvog senzora dodira
  • GPIO26 => DIG pin drugog senzora dodira
  • GPIO20 => CLK pin sedmosegmentnog ekrana
  • GPIO21 = DIO pin ekrana sa sedam segmenata

Nekoliko napomena o shemama:

  • Ova shema sadrži samo 1 MCP, što znači da će se samo 8 koordinata moći čitati u potpunosti.
  • Koristit ću GPIO pinove kao svoj Chip Select. Budući da su dostupna samo 2 čipa za odabir čipa s potencijalno 8 MCP -ova.
  • Zaslon od 7 segmenata je jedan koji je predložio nastavnik, potrebne su samo 4 žice jer radi po vlastitom protokolu.
  • Otpornici na digitalnom pinu senzora dodira nisu u potpunosti potrebni, ali se savjetuju.

Objašnjavajući komponente:

  • MCP sa svjetlosnim senzorima:

    • MCP3008 je 8 -kanalni 10 -bitni ADC:

      • MCP3008 će očitati analognu vrijednost svjetlosnih senzora, ova vrijednost ovisi o količini svjetlosti koja trenutno sijeva na senzoru.
      • U svom python kodu primit ću tu analognu vrijednost i pretvoriti je u 1 ili 0
  • Senzori dodira:

    Radi kao gumb, za ovo koristim klasu s metodom povratnog poziva. O ovome kasnije

    RFID čitač (MFRC 522):

    • Koristi određeni protokol (SPI) s instaliranim paketom.
    • Nije teško kodirati s instaliranim paketom
    • Čita oznaku i vraća vrijednost oznake
    • Također možete unijeti vrijednost u oznaku, pa umjesto da vrati heksadecimalnu vrijednost, ona vraća ime, na primjer

    7 segment (TM1637)

    • Također koristi instalirani paket za jednostavno kodiranje
    • Napravite varijablu s cijelom vrijednosti, a zatim je podijelite na 4 znaka i pokažite te znakove

Korak 3: SQL baza podataka

SQL baza podataka
SQL baza podataka

Treći korak prema ovom projektu je stvaranje 3NF normalizirane SQL baze podataka!

Ovo će nam trebati za:

  • Umetanje podataka
  • Dobivanje podataka i njihovo prikazivanje na našoj web stranici
  • Mogućnost vidjeti koliko je zavoja prošlo u trenutnoj igri šaha!

Objašnjene tabele:

  • Igre

    • Ovo prati ko je pobijedio u određenoj igri i kada je igra odigrana
    • Primarni ključ ovdje je GameID
    • Datum ima standardnu vrijednost tekućeg datuma
    • Pobjednik i rezultat bit će dodani kasnije, po završetku igre!
  • Igrači (igrači na holandskom)

    • Oni se ubacuju ručno, ali se mogu umetnuti i pomoću sistema RFID kartica.
    • Napišite ime na svoju karticu, zatim pročitajte karticu i umetnite ime u ovu tabelu
    • On također prati rekord pobjeda / poraza svakog igrača koji će biti prikazan na web stranici
  • Historiek (Historija)

    • Ovo je istorija skretanja
    • kada se šahovska figura premjesti, ona će se ažurirati ovdje
    • Ima 3 strana ključa, igrač, igru i šahovsku figuru
    • ReadDate (InleesDatum) je datum kada je senzor očitan
    • ReadTime je isto što i ReadDate, ali sa vremenskom oznakom
    • LocationID (LocatieID) je naziv koordinate na kojoj se nalazi. na primjer "a3"
  • Šahovske figure (Schaakstukken na holandskom)

    • Svaka šahovska figura ima ličnu kartu, tim, ime i status
    • Ekipa je 1 ili 2, crna ili bijela;
    • Naziv bilo kojeg komada bio bi tj. "Pion 1"
    • Status znači da je komad živ ili mrtav!

Korak 4: Hardver

Hardver
Hardver
Hardver
Hardver
Hardver
Hardver

Sada kada imamo sve ispravne komade na mjestu, možemo početi stvarati nešto!

Podijelimo ovaj dio u podkorake jer će biti lakše objasniti:

  • Korak 1: Želite li izbušiti rupu u svakoj koordinati vaše šahovske ploče, kao što je prikazano na prvoj slici, također izbušite rupu u koju želite postaviti senzore dodira, RFID čitač i 7 -segmentni ekran.

    Ne zaboravite izbušiti neke rupe sa strane ploče, one su za žice različitih komponenti na vrhu ploče. Mnogo bušenja, znam

  • Korak 2: Pokušajte spojiti jedan ili dva senzora na Raspberry Pi, provjerite rade li. Želite ih spojiti na MCP analogni čitač kao što je objašnjeno ranije u koraku 2 (Sheme).
  • Korak 3: Ovo bi moglo biti zeznuto i uništiti živce, budući da zaglavlja kratkospojnika nisu dobro zaglavljena, možda ćete ih htjeti zalijepiti na ploču, pojedinačno ili više odjednom. Morate se pobrinuti da ostanu zaglavljeni na šahovskoj ploči, u protivnom nećete moći uspješno očitati senzore

    SAVJET! Ako vam to olakšava, neko ljepilo bi zapravo moglo pomoći da senzori ostanu na mjestu dok ih lijepite, otkrio sam to na teži način

Korak 5: Softver

Softver
Softver

Nakon što ste napravili hardver koji možete testirati, pokušajmo napisati neki kod za njega! Ako želite pogledati moj kod, prijeđite na moj github.

Back-endNajprije će nam trebati nekoliko paketa za instaliranje, nastavio sam i napravio listu za vas:

  • boca

    Na ovome će raditi vaš python kôd

  • Utičnica za utičnicuIO

    Za komunikaciju između prednjeg i stražnjeg kraja

  • numpy

    Korisno za čitanje svjetlosnih senzora, radi s matricama

  • netifaces

    Za ispis vlastite IP adrese na 7 -segmentnom ekranu

  • Flask-CORS

    Dijeljenje regresa s različitim izvorima omogućuje razmjenu paketa na različitim domenama

Pored toga, napisao sam nekoliko časova i možete ih slobodno koristiti.

Prednji kraj

Kod web stranice je također dostupan na mojoj stranici na githubu!

Za front-end ću koristiti Chessboard.js. Ovo ubacuje šahovsku ploču koja se lako koristi s figurama koje se lako premještaju!

Sve na ploči je prilagodljivo pa se zabavite! Nakon što preuzmete najnoviju verziju, morat ćete prevući datoteke u svoj projekt i povezati ih sa stranicom na kojoj želite prikazati šahovnicu!

Nakon toga, pokušajmo stvoriti ploču, ne izgleda previše teško:

Prvo, u vašem html -u:

Drugo, u vašoj javascript datoteci:

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

i eto ga, sad biste trebali moći vidjeti šahovnicu! Slobodno prilagodite ploču u CSS datotekama!

Sada želimo vidjeti neke poteze na šahovskoj ploči, ne pretjerane. Ali moramo ga prilagoditi tako da naredbu move pošalje back-end. Neću ulaziti u previše detalja, ali želimo učiniti ovako nešto:

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

Dobivamo popis iz našeg back-end programa i stavljamo crticu između dvije koordinate, a zatim pomoću naredbe board.move izvršimo potez!

To je moje objašnjenje o tome šta nam treba od dodatka chessboard.js, idite na moj github da sami pogledate kod

Preporučuje se: