Skip to Content

Interfaz de un sensor de color RGB TCS34725 con Arduino - Una guía completa

Interfaz de un sensor de color RGB TCS34725 con Arduino - Una guía completa

Un sensor de color RGB le ayuda a detectar con precisión el color de un objeto en sus proyectos Arduino. Hay muchas aplicaciones de los sensores de color en aplicaciones industriales también. 

Clasificar los paquetes en función del color, detectar la frescura de los artículos perecederos, detectar y corregir el color de la iluminación, y conducir la luz ambiental en función del contenido de la pantalla, son algunos ejemplos de aplicaciones de los sensores RGB TCS34725.

Este artículo le mostrará todos los pasos necesarios para construir un proyecto Arduino con el sensor RGB TCS34725.

En las siguientes secciones, he presentado una guía paso a paso para conectar el sensor a una placa Arduino (Arduino UNO).

En las secciones posteriores, encontrarás el código de ejemplo que puedes utilizar para comunicarte con el sensor de color RGB.

Comencemos.

Componentes necesarios para construir un proyecto de sensor de color Arduino y TCS34725 RGB

Componentes de hardware 

Software

Makerguides.com participa en el Programa de Asociados de Amazon Services LLC, un programa de publicidad de afiliados diseñado para proporcionar un medio para que los sitios ganen honorarios de publicidad mediante la publicidad y los enlaces a productos en Amazon.com.

¿Qué es un sensor RGB?

RGB son las siglas de Rojo, Verde y Azul. Un sensor RGB puede detectar independientemente la intensidad de los colores rojo, verde y azul. También puede medir el brillo. 

El sensor de color lo consigue utilizando un filtro de color RGB en su entrada. El filtro de color rojo sólo permite que pase el color rojo.

La luz incide sobre el fotodiodo, cuya corriente variará en función de la cantidad de luz incidente. 

La corriente se convertirá en un voltaje mediante un acondicionador de señal que se puede leer con un ADC.

Este es el diagrama de bloques del sensor TCS34725.

diagrama del sensor TCS34725

El filtro de bloqueo IR del TCS34725 ayuda a detectar la luz ambiental. La detección de la luz ambiental se utiliza en los teléfonos cuando se establece el nivel de brillo en Auto.

También puedes encontrar aplicaciones en CTs y Pantallas cuyo brillo se adaptará automáticamente a su ambiente. 

El TCS34725 tiene una interfaz I2C (SDA y SCL) que se conecta a la placa Arduino. El IC también tiene un pin de salida de interrupción opcional que se puede utilizar para interrumpir Arduino.

Un ejemplo de aplicación es una máquina clasificadora de frutas. El color será diferente si una fruta no está madura.

El Arduino puede utilizar esta interrupción para activar un solenoide que deje pasar la fruta sin madurar a otro transportador. 

El sensor admite un estado de reposo en el que el consumo típico de corriente es de 2,5 uA. 

Por lo tanto, el sensor de color TCS34725 es una excelente opción para aplicaciones alimentadas por batería.

Sensor de color TCS34725

La siguiente tabla muestra la descripción de los pines del sensor de color IC - TCS34725.

Placa de sensores de color TCS RGB con pinout
Placa de sensores de color TCS RGB con pinout
Número de pinNombre de la clavijaTipo de clavijaDescripción
1VDDPotenciaTensión de alimentación
2SCLEntradaSeñal de reloj I2C
3GNDPotenciaReferencia de tierra de la alimentación
4NC-No conectar
5INTSalidaSeñal de interrupción de drenaje abierto
6SDAEntrada/SalidaSeñal de datos I2C

Puede encontrar la hoja de datos del sensor de color TCS34725 aquí.

Instrucciones paso a paso para conectar un sensor de color TCS34725 a Arduino

La siguiente sección ofrece detalles paso a paso para conectar el sensor de color a tu placa Arduino. 

Hay varias versiones de los tableros, como se puede ver en la imagen de abajo.

La guía se aplica a todas las variantes de las placas de sensores RGB TCS34725.

¿Cómo conectar el sensor RGB TCS34725 con Arduino?

Aquí están los detalles necesarios para completar el Arduino y el sensor de color TCS34725 RGB.

La conexión final tendrá el aspecto de la siguiente imagen.

Cómo conectar el sensor RGB TCS34725 con Arduino

Paso 1: Comencemos con el sensor de color TCS34725

Comencemos con el sensor de color TCS34725

Hay siete pines disponibles en este módulo en particular. Dependiendo del módulo que tengas, el número de pines puede variar. Asegúrese de hacer coincidir los pines de acuerdo con el módulo. 

Paso 2: Conectar el pin GND del módulo sensor de color con Arduino

Conecta el pin GND del Arduino (hay muchos pines GND, puedes elegir el que te facilite la conexión) al pin GND del sensor RGB.

Conecta el pin GND del módulo sensor de color con Arduino

Comience siempre con la conexión a tierra para que ambas placas tengan una referencia común antes de realizar otras conexiones.

Paso 3: Conectar la línea de datos I2C a continuación

Conecta el pin A4 del Arduino al pin SDA del CI del sensor de color.

Conecte la línea de datos I2C a continuación

Paso 4: Conectar la línea de reloj I2C

Conecta el pin A5 del Arduino al pin SCL del CI del sensor de color (cable naranja en la imagen inferior)

Conecte la línea de reloj I2C

Una nota sobre las líneas I2C. Los pines A4 y A5 del Arduino tienen I2C como una de las funciones. Si se utiliza el I2C.

Puedes leer sobre los pines I2C y las funciones I2C de Arduino soportadasaquí.

Paso 5: Conectar la clavija de alimentación

Conectar la clavija de alimentación

Conecta el pin del sensor etiquetado como VIN al pin de 5 V del Arduino. El módulo del sensor de color RGB también proporciona 3,3 V.

Puedes dejar el pin de 3,3 V sin conectar en el sensor de color RGB. 

¡Felicidades! Ya has completado las conexiones necesarias entre el Arduino y el sensor de color RGB TCS34725.

Instalación de la biblioteca TCS34725 y ejemplos de código Arduino

En esta sección mostraré cómo instalar la biblioteca de Adafruit para el sensor de color RGB.

La biblioteca de Adafruit viene con un montón de buenos ejemplos que puedes editar fácilmente y aplicar a tus proyectos.

Comencemos.

Paso 1: Abrir el gestor de la biblioteca

Abra el IDE de Arduino, haga clic en el menú Herramientas. Selecciona "Manage Library" de las opciones disponibles.

Gestor de la Biblioteca Abierta

Paso 2: Buscar la biblioteca de Adafruit

Una vez que escriba "TCS" en la barra de búsqueda, encontrará una lista de bibliotecas disponibles que coinciden. Seleccione la "Adafruit TCS34725" de las opciones de la biblioteca.

Haga clic en el botón de instalación para instalar la biblioteca Arduino.

Buscar la biblioteca de Adafruit

Una vez instalado, puede ver el estado como "instalado", como se muestra en la figura siguiente.

estado de la instalación

Paso 3: Abrir el código de ejemplo de Adafruit

Enhorabuena por haber instalado la biblioteca de Adafruit con éxito. Para ver los códigos de ejemplo disponibles, por favor, consulte la siguiente imagen.

Abrir el código de ejemplo de Adafruit
  1. Haga clic en Archivo
  2. Seleccione la opción Ejemplos
  3. Busca y localiza "Adafruit TCS34725" Ejemplo
  4. Haga clic en el ejemplo de Colorview. 

El ejemplo se abrirá en el IDE. El código se da a continuación.

#include "Wire.h"
#include "Adafruit_TCS34725.h"
 
// Pick analog outputs, for the UNO these three work well
// use ~560  ohm resistor between Red & Blue, ~1K for green (its brighter)
#define redpin 3
#define greenpin 5
#define bluepin 6
// for a common anode LED, connect the common pin to +5V
// for common cathode, connect the common to ground
 
// set to false if using a common cathode LED
#define commonAnode true
 
// our RGB -> eye-recognized gamma color
byte gammatable[256];
 
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);
 
void setup() {
  Serial.begin(9600);
  //Serial.println("Color View Test!");
 
  if (tcs.begin()) {
    //Serial.println("Found sensor");
  } else {
    Serial.println("No TCS34725 found ... check your connections");
    while (1); // halt!
  }
 
  // use these three pins to drive an LED
  pinMode(redpin, OUTPUT);
  pinMode(greenpin, OUTPUT);
  pinMode(bluepin, OUTPUT);
 
  // thanks PhilB for this gamma table!
  // it helps convert RGB colors to what humans see
  for (int i = 0; i < 256; i++) {
    float x = i;
    x /= 255;
    x = pow(x, 2.5);
    x *= 255;
 
    if (commonAnode) {
      gammatable[i] = 255 - x;
    } else {
      gammatable[i] = x;
    }
    //Serial.println(gammatable[i]);
  }
}
 
void loop() {
  float red, green, blue;
  tcs.setInterrupt(false);  // turn on LED
  delay(60);  // takes 50ms to read
  tcs.getRGB(&red, &green, &blue);
  tcs.setInterrupt(true);  // turn off LED
 
  Serial.print("R:\t"); Serial.print(int(red));
  Serial.print("\tG:\t"); Serial.print(int(green));
  Serial.print("\tB:\t"); Serial.print(int(blue));
 
  Serial.print("\n");
 
  analogWrite(redpin, gammatable[(int)red]);
  analogWrite(greenpin, gammatable[(int)green]);
  analogWrite(bluepin, gammatable[(int)blue]);
}

En el ejemplo de Colorview, leerá el color del objeto y manejará un LED RGB para representar el color detectado.

Este ejemplo utiliza un LED adicional que se conecta a los pines de Arduino, como se muestra en el código siguiente:

