Trastejant

Crea, comparte, aprende y disfruta

Control por Infrarrojos

Sensor y Mando infrarrojo

Todos los días empleamos infrarrojos para controlar aparatos de nuestra vida cotidiana. Encender la televisión, poner música, ajustar la temperatura… son tareas que normalmente hacemos con un mando a distancia que emite un haz en en el espectro de infrarrojos para enviar las ordenes a los aparatos que controlan.

¿Qué son los infrarrojos?

Los infrarrojos son un tipo de radiación electromagnética ,igual que la luz o las microondas pero en un espectro que nuestros ojos no pueden ver.
Todo lo que nos rodea, incluidos nosotros mismos emite radiación infrarroja siempre y cuando su temperatura sea superior a -273ºC.

¿Cómo se usan para controlar aparatos?

Los rayos infrarrojos se usan para multitud de cosas, cómo calentar o cortar materiales. Pero a nosotros en este caso lo que nos interesa es su capacidad para enviar información.

Si hacemos un poco de memoria, no hace muchos años muchos teléfonos móviles tenían la opción de enviar ficheros de audio o imagen por infrarrojos. Cuando usamos un mando a distancia hacemos algo parecido, pero más sencillo. Enviamos una información que contiene la orden que deseamos ejecutar, cómo subir o bajar el volumen, cambiar de canal, encender, apagar..etc

Esto puede realizarse de muchas formas, nosotros mismos podemos crear nuestro propio protocolo y hacer funcionar nuestros circuitos diseñados por nosotros mismos. Por ejemplo podríamos decir que dos pulsos de 10milisegundos significa encenderse, tres pulsos de 15mS apagar, y así hasta completar el conjunto de instrucciones que deseemos.

A nivel industrial algunos fabricantes hacen esto mismo, crean sus propios protocolos (sus propias ordenes para enviar por infrarrojos) para controlar los dispositivos que fabrican. Sin embargo desde hace años existe la tendencia de usar protocolos comunes, esto permite al usuario utilizar mandos universales,por ejemplo. Uno de los protocolos para mas utilizados es el protocolo NEC.

El protocolo NEC

El protocolo NEC utiliza una serie de pulsos para transmitir el mensaje. Cada uno de estos pulsos tiene una duración de 562.5microSegundos y una frecuencia de 38kHz.trama
Un mensaje del protocolo NEC consta de varias partes, lo primero que hace es mandar un pulso de 9 ms(milisegundos). Espera 4.5ms y envía la dirección del dispositivo al que controla, así dicho dispositivo sabe que las ordenes que vendrán después son para él.

Después envía el inversor de la dirección, es decir, si la dirección era 11011001 lo siguiente que enviará será 00100110.

A continuación el comando o la orden asociado al botón que hemos pulsado (subir el volumen, cambiar el canal…etc). Al terminar la orden, envía el inversor de la orden. Igual que hizo con la dirección y por ultimo envía un pulso de 562.5microsegundos para indicar al dispositivo que se ha completado el mensaje.

Esta sería la estructura completa de un mensaje empleando el protocolo NEC, cómo vemos tiene varios elementos de seguridad que garantizan el buen funcionamiento (El encabezado con la dirección del dispositivo, el inversor de los mensajes enviados..etc)

Toda la información importante que se manda (dirección, orden e inversores) tiene un tamaño de 8 bits, por lo que son mensajes pequeños pero permiten una cantidad enorme de posibilidades, más allá de las que ,en principio, serían necesarias para cualquier mando a distancia.

Ejemplos de uso

Algunos de los mayores atractivos a la hora de usar los infrarrojos para controlar algo es su simpleza y lo económicos que son sus componentes.

Cómo emisor solo necesitaremos un led IR con su correspondiente resistencia y un microcontrolador que lo gobierne.
En cuanto a los receptores, existen varios tipos pero todos funcionan de la misma forma. Un encapsulado con tres patillas. Dos son de alimentación y una envía la información recibida.

Para poder ser más claros y precioso vamos a centradnos en uno de estos receptores, el TSOP4838 pero todos los modelos funcionan de forma similar.

Cómo se puede apreciar en la imagen, consta de tres patas:Sensor de Infrarrojos

Pin Función
1 Señal
2 GND
3 Alimentación Vcc

Infrarrojos y Arduino

Lo que vamos a hacer con este circuito es leer las ordenes que envía un mando a distancia que usa el protocolo NEC. Mostraremos esta orden en nuestra consola de serial con un formato parecido a este 0xEE11BF00.
El montaje es muy sencillo, dejaremos nuestra placa de Arduino conectada al ordenador y abriremos la consola de serial con este botón ahora enfocaremos nuestro mando al sensor de Infrarrojo, al pulsar una tecla el código asociada a ella aparecerá en nuestro monitor de serial.

Lectura Mando IR

Este es el código que debemos cargar en Arduino:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include  
 
//Llamamos a librería del protocolo NEC 
#include  
 
//Pin del sensor 
#define sensor 2; 
 
//Creamos un objeto de la libreria NEC llamado ir para poder usarla. 
 NECIRrcv ir(sensor); 
 void setup{ 
 //iniciamos la comunicación serial 
 Serial.begin(9600); 
 //iniciamos la recepcion 
 ir.begin(); 
 } 
 
 void loop{ 
 /*Almacenaremos el código del botón pulsado 
 en una variable llamada código*/ 
 unsigned long codigo; 
 
 //Mostramos el código en pantalla. 
 Serial.print("Código: "); 
 Serial.println(codigo) ; 
 }

Ahora que sabemos cómo leer los códigos de nuestros mandos a distancia podemos utilizarlos para controlar Arduino con un mando a distancia, o cualquier otra cosa que se nos ocurra.

Por realizar un ejemplo sencillo que después podamos modificar para controlar lo que queramos vamos montar un circuito que encienda y apague un led desde un mando a distancia.

Lo primero será realizar el siguiente montaje:

Esquema de Infrarrojos con Arduino Arduino con Infrarrojos y led

 

Cómo podemos ver, solamente necesitamos un receptor de infrarrojos, un led con su correspondiente resitencia y una placa de Arduino
Vamos ahora con el software:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include 
#include 
int IRPIN = 2;   //Pin al que tenemos conectado el sensor de infrarrojo
int led = 12; //Pin al que tenemos conectado el led
static int aux = 1; //variable de bandera para saber si el led esta encendido o no
NECIRrcv ir(IRPIN) ;
 
void setup(){
  pinMode(led, OUTPUT);
  ir.begin() ;
}
void loop(){
  unsigned long ircode ;
  while (ir.available()) { 
    ircode = ir.read() ;
    if(ircode == 3125149440){  //Este código lo hemos obtenido con el montaje anterior
      if(aux == 0){
        digitalWrite(led, LOW);
        aux = 1;
      }
      else{
        digitalWrite(led, HIGH);
        aux = 0;
      }
    } 
  }
}

Utilizaremos la librería NECIRrcv.h para leer lo que envía el mando a distancia , después comparamos esas ordenes con la orden que estamos buscando. Si coinciden, el led se enciende o se apaga dependiendo de la orden recibida.

Cómo siempre este es un ejemplo básico de algo con mucho potencial. Podríamos programar ordenes para cada botón del mando a distancia y el led podría ser un relé, un motor.. lo que nosotros queramos.


También te puede interesar...

No hay temas relacionados

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.