INHOUDSOPGAWE:

Digitale skaak - Volg u skaakspel aanlyn: 5 stappe
Digitale skaak - Volg u skaakspel aanlyn: 5 stappe

Video: Digitale skaak - Volg u skaakspel aanlyn: 5 stappe

Video: Digitale skaak - Volg u skaakspel aanlyn: 5 stappe
Video: Daniel Schmachtenberger: Zal technologie ons vernietigen? 2024, November
Anonim
Digitale skaak - Volg u skaakspel aanlyn
Digitale skaak - Volg u skaakspel aanlyn

Ek het sedert ek jonk was baie skaak gespeel, en aangesien die internet 'n groot aantal webwerwe het om teen skootrekenaars of teenstanders te skaak, het ek nog nooit 'n webwerf gevind wat u skaakspel volg nie. speel eintlik in die regte lewe. So met hierdie projek hoop ek om dit te besef!

Ek hoop om:

  • In staat wees om die beweging van die skaakstukke op te spoor
  • Sien 'n paar ranglyste oor vorige speletjies.
  • Volg tyd en speel vinnig soos 'n professionele spel.

Dit is 'n baie komplekse projek, want as dit voltooi is, sal dit 64 ligsensors en 8 skyfies benodig om te lees. Dit is reeds 'n groot taak, en ons tel nie eers een van die ander sensors nie.

My kollege het ons 'n groot lys dinge gegee om te doen:

  1. Skep 'n skema vir ons projek
  2. Skep 'n databasis vir die stoor en opneem van data.
  3. Ontwerp 'n webwerf met Adobe XD
  4. Herskep hierdie webwerf met CSS en HTML
  5. Lees die sensors met luislang
  6. Toon die sensordata op die webwerf met behulp van 'n fles.

In hierdie instruksies lei ek u op my reis en al die probleme en oomblikke van redding wat ek die afgelope paar weke deurgemaak het.

Stap 1: Benodighede/gereedskap

Voorrade, materiaal en gereedskap is die eerste stap na 'n suksesvolle projek!

Gereedskap:

  • Soldeerbout
  • Soldeer blik
  • Tang
  • Boormasjien
  • Band

Benodighede:

  • Framboos Pi met mikro -SD -kaart (4 GB behoort genoeg te wees)
  • Rasberry Pi T-skoenmaker
  • Skaakbord met stukke
  • 7 -segment vertoning (TM 1637)
  • 2 aanraaksensors (TTP223B)
  • RFID -leser met kaarte (MFRC522)
  • MCP3008 (Afhangend van hoe ver u wil gaan, kan u vir elke MCP 8 skaakkoördinate lees)
  • Ligafhanklike weerstand tipe 5288 (8 vir elke MCP wat u het)
  • Opskrifte (manlik tot manlik en vroulik tot manlik)

As u alles wil koop, moet die beraamde kosprys ongeveer 125 euro wees, insluitend gestuurkoste (slegs voorraad)!

Daar is 'n Excel -lêer aangeheg met skakels en pryse vir alles wat u nodig het!

Stap 2: Skema's en beplanning

Skema's en beplanning!
Skema's en beplanning!
Skema's en beplanning!
Skema's en beplanning!

Die volgende stap in hierdie projek is om 'n skematiese opstel te maak. Ek het 2 gemaak: een op broodbord en een suiwer elektronies. Ons sal hierdie skemas nodig hê om alles skoon te hou en om seker te maak dat ons nie onnodige dinge verbind nie!

Ek het 'n program genaamd "Fritzing" gebruik om hierdie skemas te maak as iemand belangstel.

Kleur kodering:

  • Rooi = kragtoevoer
  • Groen = verbinding
  • Blou = grond

Raspberry Pi -verbindings:

  • 3V3 => VC -lyn op die broodbord, wat alles aandryf
  • 5V => VCC van 7 segment vertoon
  • GND:

    • Gemaal op die broodbord
    • Grond van die 7 -segment vertoning
  • GPIO4 => Klok Kies pen van die MCP3008
  • GPIO10 => MOSI -pen van die MCP3008
  • GPIO9 => MISO -pen van die MCP3008
  • GPIO11 => CLK -pen van die MCP3008
  • GPIO7 => SDA -pen van die MFRC522
  • GPIO19 => DIG -pen van die eerste aanraaksensor
  • GPIO26 => DIG -pen van die tweede aanraaksensor
  • GPIO20 => CLK -pen van die sewesegment
  • GPIO21 = DIO -pen van die sewende segmentvertoning

'N Paar aantekeninge oor die skemas:

  • Hierdie skema bevat slegs 1 MCP, dit beteken dat slegs 8 koördinate volledig gelees kan word.
  • Ek sal GPIO -penne gebruik as my Chip Select. Aangesien slegs 2 chip -penne beskikbaar is met moontlik 8 MCP's.
  • Die 7 -segment vertoning word deur 'n onderwyser voorgestel, slegs 4 drade is nodig omdat dit volgens sy eie protokol werk.
  • Die weerstande op die digitale pen van die aanraaksensors is nie volledig nodig nie, maar word aangeraai.

Verduidelik die komponente:

  • MCP met ligsensors:

    • 'N MCP3008 is 'n 8 -kanaals 10 bis ADC:

      • 'n MCP3008 sal die analoogwaarde van die ligsensors lees; hierdie waarde hang af van die hoeveelheid lig wat tans op die sensor skyn.
      • In my python -kode ontvang ek die analoogwaarde en omskep dit in 'n 1 of 0
  • Raak sensors:

    Dit werk net soos 'n knoppie, ek gebruik 'n klas hiervoor met 'n terugbelmetode. Meer hieroor later

    RFID -leser (MFRC 522):

    • Gebruik 'n spesifieke protokol (SPI) met 'n geïnstalleerde pakket.
    • Nie moeilik om te kodeer met 'n geïnstalleerde pakket nie
    • Lees die etiket en gee die waarde van die etiket terug
    • U kan ook 'n waarde na 'n merker skryf, dus in plaas van om die heksadesimale waarde terug te gee, gee dit byvoorbeeld 'n naam

    7 segment (TM1637)

    • Gebruik ook 'n geïnstalleerde pakket vir maklike kodering
    • Skep 'n veranderlike met 'n heelgetalwaarde, verdeel dit dan in 4 karakters en wys die karakters

Stap 3: SQL -databasis

SQL databasis
SQL databasis

Die derde stap in die rigting van hierdie projek is die skep van 'n 3NF genormaliseerde SQL -databasis!

Ons benodig dit vir:

  • Voeg data in
  • Kry data en wys dit op ons webwerf
  • Om presies te sien hoeveel draaie in die huidige skaakspel verloop het!

Tabelle verduidelik:

  • Speletjies

    • Dit volg wie 'n sekere wedstryd gewen het en wanneer die wedstryd gespeel is
    • Die primêre sleutel hier is 'n GameID
    • Die datum het 'n standaardwaarde van die huidige datum
    • Die wenner en telling sal later bygevoeg word, nadat die wedstryd voltooi is!
  • Spelers (Spelers in Nederlands)

    • Dit word met die hand ingevoeg, maar kan ook met die RFID -kaartstelsel ingevoeg word.
    • Skryf 'n naam op u kaart, lees dan die kaart en voeg die naam in hierdie tabel in
    • Dit volg ook die wen / verlies rekord van elke speler wat op die webwerf vertoon moet word
  • Historiek (Geskiedenis)

    • Dit is die beurtgeskiedenis
    • as 'n skaakstuk geskuif word, sal dit hier opgedateer word
    • Dit het 3 vreemde sleutels, speler, spel en skaakstuk
    • die ReadDate (InleesDatum) is die datum waarop die sensor gelees is
    • ReadTime is dieselfde as ReadDate, maar met 'n tydstempel
    • LocationID (LocatieID) is die naam van die koördinaat waarop dit geplaas is. byvoorbeeld "a3"
  • Skaakstukke (Schaakstukken in Nederlands)

    • Elke skaakstuk het 'n ID, span, naam en status
    • Die span is óf 1 óf 2, swart of wit;
    • Die naam van die ewige stuk sou wees "Pand 1"
    • Die status beteken dat die stuk lewendig of dood is!

