0. Componentes y programación necesaria para instalación del sensor de reconocimiento de color GY-31 TCS230 TCS3200 y Arduino UNO

Componentes requeridos:

{Product:2000}{Product:1281}

I. Cómo utilizar un sensor de reconocimiento de color GY-31

Este corto tutorial explica como poder detectar el movimiento de individuos cuando pasan por el sensor gracias a nuestra placa Arduino y un sensor de movimiento HC-SR501. Con el siguiente código de ejemplo, puede leer el sensor y controlar el LED integrado del Arduino (conectado al pin 13). Este código también se puede usar para controlar relés simples para encender o apagar una luz más grande.

Para obtener más información sobre productos o sus descripciones técnicas entre en nuestra web Solectro Shop.

II. Procedimientos experimentales

Conexión

El módulo se alimenta directamente de Arduino, así que no necesitamos una fuente de energía externa. Los pines están conectados según la tabla:

Pin del sensor

Pin de Arduino UNO

VCC

5V

S1

D4

S0

D3

LED

5V

GND

GND

S3

D6

S2

D5

Out

D2

 

Los otros dos pines del módulo del sensor se conectan a la sonda de medición mediante los cables suministrado, como se muestra en el siguiente diagrama, mediante cables dupont de manera directa o a través de una protoboard:


 

Operación

EL TCS3200 es un sensor óptico que permite detectar el color que capte frente a él del objeto. Internamente, el TCS3200 está formado por una matriz de fotodiodos de silicona junto con un conversor de frecuencia, en un único integrado CMOS. Podemos emplearlo para reconocer el color de una tarjeta o un objeto, y guiar a un robot en un recorrido. En el siguiente ejemplo realizamos la lectura del TCS3200. Para ello empleamos la función PulseIn para determinar la duración del pulso recibido por el sensor.

Realizamos el proceso para cada color, y empleamos los valores obtenidos para clasificarlo como rojo, azul o verde.

Abre un nuevo sketch y pega el siguiente código:

//VCC——5V  

//GND——GND

//S0——D3  

//S1——D4

//S2——D5  

//S3——D6

//OUT——D2

 

const int s0 = 8;

const int s1 = 9;

const int s2 = 12;

const int s3 = 11;

const int out = 10;

 

byte countRed = 0;

byte countGreen = 0;

byte countBlue = 0;

 

void setup() {

   Serial.begin(9600);

   pinMode(s0, OUTPUT);

   pinMode(s1, OUTPUT);

   pinMode(s2, OUTPUT);

   pinMode(s3, OUTPUT);

   pinMode(out, INPUT);

   digitalWrite(s0, HIGH);

   digitalWrite(s1, HIGH);

}

 

void loop() {

   getColor();

   Serial.print("Red: ");

   Serial.print(countRed, DEC);

   Serial.print("Green: ");

   Serial.print(countGreen, DEC);

   Serial.print("Blue: ");

   Serial.print(countBlue, DEC);

 

   if (countRed < countBlue && countGreen > 100 && countRed < 80)

   {

      Serial.println(" - Red");

   }

   else if (countBlue < countRed && countBlue < countGreen)

   {

      Serial.println(" - Blue");

   }

   else if (countGreen < countRed && countGreen < countBlue)

   {

      Serial.println(" - Green");

   }

   else {

      Serial.println("-");

   }

   delay(300);

}

 

void getColor()

{

   digitalWrite(s2, LOW);

   digitalWrite(s3, LOW);

   countRed = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);

   digitalWrite(s3, HIGH);

   countBlue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);

   digitalWrite(s2, HIGH);

   countGreen = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);

}