Innholdsfortegnelse:

Digital sjakk - Spor sjakkspillet ditt online: 5 trinn
Digital sjakk - Spor sjakkspillet ditt online: 5 trinn

Video: Digital sjakk - Spor sjakkspillet ditt online: 5 trinn

Video: Digital sjakk - Spor sjakkspillet ditt online: 5 trinn
Video: Наркомания, Травма, Порно, Детокс дофамина | Анна Лембке 2024, November
Anonim
Digital sjakk - Spor sjakkspillet ditt online
Digital sjakk - Spor sjakkspillet ditt online

Jeg har spilt mye sjakk siden jeg var ung, og siden nettet har en enorm mengde nettsteder å spille sjakk mot datamaskiner eller live -motstandere, har jeg aldri en gang funnet et nettsted som sporer sjakkspillet ditt som du er spiller faktisk i det virkelige liv. Så med dette prosjektet håper jeg å innse det!

Jeg håper å:

  • Kunne spore bevegelsen til sjakkbrikkene
  • Se noen ledertavler om tidligere spill.
  • Spor tid og spill raskt som et profesjonelt spill.

Det er et veldig komplekst prosjekt siden det ville kreve 64 lyssensorer og 8 sjetonger for å lese hvis det ble fullført. Som allerede er en stor oppgave, og vi teller ikke engang noen av de andre sensorene.

Høgskolen min ga oss en stor liste over ting å gjøre:

  1. Lag en skjematisk for vårt prosjekt
  2. Lag en database for lagring og henting av data.
  3. Design et nettsted ved hjelp av Adobe XD
  4. Gjenopprett dette nettstedet med CSS og HTML
  5. Les sensorene med python
  6. Vis sensordata på nettstedet ved hjelp av kolbe.

I denne instruksen vil jeg guide deg på min reise, og alle problemene og øyeblikkene med frelse jeg har gått gjennom de siste par ukene.

Trinn 1: Rekvisita/verktøy

Rekvisita, materialer og verktøy er det første trinnet til et vellykket prosjekt!

Verktøy:

  • Loddejern
  • Loddetinn
  • Tang
  • Drill maskin
  • Teip

Rekvisita:

  • Raspberry Pi med micro SD -kort (4 GB burde være nok)
  • Rasberry Pi T-skomaker
  • Sjakkbrett med brikker
  • 7 -segmenters skjerm (TM 1637)
  • 2 berøringssensorer (TTP223B)
  • RFID -leser med kort (MFRC522)
  • MCP3008 (Avhengig av hvor langt du vil gå, for hver MCP kan du lese 8 sjakkoordinater)
  • Lysavhengig motstand type 5288 (8 for hver MCP du har)
  • Overskrifter (Mann til Mann og Kvinne til Mann)

Hvis du trenger å kjøpe alt, bør den estimerte kostprisen være rundt 125 euro inkludert fraktkostnader (kun rekvisita)!

Det er en Excel -fil vedlagt med lenker og priser til alt du trenger!

Trinn 2: Skjemaer og planlegging

Skjema og planlegging!
Skjema og planlegging!
Skjema og planlegging!
Skjema og planlegging!

Det neste trinnet i dette prosjektet er å lage en skjematisk. Jeg lagde 2: En på brødbrett og en rent elektronisk. Vi trenger denne skjemaet for å holde alt rent og sørge for at vi ikke kobler til unødvendige ting!

Jeg brukte et program kalt "Fritzing" for å lage disse skjemaene hvis noen er interessert.

Fargekoding:

  • Rød = strømforsyning
  • Grønn = tilkobling
  • Blå = bakken

Raspberry Pi -tilkoblinger:

  • 3V3 => VC -linje på brødbrettet, som driver alt
  • 5V => VCC for 7 segment display
  • GND:

    • Bakken på brødbrettet
    • Bakgrunnen for 7 -segmenters display
  • GPIO4 => Klokke Velg pinne på MCP3008
  • GPIO10 => MOSI -pinne på MCP3008
  • GPIO9 => MISO -pin på MCP3008
  • GPIO11 => CLK -pinne på MCP3008
  • GPIO7 => SDA -pinne på MFRC522
  • GPIO19 => DIG -pinne på den første berøringssensoren
  • GPIO26 => DIG -pin på den andre berøringssensoren
  • GPIO20 => CLK -pin på displayet med syv segmenter
  • GPIO21 = DIO -pin på det syvende segmentet

Et par notater om skjemaene:

  • Denne skjemaet inneholder bare 1 MCP, dette betyr at bare 8 koordinater vil kunne leses fullt ut.
  • Jeg kommer til å bruke GPIO -pinner som Chip Select. Siden bare 2 Chip select pins er tilgjengelige med potensielt 8 MCP -er.
  • Displayet med 7 segmenter er foreslått av en lærer. Bare 4 ledninger er nødvendig siden det fungerer på sin egen protokoll.
  • Motstandene på den digitale pinnen til berøringssensorene er ikke fullt nødvendig, men anbefales.

Forklarer komponentene:

  • MCP med lyssensorer:

    • En MCP3008 er en 8 -kanals 10 -biters ADC:

      • en MCP3008 vil lese lyssensorenes analoge verdi, denne verdien avhenger av lysmengden som for øyeblikket skinner på sensoren.
      • I min python -kode vil jeg motta den analoge verdien og konvertere den til en 1 eller 0
  • Berøringssensorer:

    Fungerer akkurat som en knapp, jeg bruker en klasse for dette med en tilbakeringingsmetode. Mer om dette senere

    RFID -leser (MFRC 522):

    • Bruker en spesifikk protokoll (SPI) med en installert pakke.
    • Ikke vanskelig å kode med en installert pakke
    • Leser koden og returnerer verdien av koden
    • Du kan også skrive en verdi til en tag, så i stedet for å returnere den heksadesimale verdien, returnerer den for eksempel et navn

    7 segment (TM1637)

    • Bruker også en installert pakke for enkel koding
    • Lag en variabel med en heltallsverdi, del den deretter opp i 4 tegn og vis disse tegnene

Trinn 3: SQL Database

SQL Database
SQL Database

Det tredje trinnet mot dette prosjektet er å lage en 3NF normalisert SQL -database!

Vi trenger dette for:

  • Sette inn data
  • Få data og vis dem på nettstedet vårt
  • Å kunne se nøyaktig hvor mange svinger som har gått i det nåværende sjakkspillet!

Tabeller forklart:

  • Spill

    • Dette sporer hvem som vant et bestemt spill og når spillet ble spilt
    • Hovednøkkelen her er et GameID
    • Datoen har en standardverdi for gjeldende dato
    • Vinneren og poengsummen blir lagt til senere, etter at kampen er ferdig!
  • Spillere (spelere på nederlandsk)

    • Disse settes inn manuelt, men kan også settes inn ved hjelp av RFID -kortsystemet.
    • Skriv et navn til kortet ditt, les deretter kortet og sett inn navnet i denne tabellen
    • Det sporer også seier / tap -rekorden for hver spiller, som skal vises på nettstedet
  • Historiek (historie)

    • Dette er svinghistorien
    • Når en sjakkbrikke flyttes, oppdateres den her
    • Den har 3 utenlandske nøkler, spiller, spill og sjakkbrikke
    • ReadDate (InleesDatum) er datoen da sensoren ble lest
    • ReadTime er det samme som ReadDate, men med et tidsstempel
    • LocationID (LocatieID) er navnet på koordinaten der den er plassert. for eksempel "a3"
  • Sjakkstykker (Schaakstukken på nederlandsk)

    • Hver sjakkbrikke har ID, lag, navn og status
    • Teamet er enten 1 eller 2, svart eller hvitt;
    • Navnet på stykket noensinne vil være "Pawn 1"
    • Status betyr at stykket er levende eller dødt!

Trinn 4: Maskinvare

Maskinvare
Maskinvare
Maskinvare
Maskinvare
Maskinvare
Maskinvare

Nå som vi har alle de riktige brikkene på plass, kan vi begynne å lage noe!

La oss dele denne delen i deltrinn, da det blir lettere å forklare:

  • Trinn 1: Du vil bore et hull i hver koordinat på sjakkbrettet ditt som vist på det første bildet, også bore et hull der du vil plassere berøringssensorer, RFID -leser og 7 -segmenters display.

    Ikke glem å bore noen hull på siden av brettet, disse er for ledningene til de forskjellige komponentene på toppen av brettet. Mye boring, jeg vet

  • Trinn 2: Prøv å koble en eller to sensorer til Raspberry Pi, sjekk om de fungerer. Du vil koble dem til den analoge MCP -leseren som forklart tidligere i trinn 2 (skjemaene).
  • Trinn 3: Dette kan være vanskelig og veldig nervepirrende, siden hopperhodene ikke er veldig fast på plass, vil du kanskje tape dem alle på brettet, enten individuelt eller flere samtidig. Du må sørge for at de sitter fast på sjakkbrettet, ellers kan du ikke lese sensorene vellykket

    TIPS! Hvis det gjør det lettere for deg, kan litt lim faktisk hjelpe til med å holde sensorene mer på plass mens du teiper dem, jeg oppdaget dette på den harde måten

Trinn 5: Programvare

Programvare
Programvare

Etter at du har laget maskinvare som du kan teste, la oss prøve å skrive noen kode for den! Hvis du vil ta en titt på koden min, kan du gå til githuben min.

Back-end Først vi trenger et par pakker for å installeres, gikk jeg videre og laget en liste for deg:

  • kolbe

    Dette er hva pythonkoden din skal kjøre på

  • Kolbe-socketIO

    For å kommunisere mellom front-end og back-end

  • numpy

    Nyttig for å lese lyssensorene, fungerer med matrisene

  • nettverk

    For å skrive ut din egen IP -adresse på 7 -segmenters display

  • Kolbe-CORS

    Cross origin recourse sharing, gjør det mulig å dele pakker på tvers av forskjellige domener

Ved siden av det har jeg skrevet et par klasser, og du står fritt til å bruke dem.

Front-end

Nettstedskoden er også tilgjengelig på github -siden min!

For front-end bruker jeg Chessboard.js. Dette setter inn et lett å bruke sjakkbrett med brikker som er lett å flytte!

Alt på tavlen kan tilpasses, så ha det gøy! Etter å ha lastet ned den nyeste versjonen, må du dra filene over til prosjektet og koble dem til siden der du vil vise et sjakkbrett!

Etter det, la oss prøve å lage et brett, det ser ikke så vanskelig ut:

Først i html:

For det andre, i javascript -filen din:

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

og der har du det, du burde kunne se et sjakkbrett nå! Tilpass gjerne brettet i CSS -filene!

Nå vil vi se noen trekk på sjakkbrettet, ikke så vanskelig. Men vi må tilpasse det slik at kommandoen flytte blir sendt av back-end. Jeg vil ikke gå for mye i detalj, men vi ønsker å gjøre noe slikt:

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

Vi mottar en liste fra back-end-programmet vårt, og setter et bindestrek mellom de to koordinatene, og bruk deretter kommandoen board.move for å utføre flyttingen!

Det er min forklaring på hva vi trenger av chessboard.js -pluginet, gå over til githuben min for å ta en titt på koden selv

Anbefalt: