Empochados

EMPOCHADOS 
GRUPO 7
David Vacas Miguel (GII+GIS) 
Pedro Redondo Rabanal (GII+GIS) 
Miguel Angel Roldán Alcalá (GII+GIS)

Índice

1.- Introducción. 
2.- Componentes. 
3.- Diseño hardware.
4.- Diseño Software. 
4.1.- Diseño de Arduino
4.2.- Diseño de Visión Artificial
4.3.- Unión de ambas partes
5.- Problemas y soluciones. 
6.- Posibles Mejoras. 
7.- Enlaces de Interés. 
1. Introducción

Empochados se trata de un sistema que permite el desarrollo de un juego de
cartas conocido como la pocha. Se juega con una baraja española y en el que los
jugadores tienen que pasar una serie de rondas, consiguiendo la victoria aquel que
consiga tener más puntos.
Nuestro proyecto tiene tres pilares básicos, el primero de ellos es el juego
descrito anteriormente, otro de ellos es el de Arduino donde implementamos la lógica
del juego y el último es la visión artificial, implementada en Python y con la que
reconoceremos el palo de la carta en cada ronda, parte fundamental del juego.
El control del dispositivo es sencillo y se realiza mediante cuatro botones, que
nos permitirán avanzar a lo largo de la partida así como puntuar a los jugadores.
Creemos que este dispositivo puede hacer menos tedioso el jugar a este juego.
2. Componentes
Placa Arduino                  Prestado
Cámara                                 24,95
Estaño                                   10,00
Termo contraíble                     1,89
Pulsadores                               9,45
LED Blanco                             1.40
Cable                                        2.15
Caja                                        19.83
Pantalla LCD con                            
módulo L2C                           13.99
Resistencias 10K                      0.48
Total                        83.14

3. Diseño Hardware

Las conexiones son las siguientes:
Cable rojo: Entrada de 5V.
Cable negro: Toma de tierra.
Cable marrón: SDA del módulo L2C (Pin A4)
Cable amarillo: SCL del módulo L2C (Pin A5)
Cable verde: Pin 2 de Arduino.
Cable naranja: Pin 4 de Arduino.
Cable azul: Pin 7 de Arduino.
Cable morado: Pin 8 de Arduino.
LED: Conexión a tierra y Pin 13.
4. Diseño Software
4.1. Parte de Arduino:
En esta parte del software, hemos implementado la lógica del juego.
Para ello hemos creado una máquina de estados, compuesto por 8
estados, los cuales se controlaran mediante los cuatro pulsadores de los
que disponemos. Además de esto, también se podrán modificar las
variables, con las cuales controlamos las apuestas y bazas ganadas por
cada jugador. Todo esto se actualizara al instante en la pantalla LCD que
nos servirá de salida del sistema.
Uno de los estados, es el del reconocimiento del palo de la carta que
pinta en cada ronda, usando técnicas de visión artificial.
4.2. Parte de Visión Artificial:
En la parte de visión, usamos el lenguaje Python y la librería Opencv
para conseguir reconocer el palo de la carta. Para ello, capturamos una
imagen con la cámara, la cual será procesada con MSER para diferenciar
entre los Ases, las figuras y las cartas normales. Una vez tenemos
clasificada la carta le pasamos una máscara para detectar el color de los
pixeles que componen la carta y según la proporción de pixeles de cada
color, podremos saber de qué palo es cada carta.
4.3. Unión de ambas partes:
Una vez tuvimos las dos partes implementadas y funcionando por
separado procedimos a la unión, para ello usamos la librería “Serial”.
Esta librería permite conectar Python con Arduino y que los dos se
puedan comunicar.
En la sección 7, ‘Enlaces de interés’, encontrarás el GitHub donde está el código
íntegro del proyecto.
5. Problemas y soluciones

Durante el desarrollo del proyecto hemos encontrado los siguientes problemas:
  • Detección del palo. A la hora de detectar el palo nos enfrentamos a la decisión de elegir el algoritmo que más se ajustase a nuestro proyecto. Tras mucho pensar decidimos que íbamos a usar el color de las cartas para detectar a que palo correspondían, el problema de esto es que es bastante sensible a los cambios de luz por lo que en ocasiones genera fallos.
  • Montaje de la maqueta. Como no somos muy hábiles a la hora de hacer manualidades, nos costó bastante conseguir diseñar y construir una maqueta que fuese tanto manejable, como óptima para nuestros intereses (condiciones de luminosidad, distancia cámara-carta, etc.)
  • Unión código Arduino con código reconocimiento. Tuvimos una cantidadenorme de problemas al unir una parte con la otra debido a factores como la colocación de la carta respecto a la cámara, la luminosidad o la transferencia de datos de Arduino a Python y viceversa. Este último problema se debía a que Arduino enviaba los caracteres convertidos en bytes y Python introducía una ‘b’ en la variable delante del carácter que le pasamos por Arduino, lo solucionamos hacien

6. Posibles mejoras
Creemos que las posibles mejoras que se podrían implementar son:
  • Optimización del algoritmo de reconocimiento. Como ya hemos comentado, nuestro algoritmo es sensible a los cambios de luz, aunque funciona perfectamente en condiciones óptimas de posición y luz, creemos que una buena mejora sería modificar el algoritmo para que los cambios de luz no nos afectasen tanto al reconocimiento del palo.
  • Independencia del ordenador. Debido a falta de medios, no hemos podido adquirir ningún módulo con la capacidad suficiente de cómputo como para ejecutar el programa Python que necesita el sistema. Pero creemos que sería una buena mejora ya que haríamos autónomo el dispositivo. 
  • Añadir juegos nuevos. Podríamos incluir la lógica de nuevos juegos y así conseguir que el dispositivo sea más completo y con mayor variedad.

7. Enlaces de interés

– Link al video de demostración:                  https://youtu.be/tRrnHNKi5LU
– Link al GitHub con el código:  https://github.com/dropelega/Empochados
-Presentacion:
http://prezi.com/oqh4oalxkoit/?utm_campaign=share&utm_medium=copy

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *