Tabla de contenido:

Ajedrez digital: siga su juego de ajedrez en línea: 5 pasos
Ajedrez digital: siga su juego de ajedrez en línea: 5 pasos

Video: Ajedrez digital: siga su juego de ajedrez en línea: 5 pasos

Video: Ajedrez digital: siga su juego de ajedrez en línea: 5 pasos
Video: Truco en el Gambito de Rey #ajedrezespañol #ajedrez #ajedrez8 #jugadasdeajedrez #jugadasajedrez 2024, Noviembre
Anonim
Ajedrez digital: rastrea tu juego de ajedrez en línea
Ajedrez digital: rastrea tu juego de ajedrez en línea

He jugado mucho al ajedrez desde que era joven, y dado que la web tiene una gran cantidad de sitios web para jugar al ajedrez contra computadoras u oponentes en vivo, nunca encontré un sitio web que rastree tu juego de ajedrez que estás realmente jugando en la vida real. ¡Así que con este proyecto espero darme cuenta de eso!

Espero:

  • Ser capaz de seguir el movimiento de las piezas de ajedrez.
  • Vea algunas tablas de clasificación sobre juegos anteriores.
  • Controle el tiempo y juegue rápido como un juego profesional.

Es un proyecto muy complejo ya que si se completara requeriría 64 sensores de luz y 8 chips para leer. Lo cual ya es una gran tarea y ni siquiera contamos ninguno de los otros sensores.

Mi universidad nos dio una gran lista de cosas para hacer:

  1. Crea un esquema para nuestro proyecto
  2. Cree una base de datos para almacenar y obtener datos.
  3. Diseñe un sitio web con Adobe XD
  4. Recrear este sitio web con CSS y HTML
  5. Leer los sensores con python
  6. Muestre los datos del sensor en el sitio web usando un matraz.

En este instructivo, lo guiaré en mi viaje y en todos los problemas y momentos de salvación que he atravesado en las últimas semanas.

Paso 1: Suministros / Herramientas

¡Los suministros, materiales y herramientas son el primer paso para un proyecto exitoso!

Instrumentos:

  • Soldador
  • Estaño para soldar
  • Alicates
  • Taladro
  • Cinta

Suministros:

  • Raspberry Pi con tarjeta micro SD (4GB deberían ser suficientes)
  • Zapatero en forma de T de Rasberry Pi
  • Tablero de ajedrez con piezas
  • Pantalla de 7 segmentos (TM 1637)
  • 2 sensores táctiles (TTP223B)
  • Lector RFID con tarjetas (MFRC522)
  • MCP3008 (Dependiendo de lo lejos que quiera llegar, por cada MCP puede leer 8 coordenadas de Ajedrez)
  • Resistencia dependiente de la luz tipo 5288 (8 por cada MCP que tenga)
  • Encabezados (de hombre a hombre y de mujer a hombre)

Si necesita comprar todo, el precio de coste estimado debería rondar los 125 euros, incluidos los gastos de envío (solo consumibles).

¡Hay un archivo de Excel adjunto con enlaces y precios para todo lo que necesita!

Paso 2: Esquemas y planificación

¡Esquemas y planificación!
¡Esquemas y planificación!
¡Esquemas y planificación!
¡Esquemas y planificación!

El siguiente paso de este proyecto es crear un esquema. Hice 2: uno en tablero y otro puramente electrónico. ¡Necesitaremos estos esquemas para mantener todo limpio y asegurarnos de no conectar nada innecesario!

Usé un programa llamado "Fritzing" para crear estos esquemas si alguien está interesado.

Codificación de color:

  • Rojo = fuente de alimentación
  • Verde = conexión
  • Azul = tierra

Conexiones Raspberry Pi:

  • 3V3 => Línea VC en la placa de pruebas, alimentando todo
  • 5V => VCC de pantalla de 7 segmentos
  • GND:

    • Tierra en la placa de pruebas
    • Tierra de la pantalla de 7 segmentos
  • GPIO4 => Pin de selección de reloj del MCP3008
  • GPIO10 => pin MOSI del MCP3008
  • GPIO9 => pin MISO del MCP3008
  • GPIO11 => pin CLK del MCP3008
  • GPIO7 => Pin SDA del MFRC522
  • GPIO19 => pin DIG del primer sensor táctil
  • GPIO26 => pin DIG del segundo sensor táctil
  • GPIO20 => pin CLK de la pantalla de siete segmentos
  • GPIO21 = pin DIO de la pantalla de séptimo segmento

Un par de notas sobre los esquemas:

  • Este esquema contiene solo 1 MCP, esto significa que solo 8 coordenadas se podrán leer completamente.
  • Usaré pines GPIO como mi selección de chip. Dado que solo hay disponibles 2 pines de selección de chip con potencialmente 8 MCP.
  • La pantalla de 7 segmentos es una sugerida por un maestro, solo se necesitan 4 cables ya que funciona con su propio protocolo.
  • Las resistencias en el pin digital de los sensores táctiles no son completamente necesarias, pero se recomiendan.

Explicando los componentes:

  • MCP con sensores de luz:

    • Un MCP3008 es un ADC de 8 canales y 10 bits:

      • un MCP3008 leerá el valor analógico de los sensores de luz, este valor depende de la cantidad de luz que está brillando actualmente sobre el sensor.
      • En mi código de Python, recibiré ese valor analógico y lo convertiré en 1 o 0
  • Sensores táctiles:

    Funciona como un botón, utilizo una clase para esto con un método de devolución de llamada. Más sobre esto más tarde

    Lector RFID (MFRC 522):

    • Utiliza un protocolo específico (SPI) con un paquete instalado.
    • No es difícil de codificar con un paquete instalado
    • Lee la etiqueta y devuelve el valor de la etiqueta.
    • También puede escribir un valor en una etiqueta, por lo que en lugar de devolver el valor hexadecimal, devuelve un nombre, por ejemplo

    7 segmentos (TM1637)

    • También utiliza un paquete instalado para facilitar la codificación.
    • Cree una variable con un valor entero, luego divídala en 4 caracteres y muestre esos caracteres

