Colorduino

Grupo 3 – Campus Madrid


José Manuel Loeches Ruiz
Inés de Blas Ruiz
Alejandro Sánchez Torrico


Índice
1. Introducción.
2.Componentes utilizados.
3. Presupuesto.
4. Funcionamiento.
5. Problemas encontrados.
6. Mejoras.
7. Vídeo, presentación y código.

1. Introducción

Nuestro proyecto, Colorduino, se caracteriza por ser capaz
de detectar y clasificar colores (en nuestro caso, funciona con pequeñas
pelotas de goma de colores rosa, verde y azul). La estructura ha sido fabricada
con madera a mano, y está controlada por una aplicación móvil, que explicaremos
más adelante, que sirve para iniciar el proceso de clasificación, y también
como interfaz, pues muestra el color detectado y la cantidad de elementos
detectados, así como un contador con las pelotas de cada color detectadas. 


En el piso de arriba de la estructura hay una plataforma
cuadrada de madera, con un hueco para introducir una pelota, que rota entre
tres posiciones. Una vez se coloca una bola (posición 1), Colorduino detecta su
color (posición 2) y, dependiendo del resultado, mueve el tobogán de la
estructura en dirección al recipiente correspondiente al color detectado, y la
pelota vuelve a moverse en el piso de arriba para caer por el tobogán (posición
3). La aplicación Android registra el resultado, y vuelve a solicitar la
colocación de una pelota para volver a iniciar y repetir el proceso.

A continuación, explicaremos los componentes que hemos
utilizado y el dinero que hemos invertido en cada uno de ellos, así como una
descripción de los problemas que hemos tenido y las soluciones que hemos
aportado. Por último, hablaremos brevemente de las formas en las que nuestro
proyecto podría ser mejorado.

2. Componentes utilizados

Hemos utilizado 2 motores servo, uno para mover el tobogán y
otro para el desplazamiento de las bolas, el desplazamiento de estos en función
del PWM, es decir en función de la anchura del pulso gira hacia un sentido u
otro.


Para que el movimiento del servo sea suave, hemos utilizado
un bucle for, el cual va moviendo el servo poco a poco con unos delays cortos,
como se puede ver la imagen presentada a continuación:


En cuanto al sensor de color, la conexión con el Arduino es
la siguiente:





El funcionamiento de este componente es algo complejo, está
formado por un array de 4 grupos de fotodiodos, 3 de ellos con filtro (colores
rojo, verde y azul) y uno sin filtro. El reconocimiento del color consiste en
transformar la luz en frecuencia y es programable utilizando las 4 entradas de
configuración (desde s0 a s3):


Hemos puesto a s0 el valor 0 y a s1 el valor el 1 para que
la escala de la frecuencia sea del 20%.



Posteriormente vamos cambiando los valores de s2 y s3 para la lectura
de los distintos colores





En la figura anterior vemos la función implementada para la
detección de colores.


Este es el esquema de alimentación utilizado en el proyecto,
que consta de una pila de 9v para alimentar el Arduino y un porta pilas que
proporciona 6 voltios para alimentar los servos y un interruptor para poder
encender y apagar los servos.


Módulo
Bluetooth: Esquema de conexión

La
siguiente imagen muestra el esquema de conexión del Arduino con el módulo
Bluetooth. Se observa que el módulo Bluetooth transmite los datos por el TXD y
el Arduino recoge estos datos utilizando el pin 10, mientras que el Arduino
emplea el pin 11 para transmitir los datos y el módulo Bluetooth los recoge con
RXD.




3. Presupuesto

Cantidad
componente
gasto total
1x
Portapilas Aerzetix
3.99
1x
portapilas 9V
conexión Arduino
4.99
1x
Cables Arduino
7.99
2x
Servor Tamaño
standard
24
1x
HC-05 Wireless
Bluetooth   
8.07
1x
Serreta y pelos para
madera
10
1x
Madera
2
1x
Pilas AA
2.5
1x
pila 9v
3.8
1x
lijas
2
total
69.34
Material comprado pero finalmente no forma parte de
la solución final por sustitución de otros modelos como mejora al proyecto
Cantidad
componente
gasto
2x
Micro Digital Servo
16



















4. Funcionamiento

Una
vez encendido el interruptor, los motores hacen un giro simulando que cogen una
bola y se colocan en la posición inicial. Después procedemos a utilizar la
aplicación del móvil, que necesita que previamente estén vinculados el móvil y
el módulo Bluetooth. A través de la aplicación se conectaría el móvil al módulo
Bluetooth.

A
continuación, se introduce una bola en el agujero y se pulsa Start, para que
los motores comiencen el movimiento de rotación y trasladen la bola hasta el
sensor, y finalmente hasta el tobogán, por el que se deslizará cayendo en el
vaso adecuado, en función del color de la bola.

Cuando
se detecte el color de la bola se informará a la aplicación del color
detectado, que actualizará los contadores de bolas correspondientes y mostrará
una sección de la pantalla con el color de la bola. Introduciríamos la
siguiente bola y sería necesario volver a pulsar Start para que la bola se
traslade hasta el tobogán.




5. Problemas encontrados

Durante la realización del proyecto, nos hemos encontrado
con una serie de problemas que listamos a continuación, así como las soluciones
a esos problemas:
·        
Sensor de
colores:
iluminación: cuando
comenzamos a probar nuestro sensor de colores, al registrar las salidas de los
valores RGB en el Monitor Serie de Arduino, nos dimos cuenta de cómo variaban
estos valores dependiendo del lugar en el que estuviéramos trabajando,
principalmente por la iluminación de cada lugar. Para solucionarlo, recubrimos
el sensor con un poco de cartulina negra, para evitar en medida de lo posible
el problema de los valores RGB cambiantes, protegiendo las luces del sensor. De
esta forma, el impacto de las distintas iluminaciones de los ambientes en los
que trabajamos se vio bastante reducido.
·        
Sensor de
colores: colocación:
para que el sensor de colores registre bien el color
del objeto a detectar, dicho objeto debe recubrir las cuatro luces del sensor,
de forma que reciba la información correcta. Por lo tanto, debimos buscar
objetos del tamaño adecuado para utilizar en el proyecto (las pelotas de
colores en nuestro caso, de aproximadamente 4 cm de diámetro); y también buscar
una ubicación adecuada del sensor en el diseño final.
·        
Motores
servo: rotación:
al principio de nuestro proyecto, cuando empezamos a
intentar comprender el funcionamiento de los motores servo, no entendíamos bien
el criterio del propio motor a la hora de elegir una posición inicial. También
tuvimos problemas al adaptar esta circunstancia con las rotaciones exactas
necesarias para el correcto funcionamiento del proyecto final. A base de
trabajar con los motores  y realizar
varias pruebas acabamos consiguiendo el resultado esperado.
·        
Motores
servo: peso:
para realizar los desplazamientos precisos (mover la bola en
el piso de arriba y el tobogán), en principio, utilizamos motores micro-servo.
Sin embargo, al empezar a unir toda la estructura, tuvimos problemas, ya que
las estructuras de madera, e incluso el peso de las bolas de colores, eran
demasiado para esos servos, que se resentían poco a poco y acababan por
romperse. Finalmente, optamos por utilizar unos servos más grandes, a los que
podíamos además atornillar las estructuras de madera, que sí nos ofrecieron los
resultados esperados.
·        
Montaje:
el montaje del proyecto también resultó problemático, ya que construimos la
estructura desde cero. El principal problema fue que algunas de las ideas que
teníamos inicialmente tuvieron que ser cambiadas sobre la marcha, debido a
problemas que sobre el papel no existían, pero de los que nos dimos cuenta una
vez comenzamos con el montaje. Por lo tanto, tuvimos que desmontar partes de la
estructura, modificar algunos diseños y construir otros nuevos que se adaptaran
a lo que teníamos en mente.
·        
Bluetooth: el módulo Bluetooth y el Arduino
establecen una comunicación serie, al igual que el Arduino y el ordenador a
través del puerto USB y los pines 0 (RX) y 1 (TX) del Arduino. Para poder hacer
un mejor desarrollo de la práctica se decidió poder depurar el código
utilizando el ordenador, por ello, necesitábamos mantener las dos
comunicaciones: Arduino y el ordenador para depurar y la comunicación entre el
Arduino y el módulo Bluetooth. 
La solución al problema descrito anteriormente se realizó empleando una librería llamada SoftwareSerial, que permite establecer una comunicación serie con otros pines digitales del Arduino. Se optó por utilizar el pin 10 para que recibiese el Arduino los datos (RX), en lugar del pin 0 que teníamos en un principio, y el pin 11 para que el Arduino los enviase (TX), en lugar del pin 1. Otro problema con el Bluetooth ha sido la recogida de la información enviada por el Arduino, únicamente comprobaba si se cumplía la primera condición y no el resto. La solución al problema fue sencilla, recoger la información que recibe la aplicación en una variable y hacer las comparaciones usando esa variable.

6. Mejoras

Una
posible mejora sería la incorporación de un tubo en el que estén almacenadas
las bolas. Aunque inicialmente se contempló esta idea, no se llevó a cabo por
la inestabilidad de la estructura y el peso de las bolas, que en un principio
serían más pequeñas y pesarían menos, pero debido a que el sensor era
defectuoso tuvimos que aumentar su tamaño. Sin embargo, consideramos que
reforzando la estructura se podría conseguir esa estabilidad que a día de hoy
carece y podríamos implementar esta mejora.
La
aplicación sería también otro aspecto susceptible a ser mejorado. En función de
la utilidad del producto, la aplicación puede ser adaptada para satisfacer
mejor las necesidades de los usuarios y hacer la interfaz más amistosa y
usable. Por ejemplo, si el producto es un juguete para niños destinado al aprendizaje
de los colores y las matemáticas, se introducirían más colores y animaciones
para captar su atención. Por otro lado, si el producto está destinado al
inventario, si utilizaría un estilo más minimalista y podría proporcionar más
información como por ejemplo un historial de pasados inventarios.
Inicialmente
se pensó incluir más colores, pero se desechó esta idea por la limitada
rotación del servo. Por lo tanto, ampliando esta rotación se podría
materializar esta mejora.
Para
proporcionar más dinamismo podríamos aumentar la velocidad reduciendo los
retardos.
Al
problema de la iluminación le dimos una solución añadiendo un trozo de
cartulina negra al sensor. La mayoría de las ocasiones detecta correctamente
los colores, pero hay veces que falla. Deberíamos incluir algún mecanismo, como
incorporar unos focos o cerrar la estructura, para que la intensidad de la luz
sea siempre la misma.

7. Vídeo, presentación y código


También te podría gustar...

Deja un comentario

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