La detección de color no es un proceso fácil, pero existen elementos que permiten acercarnos un poco al color que nuestros ojos ven, en este proyecto Arduino he querido compartir la prueba de un sensor de color cuya referencia es TCS3200.  Realmente este sensor lo que hace es detectar la intensidad de luz y convertirla en una frecuencia y lógicamente cada color refleja una intensidad diferente y por lo tanto una frecuencia diferente.

A continuación describiré ciertas características que debemos tener en cuenta cuando usamos este sensor de color. Debido a que es un sensor de bajo costo no tiene una gran precisión pero se acerca bastante a lo que queremos detectar y se obtienen resultados bastante satisfactorios.

Receive Updates

No spam guarantee.

¿Cómo se hace la detección de color con Arduino y una aplicación móvil?

Lo primero que debemos tener en cuenta es el factor ambiental, pues debido a que el sensor de color detecta intensidades de luz es necesario ajustar lo mejor posible este parámetro para que no afecte nuestra medición. Considero que este fue el principal reto en este proyecto, ya que ajustar la luminosidad con los LED de color blanco que vienen en el módulo es fundamental.

Picture 153Lo ideal es que los LED apunten al centro del color que se desea detectar, sin que estos LED iluminen directamente el centro del sensor, además se debe aprovechar al máximo la luminosidad y por esa razón, en este proyecto realicé un encerramiento alrededor del sensor en papel de color blanco, con el fin de obtener una luminosidad lo más homogénea posible sobre la superficie que se desea detectar.


Si observas detalladamente veras que los LED quedan alrededor del recubrimiento plástico que trae el  sensor de color, si por alguna razón dejas que estos LED sobrepasen esa base que cubre la zona de detección, no se detectara muy bien el color que estará en la superficie.

Picture 154Es importante tener en cuenta este aspecto porque de lo contrario el color puede detectarlo como muy claro o muy oscuro, e incluso los filtros del color Verde y Azul estarían en un límite en el cual un tono verde lo puede detectar como azul.

Por esa razón debes ajustar muy bien el tema de luminosidad para que exista una buena reflexión sobre la superficie del color.

 

El siguiente es un esquema del circuito, en este esquema  solamente falta describir la conexión del LCD pero de igual forma funciona sin el LCD conectado.

Circuito ColorApp

Como se observa en el circuito, el pin que lee la frecuencia es el 47, esto es debido a una recomendación que aparece en la página de ELECTRONIC PROJECTS, en donde podemos descargar la librería FreqCount.h del siguiente LINK. Usando el pin 47 la frecuencia es más precisa porque este pin está en el puerto Digital del Arduino Mega y la librería FreqCount requiere una entrada que sea de niveles digitales para su funcionamiento.

Ahora básicamente el funcionamiento consiste en tomar lecturas de frecuencia cada determinado tiempo a través del pin 47 del Arduino Megay estas lecturas dependerán de la configuración que le demos a los pines s2 y s3 del sensor de color, que son los que determinan el filtro con el cual se toma la muestra de la frecuencia y así se obtiene el valor de cada uno de los filtros que componen el sistema RGB. Los pines s0 y s1 simplemente se ponen en estado alto todo el tiempo y los LED que iluminan la superficie se dejaran activados también.

Aquí les comparto el LINK con el código para este proyecto arduino y a continuación les comparto las imágenes de los bloques de programación de la aplicación movil en App Inventor.

 

En la aplicación de App Inventor se realizó la declaración de 4 variables, las cuales se asignaron al color Rojo, Verde y Azul y una variable temporal para usarla en un retardo para recibir la información de cada color con un espacio de tiempo entre un dato y otro a través del puerto serial.

Se construyeron 3 bloques para recibir la información del color con cada filtro a través del módulo bluetooth y luego se realizó una separación entre bloque y bloque con el temporizador, adicionalmente se asigna el tono que cada filtro añade al color definitivo que estamos leyendo, este tono está representado por un valor de 0 a 255 para cada filtro y luego de recibir la información de cada filtro a través del módulo bluetooth, se combinan para mostrar el color resultante en un canvas.

Para que sea un poco más claro pondré el siguiente ejemplo:

Supongamos que vamos a realizar la secuencia para detectar un color de tono amarillo oscuro, el primer paso que se realiza en Arduino es configurar el filtro Rojo y este filtro entrega un valor de 235, lo almacena en una variable y luego lo envía a traves del modulo bluetooth, luego se configura el filtro Verde y este da un valor de 177, se almacena en otra variable y luego se envía a traves del bluetooth, por último se configura el filtro Azul y este entrega un valor de 5, se almacena en una variable y se envía a través del módulo bluetooth. Ya con estos tres valores recolectados en la aplicación, se combinan en un espacio de la pantalla de teléfono móvil que llamamos CANVAS al cual se le entregan los tres valores de los filtros y este canvas muestra el color resultante.

El siguiente video muestra el funcionamiento de la aplicación movil comunicándose por bluetooth con el sensor de color TCS3200 que está conectado a un Arduino Mega 2560.

 

 

Los materiales que hemos empleado en este proyecto Arduino son:

Arduino Mega 2560

LCd 4X20

Modulo bluetooth HC-06

Sensor de Color TCS3200

Cables de conexion

Espero les haya gustado este pequeño proyecto Arduino, que muy seguramente les servira para que sus proyectos sean cada vez mas completos,  les doy las gracias por visitarme y hasta una proxima ocacion.