SolusChess versión 2

NUEVA VERSIÓN


   
Ahora la captura se puede realizar de forma natural, en cualquier orden.

    Partiendo desde cualquier posición sobre el tablero, el programa es capaz de detectar las capturas "normales", al paso, enroques, etc. enviando sólo los movimientos correctos al equipo host (anfitrión). Todo esto mediante el análisis de los cambios producidos en la matriz de sensores, sin identificación de piezas (a diferencia de los tablerors DGT). Por lo tanto la legalidad de los movimientos es responsabilidad del jugador. ;-)



    En la sección Ideas de programación tienes la información necesaria para realizar tu propio código. Si no sabes programar, o no tienes ganas de hacerlo, puedes probar con este programa que he realizado yo: SolusChess.


    PRIMERO DE TODO:

    El programa es muy sencillo, con las ventajas e inconvenientes que esto tiene: simplemente emula un teclado USB.

    Antes de construir este proyecto te aconsejo que hagas lo siguiente:
  1. Comprueba que tu programa de ajedrez para PC (o Tablet, Smartphone, ...) soporta la entrada de movimientos vía teclado.

  2. En caso afirmativo, configura tu programa de forma adecuada: algunos no lo están por defecto. Es imprescindible que el programa "escuche" sólo movimientos completos (por ejemplo "e2e4") y no parciales (como "e4"). En Arena Chess, por ejemplo, se consigue así:

    Esta configuración se encuentra en "Opciones / Apariencia / Tablero / Input del movimiento"

  3. ¡Juega sólo con el teclado, sin tocar el ratón! Introduce los movimientos como, por ejemplo, "g1f3". Los comandos introducidos han de ser sencillos, a modo de coordenadas ("casilla_origen""casilla_destino"), sin ningún tipo de letra que indique pieza, ni captura, etc. Juega probando un poco de todo: a capturar piezas, a promocionar un peón, el enroque, etc.

  4. Simula también que juegas con otra persona (desactiva el motor) con la intención, por ejemplo, de grabar la partida en un archivo PGN.

  5. Comete errores voluntariamente: introduce vía teclado el movimiento de una pieza que no es tuya, realiza un movimiento ilegal, etc.

  6. Saca conclusiones sobre las limitaciones que este sistema tiene.
    ¿Te sirve? Pues adelante... ¡Sigue leyendo!


    SolusChess: ¿QUÉ OFRECE?

    Mediante emulación de un teclado USB, cumple los siguientes requisitos:
  1. Envía comandos sencillos del tipo e2e4 ("casilla_origen""casilla_destino"), es decir, coordenadas del tablero (notación algebraica pura)

  2. Funciona con cualquier programa de ajedrez que admita entrada por teclado, ya sea para PC, Tablet, Smartphone, etc.

  3. De forma predeterminada, al arrancar, el programa opera de la siguiente manera (todos estos parámetros son configurables):
    • El jugador va con BLANCAS, y el turno es suyo.
    • El oponente es un ORDENADOR, por lo que el programa sólo enviará los movimientos del jugador, es decir, uno de cada dos.
    • En el enroque sólo se enviará el movimiento del Rey, omitiéndose el de la Torre. Por ejemplo se enviará "e1g1" en el enroque corto de las Blancas.
    • Envío de un retorno de carro (INTRO) después de cada movimiento.

  4. Después de arrancar, el programa permanece en Modo Configuración hasta que se realiza el primer movimiento válido (aquél en el que las casillas "destino" y "origen" son diferentes).

  5. Una vez ha comenzado el juego, una pieza se puede levantar y volver a dejar en su misma casilla sin que esto suponga ningún problema: simplemente se omite el movimiento respetándose el turno de juego.


    LIMITACIONES:

    SolusChess realiza exploraciones continuas del tablero para averiguar dónde hay pieza y dónde no hay. En base a cambios en la matriz de 64 casillas, envía los movimientos cuando corresponde, decide cómo hacerlo, detecta situaciones especiales como el enroque, la captura al paso, etc. Pero hay una serie de limitaciones intrínsecas al diseño que no se han de perder de vista:
  • No hay reconocimiento de piezas como en los tableros DGT, TASC, etc. con todo lo que eso conlleva.

  • Las piezas de ajedrez no pueden "arrastrarse" sobre el tablero. Los tableros DGT sí que lo permiten, gracias al reconocimiento de piezas y a un retardo introducido en el proceso de lectura.


    CONFIGURACIÓN:

    Mientras el tablero esté en MODO CONFIGURACIÓN (desde unos 4 segundos después de ser enchufado al USB hasta que se realice sobre el tablero el primer movimiento válido), el programa "escuchará" todos aquellos movimientos que consistan en levantar una pieza y volverla a dejar en la misma casilla, lo que provocará la configuración de ciertos parámetros.

    Es posible volver al Modo Configuración en cualquier momento mediante la pulsación del botón NUEVO JUEGO (si se ha instalado).

    Algunos de estos parámetros también son configurables mediante la pulsación de un botón, en el caso de haber realizado el conexionado adecuado: ver sección Placa de desarrollo USB "Teensy".



PARÁMETRO
PIEZA
(levantar y bajar)
VALOR PREDETERMINADO
ACCIÓN
INVERTIR TABLERO
Torre izquierda del oponente
(inicialmente H8)
Jugador con Blancas (esta casilla H8)
Selecciona esta casilla como A1, es decir, se invierte el tablero para jugar con Negras en el lado del jugador.

ELEGIR OPONENTE Rey o Dama del oponente
Jugador vs Ordenador
De forma predeterminada sólo se envían los movimientos del jugador. Cambiando esta opción se pasa a modo "Jugador vs Humano", y se enviarán todos los movimientos realizados para, por ejemplo, poder grabar un archivo PGN.

ENVIAR "INTRO" DESPUÉS DE MOVIMIENTO
Torre derecha del oponente
(inicialmente A8)
ACTIVADO
Mediante esta opción se puede configurar el programa para que envíe un "retorno de carro" (INTRO) después de cada movimiento. Hay programas de PC que lo necesitan y otros que no.

NO ENVIAR MOVIMIENTO DE LA TORRE EN ENROQUE Torre derecha del jugador
(inicialmente H1)
ACTIVADO La mayoría de programas de PC esperan, en el enroque, que se les envíe solamente el movimiento del rey, y así lo hará el tablero de forma predeterminada. Por ejemplo, en el enroque corto de las Blancas se enviará solamente "e1g1".
Desactivando esta opción se enviarán también los movimientos de la Torre en el Enroque. En el ejemplo, "e1g1" seguido de "h1d1".



    JUGANDO:

  • CAPTURA: a partir de la versión 2 de SolusChess, la captura se puede realizar de forma natural: en el orden que le sea más cómodo al jugador. Lo mismo se aplica a la captura "al paso".

  • PROMOCIÓN: depende totalmente del programa de ajedrez de PC utilizado. En unos es tan sencillo como mover el peón a la última fila, a continuación se le sustituye por la pieza nueva, y se indica la pieza elegida en el programa de PC: en Fritz por ejemplo la elección se realiza mediante un cuadro de diálogo.
    En Arena Chess GUI, en cambio, es diferente: este programa de PC espera recibir un comando del tipo "g7g8Q". En este caso la solución sería mover el peón normalmente, sustituirlo por la pieza nueva, y después pulsar en el teclado la letra correspondiente ('Q' para la Dama, en el ejemplo). También se podría realizar el movimiento con el ratón.

  • ENROQUE: se ha de realizar con total normalidad, porque el programa detecta el enroque de forma automática y realiza dos correcciones: omite el envío del movimiento de la Torre (configuración por defecto), y evita que se produzca una desincronización en el turno (ya que el mismo jugador mueve dos veces seguidas).

  • ESTABLECIENDO POSICIÓN: es posible disponer las piezas sobre el tablero de una forma determinada para estudiar una partida o bien continuar una ya empezada. Para ello conviene desenchufar el cable USB del tablero, disponer las piezas sobre éste y realizar la misma disposición en el programa de ajedrez de PC, haciendo que corresponda el turno de juego. A continuación se enchufará el cable USB para, pasados unos 4 o 5 segundos, continuar jugando con normalidad. Si se ha instalado el pulsador NUEVO JUEGO es mucho más sencillo: basta con disponer las piezas correctamente sobre el tablero y en el programa de PC, haciendo coincidir el turno, y pulsar dicho botón.

  • CORRIGIENDO ERRORES: en cualquier momento se puede corregir un error sobre el tablero para, a continuación, pulsar el botón RESTABLECER (si se ha instalado). Este botón, además de realizar una nueva exploración de la posición de las piezas, cambia el turno, por lo que se tendrá que pulsar un número par de veces si se quiere dejar como estaba. En cuanto al programa de PC, unos permiten el borrado de los últimos comandos introducidos mediante la tecla "Retroceso" (Arena GUI), otros mediante la tecla "Suprimir" (Fritz), etc.


    CONTROLES:

  • PROGRAMAR (Program): realiza la misma función que el minipulsador integrado en el módulo Teensy, esto es, reinicia el microcontrolador y lo pone en modo "programación". Evita tener que desmontar el tablero para acceder al módulo Teensy cada vez que queramos reprogramarlo.

  • RESTABLECER (Re-instate): en ciertas ocasiones el programa SolusChess se puede "perder", porque hemos cometido un error al mover la pieza, o las hemos tirado, o el programa de PC no ha entendido un movimiento, etc. Este pulsador viene a ser un "compongo" mediante el cual el programa vuelve a hacer una exploración completa del tablero para saber dónde hay piezas y dónde no. Además cumple otra función importante, y es que cambia de lado el turno de juego, porque he comprobado que muchos errores se producen por desincronización del turno cuando estamos jugando contra el PC. Si no interesa cambiar de turno se pulsa una segunda vez y solucionado, es decir, pulsando un número par de veces dejaremos el turno como estaba. El cambio de turno que provoca el uso de este control, no se debe utilizar para "invertir el tablero" (Flip Board).

    A nivel interno el programa realiza los siguientes cambios:

    • Elimina los movimientos no completados
    • Reinicializa la detección de enroque
    • Escanea de nuevo el tablero
    • Intercambia el turno de juego


  • NUEVO JUEGO (New Game): permite reiniciar el programa para comenzar una partida nueva y además activa el "Modo Configuración".

    A nivel interno el programa...

        Mantiene SIN CAMBIAR los siguientes parámetros:
    • Oponente (ORDENADOR/HUMANO)
    • Envío de INTRO (SÍ/NO)

       
    Realiza los siguientes cambios:
    • Elimina los movimientos no completados
    • Reinicializa la detección de enroque
    • Escanea de nuevo el tablero
    • Establece Jugador=BLANCAS
    • Establece Turno=JUGADOR
    • Activa el Modo Configuración


  • INVERTIR TABLERO (Flip Board): intercambia las casillas A1 y H8, es decir, permite jugar con Blancas o con Negras.

  • SELECCIONAR OPONENTE (Select Opponent): permite elegir entre un oponente "HUMANO" o un "ORDENADOR". La función de esta opción es decidir si el programa ha de enviar sólo el movimiento del Jugador o también el del Oponente, permitiendo, en este último caso, grabar la partida para su posterior análisis.

  • ACTIVAR INTRO (Toggle ENTER): para elegir si queremos enviar un retorno de carro (INTRO) después de cada movimiento. Hay programas de ajedrez que lo necesitan y otros que no.

  • RESERVADO (Reserved): control reservado para funciones experimentales del programa SolusChess.

  • LEDs: un LED instalado en el lado del jugador y otro en el lado del oponente nos puede ayudar a saber de quién es el turno, evitando así cometer un error, sobre todo cuando jugamos contra una computadora. Además he aprovechado para utilizarlos como indicadores (para dar feedback) cuando actuamos sobre algún parámetro de la configuración o sobre ciertos pulsadores.

Teensy 2.0

04-junio-2014
soluschess_2.0.hex


Teensy++ 2.0

04-junio-2014
soluschess_2.0_pp.hex



    Programar el microcontrolador es muy sencillo con la siguiente aplicación, que no requiere instalación:



        PRIMEROS PASOS:

        Antes de empezar a pelearte con un programa de ajedrez en concreto, es aconsejable probar con un sencillo editor de texto. Abre el editor, enchufa el tablero y experimenta.

    Recuerda: por defecto SolusChess no envía los movimientos del "oponente", pues se supone que
    juegas contra un programa de ajedrez de PC y éste ¡no quiere recibir sus propios movimientos!


         UTILIZANDO ARENA CHESS GUI CON SolusChess

        Página oficial: Arena Chess GUI

        El programa Arena se ha de configurar de la siguiente manera para "escuchar" lo que le envíe SolusChess:

    Activa el teclado con la opción de evaluar SÓLO los movimientos completos.


        Y controla lo que realmente está recibiendo Arena mirando el recuadro de abajo a la derecha. Puedes entender qué está fallando con solo echar un vistazo a ese recuadro:

    Un peón blanco llega a la última fila y SolusChess envía "g7g8", pero Arena espera algo más...


    Mediante el teclado pulsando "Q" (o "D" si lo tenemos configurado
    en español), le indicamos que queremos promocionar a Dama.