Paso 3: Base de datos SQL

Base de datos SQL
Base de datos SQL

¡El tercer paso hacia este proyecto es crear una base de datos SQL normalizada 3NF!

Necesitaremos esto para:

  • Insertar datos
  • Obtener datos y mostrarlos en nuestro sitio web
  • ¡Poder ver exactamente cuántos turnos han pasado en el juego actual de ajedrez!

Tablas explicadas:

  • Juegos

    • Esto rastrea quién ganó un determinado juego y cuándo se jugó.
    • La clave principal aquí es un GameID
    • La fecha tiene un valor estándar de la fecha actual
    • ¡El ganador y la puntuación se agregarán más tarde, una vez finalizado el juego!
  • Jugadores (Spelers en holandés)

    • Estos se insertan manualmente, pero también se pueden insertar mediante el sistema de tarjeta RFID.
    • Escriba un nombre en su tarjeta, luego lea la tarjeta e inserte el nombre en esta tabla
    • También rastrea el registro de victorias / derrotas de cada jugador, que se mostrará en el sitio web.
  • Historiek (Historia)

    • Este es el historial de turnos
    • cuando se mueve una pieza de ajedrez, se actualizará aquí
    • Tiene 3 llaves extranjeras, jugador, juego y pieza de ajedrez.
    • ReadDate (InleesDatum) es la fecha en la que se leyó el sensor
    • ReadTime es lo mismo que ReadDate pero con una marca de tiempo
    • LocationID (LocatieID) es el nombre de la coordenada donde está posicionado. por ejemplo "a3"
  • Piezas de ajedrez (Schaakstukken en holandés)

    • Cada pieza de ajedrez tiene una identificación, equipo, nombre y estado.
    • El equipo es 1 o 2, blanco o negro;
    • El nombre de cada pieza sería, por ejemplo, "Peón 1".
    • ¡El estado significa que la pieza está viva o muerta!

Paso 4: hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Ahora que tenemos todas las piezas correctas en su lugar, ¡podemos comenzar a crear algo!

Dividamos esta parte en subpasos, ya que será más fácil de explicar:

  • Paso 1: desea perforar un agujero en cada coordenada de su tablero de ajedrez como se muestra en la primera imagen, también perforar un agujero donde desea colocar los sensores táctiles, el lector RFID y la pantalla de 7 segmentos.

    No olvides perforar unos agujeros en el lateral de la placa, estos son para los cables de los diferentes componentes en la parte superior de la placa. Mucha perforación, lo sé

  • Paso 2: intente conectar uno o dos sensores a la Raspberry Pi, verifique si funcionan. Desea conectarlos al lector analógico MCP como se explicó anteriormente en el Paso 2 (Los esquemas).
  • Paso 3: Esto puede ser complicado y muy estresante, dado que los encabezados de los puentes no están muy pegados en su lugar, es posible que desee pegarlos todos en el tablero, ya sea individualmente o varios a la vez. Tienes que asegurarte de que permanezcan atascados en el tablero de ajedrez, de lo contrario no podrás leer los sensores correctamente.

    ¡PROPINA! Si le resulta más fácil, un poco de pegamento podría ayudar a mantener los sensores en su lugar mientras los pega, lo descubrí de la manera más difícil

Paso 5: software

Software
Software

Una vez que haya creado el hardware que puede probar, ¡intentemos escribir un código para él! Si quieres echar un vistazo a mi código, dirígete a mi github.

Back-end Primero vamos a necesitar un par de paquetes para ser instalados, seguí adelante e hice una lista para ti:

  • matraz

    Esto es en lo que se ejecutará su código de Python

  • Matraz-socketIO

    Para comunicarse entre front-end y back-end

  • numpy

    Útil para leer los sensores de luz, funciona con matrices

  • netifaces

    Para imprimir su propia dirección IP en la pantalla de 7 segmentos

  • Matraz-CORS

    El uso compartido de recursos entre orígenes permite que los paquetes se compartan entre diferentes dominios

Además, escribí un par de clases y puedes usarlas.

Interfaz

¡El código del sitio web también está disponible en mi página de github!

Para el front-end, usaré Chessboard.js. ¡Esto inserta un tablero de ajedrez fácil de usar con piezas fáciles de mover!

Todo en el tablero es personalizable, ¡así que diviértete! Después de haber descargado la última versión, tendrá que arrastrar los archivos a su proyecto y vincularlos a la página donde desea mostrar un tablero de ajedrez.

Después de eso, intentemos crear un tablero, no busque demasiado:

Primero, en tu html:

En segundo lugar, en su archivo javascript:

tablero1 = Tablero de ajedrez ('tablero1', 'inicio');

y ahí lo tienes, ¡deberías poder ver un tablero de ajedrez ahora! ¡Siéntete libre de personalizar el tablero en los archivos CSS!

Ahora, queremos ver algunos movimientos en el tablero de ajedrez, no demasiado difíciles. Pero necesitamos personalizarlo para que el back-end envíe el comando de movimiento. No entraré en demasiados detalles, pero queremos hacer algo como esto:

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

Recibimos una lista de nuestro programa de back-end, y colocamos un guión entre las dos coordenadas, luego usamos el comando board.move para ejecutar el movimiento.

Esa es mi explicación de lo que necesitamos del complemento chessboard.js, dirígete a mi github para ver el código tú mismo.

Recomendado: