Home Assistant Fácil

Curso de Home Assistant y domótica

  • Blog
  • Soy un pardillo
  • Podcast
  • Curso Arduino
  • Curso Domótica
  • Acceder
Usted está aquí: Inicio / Blog / Arduino / Control remoto IR con Arduino

Control remoto IR con Arduino

Danilo Muñoz Jaramillo

De muy joven, una de mis mayores curiosidades era saber cómo hacía el control remoto del televisor que teníamos en casa para cambiar de canales o para subir el volumen del mismo con solo apretar un botón, me parecía como magia.

Tal vez no se haga por arte de magia, pero si quieres entender cómo se puede lograr esto y lo que es mejor, hacerlo tú mismo, quédate, que vamos a analizar el procedimiento para lograr un mando a distancia IR con Arduino.

Utilizando un mando a distancia IR con Arduino, puedes lograr el control de muchos eventos para tus proyectos. Solo adáptalo a tu código y tendrás las ventajas de un emisor y receptor de infrarrojos.

Empecemos.

Indice de contenidos

  • 1 ¿Qué es la comunicación por infrarrojos?
  • 2 ¿Qué es un receptor de infrarrojos (IR)?
  • 3 ¿Cómo funciona un mando a distancia y un receptor de infrarrojos IR?
  • 4 Ejemplo mando a distancia IR con Arduino
Mando-a-distancia-Arduino-por-infrarrojo

Material necesario

Para realizar nuestro mando a distancia IR con Arduino, necesitaremos en primer lugar un control remoto, sirve cualquiera que tengas en casa.

Transmisor de control remoto por infrarrojos.

Necesitamos también un receptor de infrarrojos, puede ser solo el módulo sin la tarjeta (como el módulo receptor de infrarrojos VS 1838B) o por comodidad, un módulo sensor receptor de infrarrojos como el KY-022 que aparece en la imagen inferior. Puedes encontrar información detallada en su hoja de datos (datasheet).

Módulo sensor receptor de infrarrojos KY-022

En la imagen puedes observar que este módulo es muy pequeño. Aunque parece un receptor muy simple, en su interior hay una electrónica compleja.

Tamaño relativo del Módulo sensor receptor de infrarrojos KY-022

Tres cables DuPont macho-hembra para conectar nuestro módulo KY-022 a Arduino directamente; o tres cables DuPont macho-macho si vas a utilizar protoboard. En la fotografía vemos tres cables DuPont macho-hembra para conexión directa, sin protoboard.

Cables DuPont macho-hembra

Y por supuesto, nuestro Arduino, puedes utilizar Arduino Uno o el que tú poseas.

Arduino UNO

El control remoto y el módulo sensor KY-022 los puedes conseguir fácilmente en tu tienda de electrónica o aquí.

¿Qué es la comunicación por infrarrojos?

La luz o radiación infrarroja o IR (Infrared Radiation) fue descubierta en el año 1800 por el astrónomo William Herschel continuando estudios realizados por Isaac newton.

La radiación IR es un tipo de radiación electromagnética, de mayor longitud de onda (menor frecuencia) que la luz visible, por tanto, es invisible para el ojo humano. Su rango de longitudes de onda va desde unos 0,7 hasta los 1000 micrómetros (µm) o 1 milímetro (mm). En cuanto a frecuencias corresponde aproximadamente a 430 THz hasta 300 GHz.

La gráfica nos muestra el espectro electromagnético y podemos ver la ubicación de la radiación infrarroja respecto a otras radiaciones como las ondas de radio.

Espectro electromagnético  mostrando las longitudes de onda.

Es importante recordar que un poco más de la mitad de la energía total del Sol que llega a la Tierra es radiación IR y que prácticamente todos los cuerpos emitimos este tipo de radiación.

Seguramente cuando pensamos en comunicación inalámbrica el tipo de ondas electromagnéticas que se nos vienen a la mente son las de radio, pero la comunicación con infrarrojos es común, especialmente cuando de controles remotos se trata.

Si comparamos la comunicación por infrarrojos con otras tecnologías de comunicación wireless (inalámbricas) vemos que su gran desventaja es que el dispositivo que transmite y el que recibe deben «verse». Este tipo de comunicación se llama «punto a punto» y es el que nos interesa en este artículo.

La ventaja de usar las ondas infrarrojas, es que no son visibles al ojo humano y por eso no molesta su uso en los controles remotos.

Te estarás preguntando, si la radiación infrarroja es invisible al ojo humano ¿cómo haremos para volverla visible? Un truco para lograrlo es utilizar la cámara de nuestro teléfono móvil, la cual colocaremos al frente del diodo emisor de luz del control remoto. Al presionar las teclas del mismo, veremos en la pantalla de nuestro teléfono móvil un destello de color violeta cuando se emita la radiación infrarroja.

Aparte de los controles remotos que utilizamos en nuestros hogares para el control a distancia de nuestros electrodomésticos, otros usos de la radiación infrarroja van desde calentar y secar pintura, comunicar periféricos con ordenadores, calcular distancias, detectar temperaturas de cuerpos o superficies, visión nocturna, hasta tomar fotografías térmicas desde satélites.

mando-a-distancia-infrarrojo

¿Cómo se modula la radiación infrarroja?

Existen varios protocolos para transmitir una información binaria (1 y 0) con modulación IR, tales como los de NEC, Matsushita, Sony, SIRC, entre otros.

Solo nos interesa conocer unos datos interesantes:

Modulación de la ráfaga de la portadora de 38 kHz con 1 y 0 lógicos.
  • La frecuencia escogida como portadora (la que transmite la información) es de 38 kHz, o sea ráfagas de pulsos con una frecuencia de 38000 pulsos por segundo, aunque es una ráfaga de pulsos, en la imagen se representa como bloques continuos de color azul.
  • La banda base (información) son unos y ceros (digital) y modulan (varían) la duración del tiempo en que se transmite la portadora.
  • Si se desea enviar un «1», la ráfaga de la portadora se envía 1.2 ms y se detiene (no se envía nada) por 0.6 ms.
  • Si se desea enviar un «0», la ráfaga de la portadora se envía 0.6 ms y se detiene (no se envía nada) por 0.6 ms.
  • Las ráfagas de pulsos se detienen cada 0.6 ms para separar cada bit o dígito (1 o 0) de información.
  • Cada tecla pulsada tendrá un código diferente de dígitos binarios (1 y 0).

¿Qué es un receptor de infrarrojos (IR)?

Un receptor de infrarrojos se utiliza para recibir señales de infrarrojos como las que se usan en los mandos a distancia IR. Lo primero que se debe hacer es colocar un filtro rojo, para no dejar pasar otras frecuencias que puedan interferir al receptor.

Luego se coloca un diodo fotosensible para captar la luz infrarroja y un filtro pasabanda que separa la frecuencia de 38 kHz, además de otros circuitos electrónicos que posteriormente recuperan la información.

Módulo receptor de infrarrojos VS 1838B

La imagen superior muestra el módulo receptor de infrarrojos VS 1838B, y la imagen inferior indica el diagrama de bloques del mismo según su datasheet; como te puedes dar cuenta, aunque parece un inofensivo LED, tiene una electrónica compleja.

Diagrama de bloques del módulo receptor de infrarrojos VS 1838B

¿Cómo funciona un mando a distancia y un receptor de infrarrojos IR?

El alcance máximo es de unos 10 metros en línea de vista, aproximadamente.

Para realizar nuestro mando a distancia IR con Arduino utilizaremos cualquier control remoto IR que tengamos en nuestra casa, estos contienen un circuito electrónico interno con un procesador y un LED (Light Emitting Diode) que emite la señal infrarroja modulada.

Cada uno de los botones o teclas del control remoto transmite un código diferente modulado según el protocolo escogido.

Nosotros debemos captar esa modulación con un receptor de infrarrojos, para nuestro mando a distancia IR con Arduino utilizaremos el módulo sensor receptor de infrarrojos KY-022. Una de las ventajas de usar este módulo es que en la tarjeta de circuito impreso nos muestra el nombre de los terminales y así es difícil equivocarnos al conectarlo al Arduino.

Con un programa (sketch) de Arduino vamos a obtener un código hexadecimal distinto, por cada una de las teclas que deseemos utilizar, nosotros vamos a utilizar las teclas 1 y 2.

Luego con un segundo programa haremos que nuestro control remoto pueda encender o apagar el LED integrado en el pin 13 de nuestro Arduino.

Cuando hayas realizado el circuito básico y lo entiendas, podrás ajustarlo a las necesidades de diseño que tengas.

¿Cómo conectar un receptor de infrarrojos IR al Arduino?

La conexión es muy sencilla, solo debemos tener precaución en respetar los terminales de alimentación VCC (positivo, 5V), GND (negativo) y la salida de señal del módulo.

Como sucede con cualquier módulo que utilices en tus proyectos, debes estar seguro de respetar la polarización del mismo, busca información del fabricante, ya que si nos equivocamos al polarizarlo, es muy probable que destruyamos el módulo.

Polarización del Módulo sensor receptor de infrarrojos KY-022

Vamos a conectar correctamente la polarización de nuestro módulo y para la señal, utilizaremos el pin 11 de nuestro Arduino Uno.

Diagrama pictórico del mando a distancia IR con Arduino.

Ejemplo mando a distancia IR con Arduino

Para realizar nuestro mando a distancia IR con Arduino, necesitamos un primer programa que nos servirá para conocer el código hexadecimal de los botones o teclas que usaremos para encender y apagar nuestro LED. El número 1 para encender el LED y el número 2 para apagarlo.

Llamamos al gestor de librerías de Arduino IDE: Programa/Incluir Librería/Administrar Bibliotecas.

Llamado al gestor de librerías del IDE de Arduino.

Luego, en el gestor de librerías de Arduino IDE incluimos la librería IRremote, en este caso la versión 3.6.0.

Inclusión de la librería IRremote.
#include <IRremote.h>   

int IR = 11;     
 
void setup() { 
  Serial.begin(9600);           
  IrReceiver.begin(IR, DISABLE_LED_FEEDBACK);     
} 

void loop() { 
  if (IrReceiver.decode()) {          
    Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);  
    IrReceiver.resume();             
  }
  delay (100);                 
}

La explicación de código es la siguiente:

  • Línea 1. Importamos la librería IRremote.
  • Línea 3. Creamos una variable entera donde guardaremos los datos enviados por el módulo KY-022.
  • Línea 6. En el void setup, invocamos al monitor serial para poder ver los códigos hexadecimales en el mismo.
  • Línea 7. Inicializamos un objeto del tipo IrReceiver para recibir datos desde el módulo y para indicar que vamos a utilizar la librería como receptor. En uno de sus parámetros le indicamos en qué pin tenemos conectado el receptor.
  • Línea 11. Ya dentro del void loop, verificamos si hay datos disponibles ya decodificados por la librería.
  • Línea 12. Imprimimos los datos en el monitor serial en formato hexadecimal.
  • Línea 13. Prepara el proceso de adquisición de un nuevo código.
  • Línea 15. Se genera una demora 100 ms.

Si abrimos el monitor serie y tecleamos el 1 y el 2, aparecerán los respectivos códigos hexadecimales correspondientes a la tecla 1 y 2.

Monitor serie mostrando los códigos hexadecimales de las teclas 1 y 2.

Para mi control remoto, la tecla 1 tiene el código hexadecimal FF00BF00 y la tecla 2, tiene el código hexadecimal FE01BF00.

Tus códigos van a ser diferentes, pero lo importante es que reconocemos qué código hexadecimal envía nuestro control remoto IR cuando presionamos sus teclas.

También observas un 0 que se repite si dejo pulsada una tecla un tiempo largo. Eso evita que la orden se repita.

Vamos a realizar el segundo programa. Como ya conocemos los códigos hexadecimales de las teclas 1 y 2, necesitamos ahora encender el LED interno de Arduino con la tecla 1 y apagar el mismo con la tecla 2.

#include <IRremote.h>     
#define Tecla_1 0xFF00BF00    
#define Tecla_2 0xFE01BF00  

int IR = 11;   
int LED = 13;     

void setup() {
  Serial.begin(9600);     
  IrReceiver.begin(IR, DISABLE_LED_FEEDBACK); 
  pinMode(LED, OUTPUT); 
} 

void loop() {
  if (IrReceiver.decode()) {        
    Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX); 
    if (IrReceiver.decodedIRData.decodedRawData == Tecla_1)   
    digitalWrite(LED, HIGH); 
    if (IrReceiver.decodedIRData.decodedRawData == Tecla_2)   
    digitalWrite(LED, LOW); 
    
    IrReceiver.resume();       
  }
  delay (100);            
}

Vemos que el código es muy parecido al anterior.

Con la directiva del compilador #define reemplazamos cada ocurrencia del nombre Tecla_1 por su equivalente hexadecimal, así se facilita escribir el código y no repetimos el número hexadecimal.

Luego verificamos si se ha pulsado la tecla 1 y ordenamos encender el LED del pin 13 de Arduino.

Si se ha pulsado la tecla 2, ordenamos apagar el LED del pin 13 de Arduino.

Ya podemos verificar nuestro mando a distancia IR con Arduino, cuando presionamos la tecla 1, el LED integrado en Arduino enciende y el monitor serial muestra su código hexadecimal correspondiente. Cuando presionamos la tecla 2, el LED integrado en Arduino se apagará, así mismo en el monitor serial se mostrará el código hexadecimal de la tecla 2.

Conclusión sobre control Arduino por infrarrojos

Como hemos visto, la comunicación mediante radiación infrarroja es muy utilizada en la actualidad y uno de los campos de aplicación más interesante son los mandos a distancia.

Una de sus grandes ventajas es la facilidad de realizar el control a distancia de objetos, tú mismo puedes realizar muchos proyectos interesantes utilizando comunicación IR.

Espero que el artículo haya sido de interés para ti y despierte tu curiosidad para realizar mando a distancia IR con Arduino.

Agradezco tu atención y hasta una próxima ocasión.

Gracias a depositphotos por la cesión de sus imágenes.

slzb-06

SLZB-06U: migrar coordinador Zigbee desde Sonoff Dongle P (y por qué el Dongle E es diferente)

Vale, lo confieso: no hay nada que me dé más pereza en domótica que tener que migrar toda la red Zigbee. El típico momento en el que tu viejo … [+ info...]

Home Assistant 2026.6

Home Assistant 2026.6: dashboard inteligente, IR bidireccional y automatizaciones más claras

Llevas meses peleándote con el dashboard de Home Assistant: añadir una tarjeta requería saber de memoria el nombre de cada tipo de bloque, y al final … [+ info...]

MATTER HOME ASSISTANT

Matter Home Assistant: Thread local sin nube

Hay automatizaciones que parecen una chorrada hasta que las vives todos los días. Sesenta minutos después del amanecer, los toldos de mi terraza bajan … [+ info...]

Copyright © 2026 · Programar Fácil · Aviso legal