Taula de continguts:

Escacs digitals: feu un seguiment del vostre joc d'escacs en línia: 5 passos
Escacs digitals: feu un seguiment del vostre joc d'escacs en línia: 5 passos

Vídeo: Escacs digitals: feu un seguiment del vostre joc d'escacs en línia: 5 passos

Vídeo: Escacs digitals: feu un seguiment del vostre joc d'escacs en línia: 5 passos
Vídeo: A 1000 Year Old Abandoned Italian Castle - Uncovering It's Mysteries! 2024, De novembre
Anonim
Escacs digitals: feu un seguiment del vostre joc d'escacs en línia
Escacs digitals: feu un seguiment del vostre joc d'escacs en línia

He estat jugant a molts escacs des que era jove, i com que la web té una gran quantitat de llocs web per jugar a escacs contra ordinadors o oponents en directe, mai no he trobat una pàgina web que faci un seguiment del vostre joc d'escacs. en realitat jugant a la vida real. Així doncs, amb aquest projecte espero adonar-me’n!

Espero:

  • Ser capaç de rastrejar el moviment de les peces d'escacs
  • Vegeu algunes taules de classificació sobre jocs passats.
  • Fes un seguiment del temps i juga ràpid com un joc professional.

És un projecte molt complex, ja que si es completés es necessitarien 64 sensors de llum i 8 xips per llegir. La qual cosa ja és una tasca important i ni tan sols comptem amb cap dels altres sensors.

La meva universitat ens va donar una gran llista de coses a fer:

  1. Crea un esquema per al nostre projecte
  2. Creeu una base de dades per emmagatzemar i obtenir dades.
  3. Dissenyeu un lloc web mitjançant Adobe XD
  4. Recreeu aquest lloc web amb CSS i HTML
  5. Llegiu els sensors amb python
  6. Mostra les dades del sensor al lloc web mitjançant un matràs.

En aquest instructiu, us guiaré en el meu viatge i en tots els problemes i moments de salvació que he viscut en aquestes darreres setmanes.

Pas 1: subministraments / eines

Subministraments, materials i eines són el primer pas per a un projecte amb èxit.

Eines:

  • Soldador
  • Estany de soldadura
  • Alicates
  • Màquina de perforació
  • Cinta

Subministraments:

  • Raspberry Pi amb targeta micro SD (n'hi ha prou amb 4 GB)
  • Sabater T Rasberry Pi
  • Tauler d'escacs amb peces
  • Pantalla de 7 segments (TM 1637)
  • 2 sensors tàctils (TTP223B)
  • Lector RFID amb targetes (MFRC522)
  • MCP3008 (Depenent de fins on vulgueu arribar, per cada MCP podeu llegir 8 coordenades d'escacs)
  • Resistència depenent de la llum tipus 5288 (8 per cada MCP que tingueu)
  • Capçaleres (masculí a masculí i femení a masculí)

Si necessiteu comprar-ho tot, el preu estimat ha de ser d’uns 125 euros, incloses les despeses d’enviament (només subministraments).

Hi ha adjunt un fitxer Excel amb enllaços i preus a tot el que necessiteu.

Pas 2: esquemes i planificació

Esquemes i planificació!
Esquemes i planificació!
Esquemes i planificació!
Esquemes i planificació!

El següent pas d’aquest projecte és crear un esquema. En vaig fer 2: un sobre taulers de suport i un altre purament electrònic. Necessitarem aquests esquemes per mantenir-ho tot net i assegurar-nos que no connectem cap cosa innecessària.

He utilitzat un programa anomenat "Fritzing" per crear aquests esquemes si algú està interessat.

Codificació de colors:

  • Vermell = font d'alimentació
  • Verd = connexió
  • Blau = terra

Connexions de Raspberry Pi:

  • 3V3 => Línia VC a la taula de treball, alimentant-ho tot
  • 5V => VCC de visualització de 7 segments
  • GND:

    • Mòlta a la pissarra
    • Terra de la pantalla de 7 segments
  • GPIO4 => Selecciona el rellotge del pin del MCP3008
  • GPIO10 => Pin MOSI de l'MCP3008
  • GPIO9 => Pin MISO de l'MCP3008
  • GPIO11 => PIN CLK de l'MCP3008
  • GPIO7 => Pin SDA del MFRC522
  • GPIO19 => Pin DIG del primer sensor tàctil
  • GPIO26 => Pin DIG del segon sensor tàctil
  • GPIO20 => PIN CLK de la pantalla de set segments
  • GPIO21 = Pin DIO de la pantalla de set segments

Un parell de notes sobre els esquemes:

  • Aquest esquema només conté 1 MCP, això significa que només es podran llegir completament 8 coordenades.
  • Utilitzaré pins GPIO com a xip Select. Com que només hi ha disponibles 2 pins de selecció de xip amb potencialment 8 MCP.
  • La visualització de 7 segments és la suggerida per un professor, només calen 4 cables ja que funciona amb el seu propi protocol.
  • Les resistències del pin digital dels sensors tàctils no són completament necessàries, sinó que s’aconsellen.

Explicació dels components:

  • MCP amb sensors de llum:

    • Un MCP3008 és un ADC de 10 canals de 8 canals:

      • un MCP3008 llegirà el valor analògic dels sensors de llum, aquest valor depèn de la quantitat de llum que brilla actualment al sensor.
      • Al meu codi Python rebré aquest valor analògic i el convertiré en 1 o 0
  • Sensors tàctils:

    Funciona com un botó, faig servir una classe per a això amb un mètode de devolució de trucada. Més informació sobre això més endavant

    Lector RFID (MFRC 522):

    • Utilitza un protocol específic (SPI) amb un paquet instal·lat.
    • No és difícil de codificar amb un paquet instal·lat
    • Llegeix l'etiqueta i retorna el valor de l'etiqueta
    • També podeu escriure un valor en una etiqueta, de manera que, en lloc de retornar el valor hexadecimal, torna un nom per exemple

    Segment de 7 (TM1637)

    • També utilitza un paquet instal·lat per facilitar la codificació
    • Creeu una variable amb un valor enter i, a continuació, dividiu-la en 4 caràcters i mostreu-los

Pas 3: base de dades SQL

Base de dades SQL
Base de dades SQL

El tercer pas cap a aquest projecte és crear una base de dades SQL normalitzada 3NF.

Ho necessitarem per a:

  • Inserció de dades
  • Obtenir dades i mostrar-les al nostre lloc web
  • Poder veure exactament quantes voltes han passat en el joc actual d'escacs.

Taules explicades:

  • Jocs

    • Es tracta de qui va guanyar un determinat joc i quan es va jugar el joc
    • La clau principal aquí és un GameID
    • La data té un valor estàndard de la data actual
    • El guanyador i la puntuació s'afegiran més endavant, un cop acabat el joc.
  • Jugadors (Spelers en holandès)

    • S’insereixen manualment, però també es poden inserir mitjançant el sistema de targetes RFID.
    • Escriviu un nom a la vostra targeta i, a continuació, llegiu-la i inseriu-lo en aquesta taula
    • També fa un seguiment del registre de guanys / pèrdues de cada jugador, que es mostrarà al lloc web
  • Historiek (història)

    • Aquesta és la història del torn
    • quan es mogui una peça d'escacs, s'actualitzarà aquí
    • Té 3 tecles estrangeres, jugador, joc i peça d'escacs
    • ReadDate (InleesDatum) és la data en què es va llegir el sensor
    • ReadTime és el mateix que ReadDate però amb una marca de temps
    • LocationID (LocatieID) és el nom de la coordenada on es troba. per exemple "a3"
  • Peces d'escacs (Schaakstukken en holandès)

    • Cada peça d'escacs té una identificació, un equip, un nom i un estat
    • L'equip és 1 o 2, negre o blanc;
    • El nom de la peça mai seria, és a dir, "Peó 1"
    • L’estat significa que la peça és viva o morta.

Pas 4: maquinari

Maquinari
Maquinari
Maquinari
Maquinari
Maquinari
Maquinari

Ara que tenim totes les peces correctes al seu lloc, podem començar a crear alguna cosa.

Dividim aquesta part en sub passos, ja que serà més fàcil d'explicar:

  • Pas 1: voleu perforar un forat a totes les coordenades del tauler d'escacs tal com es mostra a la primera imatge, practicar un forat on vulgueu col·locar els sensors tàctils, el lector RFID i la pantalla de 7 segments.

    No oblideu practicar alguns forats al costat del tauler, ja que són per als cables dels diferents components que hi ha a la part superior del tauler. Moltes perforacions, ho sé

  • Pas 2: proveu de connectar un o dos sensors al Raspberry Pi, comproveu si funcionen. Els voleu connectar al lector analògic MCP tal com s'ha explicat anteriorment al pas 2 (Els esquemes).
  • Pas 3: pot ser complicat i molt nerviós, ja que les capçaleres del pont no estan molt enganxades al lloc, és possible que vulgueu gravar-les totes al tauler, individualment o múltiples alhora. Heu d’assegurar-vos que quedin enganxats al tauler d’escacs, en cas contrari no podreu llegir els sensors amb èxit

    CONSELL! Si us ho fa més fàcil, és possible que una mica de cola ajudi a mantenir els sensors més al seu lloc mentre els gravem, ho vaig descobrir de la manera més difícil

Pas 5: programari

Programari
Programari

Un cop hàgiu creat el maquinari que podeu provar, provem d'escriure-hi un codi. Si voleu fer una ullada al meu codi, dirigiu-vos al meu github.

Back-end: Primer necessitarem un parell de paquets per instal·lar, vaig continuar i vaig fer una llista per a vosaltres:

  • matràs

    És en això que s'executarà el vostre codi Python

  • Flask-socketIO

    Per comunicar-se entre front-end i back-end

  • numpy

    Útil per llegir els sensors de llum, funciona amb els de matriu

  • netifaces

    Per imprimir la vostra pròpia adreça IP a la pantalla de 7 segments

  • Flask-CORS

    El recurs compartit de recursos, permet compartir paquets entre diferents dominis

Al costat d’això, he escrit un parell de classes i podeu utilitzar-les lliurement.

Front-end

El codi del lloc web també està disponible a la meva pàgina de github.

Per a la interfície, utilitzaré Chessboard.js. Això insereix un tauler d'escacs fàcil d'utilitzar amb peces fàcils de moure.

Tot el que hi ha al tauler es pot personalitzar, així que diverteix-te! Després d'haver descarregat la versió més recent, haureu d'arrossegar els fitxers al vostre projecte i enllaçar-los a la pàgina on vulgueu mostrar un tauler d'escacs.

Després d'això, intentem crear un tauler, no sembla massa dur:

En primer lloc, al vostre html:

En segon lloc, al fitxer javascript:

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

i ja ho teniu, ara podríeu veure un tauler d'escacs. No dubteu a personalitzar el tauler als fitxers CSS.

Ara volem veure alguns moviments al tauler d’escacs, no massa difícils. Però hem de personalitzar-lo perquè l'ordre move s'enviï pel back-end. No entraré en massa detalls, però volem fer alguna cosa així:

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

Rebem una llista del nostre programa back-end i posem un guió entre les dues coordenades i, a continuació, utilitzeu l’ordre board.move per executar el moviment.

Aquesta és la meva explicació del que necessitem del connector chessboard.js, dirigeix-te al meu github per mirar tu mateix el codi

Recomanat: