Pages Menu
TwitterFacebook



BANNER2_ALT

Posted by on Mar 11, 2015 in Comunicación | 7 comments

Control IR con Arduino

Control IR con Arduino

Controlar LEDs con control remoto IR y Arduino

Actualmente la mayoría de nuestros equipos electrónicos se manejan a control remoto gracias a un sistema bastante simple como es la luz infrarroja, que básicamente estos aparatos se activan o realizan alguna función con solo presionar un botón.

En este tutorial vamos controlar LEDs con Arduino UNO a través de un control remoto cualquiera, puede ser de TV, DVD, Estéreo entre otros.

comunicación IR

Control remoto IR y modulo IR

 

Material

  • Arduino UNO
  • Módulo de recepción IR
  • Cables macho-macho
  • Control remoto
  • Protoboard
  • 3 LEDs
  • 3 Resistencias de 220 ohm

En la tienda virtual de HeTPro puedes encontrar todos los manteriales: hetpro-store.com

Los controladores y software Arduino lo puedes encontrar en: www.arduino.cc

Comunicación IR

Para este tutorial utilizaremos un control remoto cualquiera y un  módulo AX-1838HS que incluye el receptor IR, resistencias pullup y LED que parpadea cuando un dato IR es recibido por un remoto. El módulos es individual y puede trabajar con controles IR o emisores IR.

Para utilizar el control remoto es necesario saber que para cada botón existe un código por lo tanto al  momento que presionamos un botón este manda una serie de números que será recibida por el sensor IR y este lo utilizaremos para manipular nuestros LEDs.

El modulo receptor solo cuenta con tres pines de conexión, los cuales dos son de alimentación y el otro es el que manda la señal que recibe. Para más información del sensor revisar la hoja de datos.

sensor IR

módulo AX-1838HS

 

 

Conexión

Para el modulo IR tomamos la alimentamos de la placa Arduino y la señal la se manda al pin 11. A las salidas 5, 6 y 7 de la placa conectamos una resistencia de 220ohm  en cada una de ellas y enseguida un LED respectivamente.

diagrama

Diagrama de Conexión de IR con Arduino

 

 

Paso 1:

Para hacer la programación que nos muestre el código de los botones es necesario agregar una librería al compilador de Arduino  la cual se llama IRremote.h. Después de que agregues la librería ingresa el siguiente código.

Libreria (fuente original): IRremote

#include <IRremote.h>

int RECV_PIN = 11;                           //declaramos el pin que recibira la señal

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);                       //inicializamos el puerto serial a 9600
  irrecv.enableIRIn();                               // Comienza a recibir los datos
}

void loop() {
  if (irrecv.decode(&results))
 {
    Serial.println(results.value, HEX);     // imprime el valor en codigo hexadecimal
    irrecv.resume();                        // Se preparar para recibir  el siguiente valor
    delay(10);
  }
}

Paso 2:

Ya cargado el código abrimos la ventana del monitor serial que se encuentra en la parte superior derecha de nuestro compilador y empezamos a presionar botones del control remoto

codigo_botones

Monitor serial mostrando los codigos de los botones

 

En el monitor serial se muestran distintos valores al ir presionando cada uno de los botones, estos valores son los que nos interesan para poder controlar los LEDs, así que identifica bien qué valor le corresponde a cada botón.

Paso 3:

Vamos a editar el código que teníamos para hacer uso de los valores. Para este  tutorial vamos a tomar tres diferentes botones que corresponderán a cada LED que tenemos montado.

La programación hará que al presionar un botón  encienda un led y se quede así mientras que no se  presione otro botón. Entonces  el sensor IR registrara el valor y lo comparará con algunas condiciones si es verdadero encenderá el LED mientras no cambie su valor.

#include <IRremote.h>

int RECV_PIN = 11;             //pin que recibe la señal

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);               //inicializamos el puerto serial a 9600
  pinMode(7, OUTPUT);          //declaramos pines de salida para los LEDs
   pinMode(6, OUTPUT);
    pinMode(5, OUTPUT);

  irrecv.enableIRIn();                     // Comienza a recibir los datos
}

void loop()
{
  results.value=0;
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);             // imprime el valor en codigo hexadecimal
     irrecv.resume();                                      // Se preparar para recibir  el siguiente valor

}
 while(results.value ==0x4FBA857)    //comparamos el valor recibido con un valor seleccionado
 {
 digitalWrite(7, HIGH);                     //si es verdadero pondra en estado alto el pin 7
 delay(100);                                //espera 100ms antes de tomar el siguiente dato

  if (irrecv.decode(&results))
 {
    Serial.println(results.value, HEX);
     irrecv.resume(); 

}
}
 digitalWrite(7, LOW);             //Al momento que se deja de cumplir la condicion pasa a estado bajo

 while(results.value == 0x4FBF807)   //comparamos otro valor
 {
digitalWrite(6, HIGH);
 delay(100);

  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
     irrecv.resume();

}
}
 digitalWrite(6, LOW);

  while(results.value == 0x4FBD827)      //condicion para encender el tercer LED
 {
   digitalWrite(5, HIGH);
 delay(100);

  if(irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
     irrecv.resume();

}
}
 digitalWrite(5, LOW);

 }</pre>
<pre>

 Paso 4

Con esto esta listo el programa para controlar LEDs con un control IR solo nos queda compilarlo y cargarlo en nuestra placa Arduino

control IR

prueba del sensor IR

 

???????????????????????????????

7 Comments

  1. Muy bueno este tutorial así como todo el sitio. Una consulta, se puede variar para que el angulo de emisión sea menor, a 45º o hay receptores cuyo angulo de captación sea menor a 30º. Gracias. Saludos

  2. Muy buen post Gracias

  3. puedo utilizar arduino mega?

  4. Muy bueno todo y gracias por compartir, desinteresadamente, sus conocimientos.

    • Gracias por tu comentarios esperamos que lo compartas con quien lo necesite

Post a Reply

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