Tabla de contenido:
- Paso 1: Suministros / Herramientas
- Paso 2: Esquemas y planificación
- Paso 3: Base de datos SQL
- Paso 4: hardware
- Paso 5: software
Video: Ajedrez digital: siga su juego de ajedrez en línea: 5 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
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:
- Crea un esquema para nuestro proyecto
- Cree una base de datos para almacenar y obtener datos.
- Diseñe un sitio web con Adobe XD
- Recrear este sitio web con CSS y HTML
- Leer los sensores con python
- 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
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
-
- 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
- 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
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):
7 segmentos (TM1637)
Paso 3: 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
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
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:
Cómo hacer que la caja de seguridad siga el juego Among Us - Tarea de cableado eléctrico: 7 pasos
Cómo hacer una caja de seguridad siguiendo el juego Among Us - Tarea de cableado eléctrico: Hoy, te mostraré cómo hacer una caja de seguridad siguiendo el juego Among Us - Tarea de cableado eléctrico
Controlador de juego Arduino Rhythm (para mi propio juego): 6 pasos
Controlador de juego de ritmo Arduino (para mi propio juego): en este instructivo le mostraré cómo construyo este controlador de juego de ritmo desde cero. Implica habilidades básicas de carpintería, habilidades básicas de impresión 3D y habilidades básicas de soldadura. Probablemente puedas construir este proyecto con éxito si no tienes ex
Tutorial por lotes: siga 1: 4 pasos
Tutorial por lotes - Toma 1: Bueno, he visto algunos tutoriales por lotes, pero ninguno de ellos realmente sigue con nada, así que estoy haciendo un tutorial de 3 partes por lotes, con videos solo para esa facilidad adicional. archivos .bat (por lotes) necesarios en su paso apropiado
Juego de ajedrez LED - Versión simple: 12 pasos
Juego de ajedrez LED - Versión simple: Tetranitrate publicó anteriormente un excelente instructivo sobre cómo hacer un juego de ajedrez LED aquí: https: //www.instructables.com/id/LED-Chess-Set/ Lo encontré a través de BoingBoing, pero no pude ' No se moleste en hacer uno que pareciera tan llamativo. Solo quería una t
Descargar y jugar juegos flash en línea o fuera de línea: 5 pasos
Descargue y juegue juegos flash en línea o fuera de línea: en este instructivo le enseñaré cómo descargar juegos flash. Esto es increíble para jugar en viajes y cosas en las que no puedes conseguir wifi