InicioTarjetas de DesarrolloArduino¿Cómo utilizar el Sensor Infrarrojo Emisor KY-005?

¿Cómo utilizar el Sensor Infrarrojo Emisor KY-005?

Te mostraremos como utilizar el Sensor Infrarrojo Emisor KY-005, que por medio de led IR de 5mm convertirá la energía eléctrica en luz infrarroja para poder transmitir paquetes de bits a una frecuencia entre 38 KHz.

Primero probaremos que nuestro sensor esté funcionando correctamente y posteriormente recibiremos la señal emitida en el receptor infrarrojo KY-022.

Componentes y diagrama de conexión

Este primer circuito nos ayudará a saber si el módulo KY-005 está emitiendo datos. Ya que el funcionamiento de estos dispositivos se basan en un patrón particular vinculado con la frecuencia de modulación (en este caso 38KHz) que nos ayudará a encender y apagar el led. Por ejemplo, en un control remoto tiene un código particular entre 12 a 32 bits por cada una de las teclas que lo componen y emite ese código cada vez que se presione la tecla.

Para realizar nuestro proyecto necesitaremos:

La conexión entre nuestros componentes es la siguiente:

sensor infrarrojo tutorial ky-005

Código en Arduino para probar módulo KY-022

Para el siguiente código en el IDE Arduino, se requerirá instalar la librería IRremote. El cual lo podrás instalar desde el Gestor de Librerías; que se encuentra en:

Programa>Incluir Librería >Administrar Bibliotecas

A continuación buscaremos la librería para IRremote:

sensor infrarrojo tutorial ky-005

Una vez instalada la librería, podremos realizar la programación de nuestro sensor IR para enviar y recibir códigos en diversos protocolos como:

  • NEC
  • Sony SIRC
  • Philips RC5 y RC6
  • Protocolos sin formato

Para este sencillo caso utilizaremos comandos para enviar datos bajo el protocolo NEC, que tiene las siguientes características:

  • Longitud de 8 bits de dirección y 8 bits de comando.
  • Tanto la dirección como el comando son enviados dos veces a modo de CRC.
  • La primera vez los bits originales y la segunda los mismos pero negados.
  • Los pulsos son por modulación de amplitud.
  • La frecuencia portadora es de 38kHz.
  • La longitud de un Bit “0” es de 1.12ms y la de un “1” es de 2.25ms.
  • En total de transmiten un bit de Start de 9ms+4.5ms=13.5ms mas 32 bits de datos.
#include <IRremote.h>       //Librería para IR

IRsend irsend;            //Se transmitirán paquetes remotos IR por medio de la variable irsend,
                          //automáticamente utiliza el pin3 como salida para que el LED envié el paquete de datos
int b = 11;               //Push button en el pin 11
int valor;                //Variable para el valor ALTO/BAJO del push button

void setup()
{
  Serial.begin(9600);                   //Iniciando puerto serial en 9600 bauds
  pinMode(b, OUTPUT);                   //declaración del push button como salida
}

void loop() {
  valor = digitalRead(b);               //El valor guardara el estado del push button HIGH/LOW
  if (valor == HIGH) {                  //En caso de que sea pulsado el push button..
    irsend.sendNEC(0x00000001, 32);     //se enviara un paquete de 32 bits por el protocolo NEC
    Serial.println("send");            //se imprimirá "send" como confirmación
    delay(100);                         //esperaremos 100ms
  }
}



 

Nuestra vista no detecta la emisión de luz del led IR es por eso que nos apoyaremos de alguna cámara de celular y del puerto serial del IDE de Arduino para confirmar que esta funcionando adecuadamente nuestro módulo KY-005.

Confirmando que nuestro KY-005 funciona debidamente, recibiremos el paquete de 32 bits con el Sensor Receptor Infrarrojo KY-022; para lo cual requeriremos:

Realizaremos la siguiente conexión en nuestro segundo Arduino:
sensor infrarrojo tutorial ky-005

Código para recepción de datos del KY-005

Para el siguiente programa seguiremos utilizando la librería IRremote, previamente instalada y utilizaremos el comando IRrecv para poder recibir la información proveniente del emisor KY-005.

#include <IRremote.h>                       //Librería para IR
int recibe = 11;                            //Pin KY022 a PIN11 Digital  
IRrecv irrecv(RECV_PIN);                   //Se reciben paquetes remotos IR por medio del objeto irrecv
decode_results results;                    // decoficación de los paquetes enviados por ky-005 
void setup() {
  Serial.begin(9600);                     //Iniciando puerto serial en 9600 bauds
  irrecv.enableIRIn();                    // Habilita la recepción de datos
}
void loop() {
  if (irrecv.decode(&results)) {          // Cuando se recibe un código, la información se almacena en "resultados".
    Serial.println(results.value, HEX);   // impresión de los valores recibidos en formato hexadecimal
    irrecv.resume();                      // Después de recibir, se debe llamar a este para restablecer el receptor y prepararlo para recibir otro código
  }
  delay (100);                            // espera para el siguiente valor
} 

El dato obtenido por el receptor pasando por conversión a hexadecimal es “D4BAA50D”;este podríamos usarlo en nuestro código para que sea una variable de entrada para encender un led, por ejemplo.

Ambos dispositivos trabajan en conjunto para poder transferir datos de la manera mas conveniente por el usuario, teniendo en cuenta el protocolo de comunicación es muy fácil el manejo de estos sensores que pueden ayudar a proyectos mas elaborados en donde se tengan mas de una señal de emisión.

sensor infrarrojo tutorial ky-005, sensor infrarrojo tutorial ky-005

TUTORIALES RELACIONADOS

2 COMENTARIOS

  1. Todo muy bien esta genial el proyecto sobre todo por lo del emisor pero en el código no estoy entendiendo cuando configuraron el pin del pulsador como salida, que no era entrada? porque lo que se espera es que se envíe el código al presionar el botón por lo tanto esperamos la entrada de un estado ALTO pa’ que se envíe por una SALIDA la información generada por el IR.