Stap 4: Hardeware

Hardeware
Hardeware
Hardeware
Hardeware
Hardeware
Hardeware

Noudat ons al die korrekte stukke in plek het, kan ons iets begin skep!

Kom ons verdeel hierdie deel in substappe, want dit sal makliker wees om te verduidelik:

  • Stap 1: U wil 'n gat in elke koördinaat van u skaakbord boor, soos in die eerste prentjie getoon, en ook 'n gat boor waar u die aanraaksensors, RFID -leser en die 7 -segmentskerm wil plaas.

    Moenie vergeet om 'n paar gate aan die kant van die bord te boor nie, dit is vir die drade van die verskillende komponente bo -op die bord. Baie boor, ek weet

  • Stap 2: Probeer om een of twee sensors aan die Raspberry Pi te koppel, kyk of dit werk. U wil dit koppel aan die analoog MCP -leser, soos vroeër in stap 2 (die skemas) verduidelik.
  • Stap 3: Dit kan lastig en baie senuweeagtig wees, aangesien die springkoppe nie baie vas is nie, kan u dit almal individueel of meervoudig op die bord plak. U moet seker maak dat hulle op die skaakbord vassteek, anders kan u nie die sensors suksesvol lees nie

    WENK! As dit u makliker maak, kan 'n bietjie gom help om die sensors meer vas te hou terwyl u dit plak, maar ek het dit op die moeilike manier ontdek

Stap 5: sagteware

Sagteware
Sagteware

Nadat u hardeware gemaak het wat u kan toets, probeer ons 'n kode daarvoor skryf! As u na my kode wil kyk, gaan dan na my github.

Back-end Eerstens moet ons 'n paar pakkette installeer, en ek het 'n lys saamgestel:

  • fles

    Dit is waarop u python -kode werk

  • Fles-socketIO

    Om te kommunikeer tussen voorkant en agterkant

  • gevoelloos

    Nuttig om die ligsensors te lees, werk met matrikse

  • netfaces

    Om u eie IP -adres op die 7 -segment -skerm te druk

  • Fles-CORS

    Deur middel van herkoms, kan pakkette oor verskillende domeine gedeel word

Daarnaas het ek 'n paar klasse geskryf en u kan dit gratis gebruik.

Voorkant

Die webwerf kode is ook beskikbaar op my github bladsy!

Vir die voorkant gebruik ek Chessboard.js. Dit voeg 'n maklik om te gebruik skaakbord in met maklik om te skuif stukke!

Alles op die bord is aanpasbaar, so geniet dit! Nadat u die nuutste weergawe afgelaai het, moet u die lêers na u projek sleep en dit koppel aan die bladsy waar u 'n skaakbord wil wys!

Laat ons daarna probeer om 'n bord te skep, dit lyk nie so moeilik nie:

Eerstens in u html:

Tweedens, in u javascript -lêer:

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

en daar het jy dit, jy behoort nou 'n skaakbord te kan sien! Pas die bord in die CSS -lêers aan!

Nou wil ons 'n paar bewegings op die skaakbord sien, nie te moeilik nie. Maar ons moet dit aanpas sodat die skuifopdrag deur die agterkant gestuur word. Ek gaan nie te veel in detail nie, maar ons wil iets soos hierdie doen:

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

Ons ontvang 'n lys van ons back-end-program en plaas 'n streep tussen die twee koördinate, en gebruik dan die board.move-opdrag om die stap uit te voer!

Dit is my verduideliking van wat ons nodig het vir die chessboard.js -inprop, gaan na my github om self na die kode te kyk

Aanbeveel: