Control Remoto Infrarrojo con Arduino
En este tutorial, vamos a construir un control remoto universal, el cual puede almacenar una señal IR para posteriormente replicarla al presionar un pulsador. La librería es compatible con NEC, Sony, Philips RC5 y RC6, DISH, Sharp, SAMSUNG, LG, PANASONIC, Denon.
El control remoto por infrarrojo es una tecnología utilizada para enviar señales a dispositivos electrónicos desde una distancia, sin necesidad de estar en contacto físico con ellos. El sistema se basa en el uso de diodos emisores de infrarrojos (IR) para enviar señales codificadas a un receptor ubicado en el dispositivo electrónico que se desea controlar.
El control remoto por infrarrojo se utiliza en una gran variedad de aplicaciones, desde televisores y equipos de sonido hasta sistemas de seguridad y control de acceso. Para su funcionamiento, es necesario contar con un control remoto que emita las señales IR, así como un receptor infrarrojo en el dispositivo a controlar.
El control remoto por infrarrojo funciona mediante el uso de códigos de señalización específicos, que se envían a través del diodo emisor de IR. Estos códigos son interpretados por el receptor infrarrojo y se utilizan para realizar la acción deseada en el dispositivo electrónico.
Para la implementación de un control remoto por infrarrojo con Arduino, es necesario contar con un receptor infrarrojo (IR), que se conecta a una de las entradas digitales de la placa. Luego, se programa la placa para que interprete los códigos de señalización enviados por el control remoto y realice las acciones correspondientes en el dispositivo electrónico que se desea controlar.
Materiales
- 1x Placa Arduino (Nano o Uno).
- 1x Diodo emisor de infrarrojo.
- 1x Diodo receptor de infrarrojo.
- 1x Diodo emisor de luz (Led).
- 1x Resistor 330 Ohm.
- 1x Resistor 180 Ohm.
- 1x Resistor 100 Ohm.
- 1x Pulsador normalmente abierto.
- 1x Protoboard.
- Cables de conexión.
Circuito
Sketch IDE Arduino
Recuerda que debes instalar la librería, la cual puedes descargarla dando clic aquí, o en los enlaces de descarga que se encuentran al final de este post.
#include <IRremote.h> IRrecv Receptor_IR(5); decode_results IR; IRsend Emisor_IR; #define pin_pulsador 2 #define pin_led 6 unsigned long millis_anterior_pulsacion = 0; uint8_t contador_pulsacion = 0; void setup() { pinMode(pin_led, OUTPUT); pinMode(pin_pulsador, INPUT_PULLUP); Receptor_IR.blink13(true); } void tiempo_pulsacion() { unsigned long millis_actual_pulsacion = millis(); if (millis_actual_pulsacion - millis_anterior_pulsacion > 1000UL) { millis_anterior_pulsacion = millis_actual_pulsacion; contador_pulsacion++; } } void loop() { if (digitalRead(pin_pulsador) == LOW) { delay(15); if (!digitalRead(pin_pulsador)) { tiempo_pulsacion(); if (contador_pulsacion == 3) { // 3 = Tiempo de pulsacion contador_pulsacion = 0; // //------------------------------------------------------ digitalWrite(pin_led, HIGH); Receptor_IR.enableIRIn(); while (!Receptor_IR.decode(&IR)); digitalWrite(pin_led, LOW); //------------------------------------------------------ // } } } else { if (contador_pulsacion == 1) { contador_pulsacion = 0; // //------------------------------------------------------ digitalWrite(pin_led, HIGH); switch (IR.decode_type) { case NEC: Emisor_IR.sendNEC(IR.value, IR.bits); break ; case SONY: Emisor_IR.sendSony(IR.value, IR.bits); break ; case RC5: Emisor_IR.sendRC5(IR.value, IR.bits); break ; case RC6: Emisor_IR.sendRC6(IR.value, IR.bits); break ; case DISH: Emisor_IR.sendDISH(IR.value, IR.bits); break ; case SHARP: Emisor_IR.sendSharp(IR.value, IR.bits); break ; case SAMSUNG: Emisor_IR.sendSAMSUNG(IR.value, IR.bits); break ; case LG: Emisor_IR.sendLG(IR.value, IR.bits); break ; case PANASONIC: Emisor_IR.sendPanasonic(IR.value, IR.bits); break ; case DENON: Emisor_IR.sendDenon(IR.value, IR.bits); break ; default: case UNKNOWN: delay(100); digitalWrite(pin_led, LOW); delay(100); digitalWrite(pin_led, HIGH); break ; } delay(100); digitalWrite(pin_led, LOW); //-------------------------------------------------------- // } else { contador_pulsacion = 0; } } delay(100); }
¿Cómo funciona el Sketch?
El programa tiene dos modos de funcionamiento:
Primer Modo: Receptor IR
Este modo se encarga de recibir una señal IR y almacenarla, cuando cargues el programa en la Placa Arduino, o la enciendas por primera vez, obligatoriamente debes ejecutar este primer modo, ya que el programa no tiene almacenado ningún código IR, esto se verifica al presionar una sola vez el pulsador, observaremos que el LED parpadea 2 veces.
Para almacenar un codigo IR necesitas un control remoto IR puede ser de una TV, Equipo de Sonido, etc. Ahora cuando ya lo tengas sigue estos pasos:
- Presiona el pulsador hasta que el led se encienda (aprox. 3 seg), una vez encendido suelta el pulsador.
- Apunta tu control remoto al receptor IR y presiona la tecla que desees almacenar.
- Automáticamente el led se apagará y el sistema estará listo para emitir el código IR de la tecla presionada.
Segundo Modo: Emisor IR
Este modo se encarga de emitir un código IR anteriormente almacenado. Para emitir dicho código sigue estos pasos:
- Apunta el emisor IR al dispositivo que quieras controlar.
- Presiona una vez el pulsador, el led debe dar un solo parpadeo.
- Listo, el código ha sido enviado, y el dispositivo a controlar realizará la acción correspondiente al código IR.
Si luego de haber almacenado un código IR el led parpadea 2 veces, significa que el código no es compatible con la librería.
Enlaces de Descarga
Puedes descargar la Librería IR dando clic aquí.