#define redpin 3
#define greenpin 5
#define bluepin 6

Los pines 3, 5 y 6 del Arduino UNO son compatibles con PWM.

Usted puede encontrar fácilmente los pines en el Arduino, que son compatibles con PWM (heloful en la conducción de valores analógicos a los LEDs para variar el brillo) mirando el símbolo "~" antes de la etiqueta del pin.

Aquí he mostrado un ejemplo:

los Arduino UNO son compatibles con PWM

La siguiente línea inicializa el objeto para manejar las funciones del sensor de color.

Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_50MS, TCS34725_GAIN_4X);

Puede leer los valores de color RGB en cada intervalo fijo utilizando el método getRGB, como se muestra en la línea de código siguiente.

  tcs.getRGB(&red, &green, &blue);

Una vez que tengas los valores RGB, puedes publicar la información del color en una pantalla o en un terminal o manejar el LED con el mismo color.

La ventana del terminal tendrá datos similares a la imagen que se muestra a continuación.

Estamos recreando el color del objeto usando un LED RGB. Las líneas de abajo conducirán el LED para que coincida con el color detectado.

  analogWrite(redpin, gammatable[(int)red]);
  analogWrite(greenpin, gammatable[(int)green]);
  analogWrite(bluepin, gammatable[(int)blue]);

Puedes convertir este código en un proyecto que valga la pena añadiendo tu lógica.

Si tienes alguna duda, siempre puedes dejar un comentario en la sección de comentarios.

Preguntas frecuentes sobre el sensor de color Arduino RGB TCS34725

En esta sección, obtendrá respuestas a las preguntas más frecuentes sobre el sensor de color RGB TCS34275.

Si su pregunta aún no ha sido respondida, por favor publique la pregunta en la sección de comentarios. 

1) ¿Cuáles son las aplicaciones de los sensores RGB?

Las aplicaciones de los sensores de color RGB son

  1. Control de la retroiluminación LED RGB
  2. Medición de la temperatura de color de la luz ambiental
  3. Medición de la luz ambiental para el control automático de la pantalla
  4. Análisis de fluidos y gases
  5. Verificación y clasificación del color del producto
  6. Automatización industrial y mucho más

2) ¿Cómo funciona un sensor de color RGB?

Un sensor de color RGB detecta la cantidad de componentes de luz roja, verde y azul en la luz.

El sensor tendrá tres filtros de color para separar los componentes R, G y B.

Para más información, consulta la sección de fundamentos del sensor RGB de este artículo. 

3) ¿Cómo se conecta Arduino al sensor de color RGB?

Puedes utilizar la interfaz I2C para conectar Arduino al sensor de color RGB TCS34275.

Dependiendo del tipo de sensor, es posible que tenga que utilizar la interfaz UART, I2C o SPI.

En el artículo se puede ver cómo se conecta un TCS34275 a un Arduino utilizando líneas I2C. 

4) ¿Puede Arduino detectar los colores?

Arduino puede detectar los colores cuando se utiliza un sensor de color junto con él.

El TCS34275 es un sensor de color RGB que permite ver rápidamente los colores de los objetos.

Los detalles de conexión, el código de ejemplo y el principio de funcionamiento de un sensor RGB se explican en las secciones anteriores. 

5) ¿Cuántos colores puede detectar un sensor RGB?

Los sensores de color RGB detectan la cantidad de colores rojo, verde y azul.

Como los tres colores pueden utilizarse con diferentes proporciones para crear muchos colores, los sensores RGB también pueden detectar varios colores. 

Con un sensor de color RGB de 8 bits, los colores rojo, verde y azul pueden tomar cualquier valor de 0 a 255.

Esto significa que, en total, podemos tener 256 * 256 * 256 = ¡16 millones de colores!

Por lo tanto, puede utilizar los sensores de color para detectar una vívida gama de colores en su próximo proyecto de detección de color.

Conclusión

En este artículo te he llevado a través de toda la información crítica necesaria para construir un proyecto de sensor de color Arduino. 

Creo que el artículo fue beneficioso y fácil de entender.

He utilizado el sensor de color RGB para algunos proyectos de demostración en los que el objetivo era detectar el color de la fruta para determinar si está totalmente madura o no.

El Arduino utilizó los datos del sensor de color para predecir la vida útil de las frutas. 

Me encantaría saber los proyectos que vais a construir utilizando el sensor de color de Arduino.

Por favor, facilite un enlace a los proyectos que cree a continuación. Me encantará ver sus proyectos en acción.

¿Has tenido algún reto al construir tus proyectos o alguna lección aprendida? Compártalo también con nosotros en la sección de comentarios.

Si te ha resultado útil este artículo, no olvides compartirlo con tus amigos.

Puede compartir con nosotros sus comentarios sobre el artículo para ayudarnos a mejorar los artículos en el futuro.

Por favor, háganos saber cuál es el próximo proyecto de Arduino que le gustaría leer.