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
Material necesario
Para realizar nuestro mando a distancia IR con Arduino, necesitaremos en primer lugar un control remoto, sirve cualquiera que tengas en casa.
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).
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.
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.
Y por supuesto, nuestro Arduino, puedes utilizar Arduino Uno o el que tú poseas.
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.
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.
¿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:
- 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.
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.
¿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.
Vamos a conectar correctamente la polarización de nuestro módulo y para la señal, utilizaremos el pin 11 de nuestro Arduino Uno.

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.
Luego, en el gestor de librerías de Arduino IDE incluimos la librería IRremote, en este caso la versión 3.6.0.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#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.
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.
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 |
#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.