Arduino Nano - Control remoto por infrarrojos

Probablemente te hayas encontrado con el control remoto infrarrojo, también llamado control remoto IR, al usar dispositivos como televisores y aires acondicionados en casa... Este tutorial te enseña cómo usar el control remoto infrarrojo (IR) y un receptor infrarrojo para controlar el Arduino Nano. En detalle, aprenderemos:

Controlador IR - receptor IR - Arduino Nano

Hardware Requerido

1×Official Arduino Nano
1×Alternatively, DIYables ATMEGA328P Nano Development Board
1×Cable USB A a Mini-B
1×IR Remote Controller and Receiver Kit
1×Batería CR2025 (para control remoto IR)
1×Cables Puente
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para Arduino Nano
1×(Recomendado) Placa de Expansión Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentación para Arduino Nano

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Acerca del control remoto de infrarrojos

Un sistema de control por infrarrojos tiene dos componentes: un control remoto infrarrojo y un receptor infrarrojo.

  • El control remoto IR se utiliza para enviar comandos mediante señales infrarrojas.
  • El receptor IR capta e interpreta estas señales para controlar el dispositivo.

Un kit de IR suele constar de los dos componentes mencionados anteriormente: un mando a distancia IR y un receptor IR.

Control remoto por infrarrojos

El control remoto IR es un dispositivo portátil que emite señales infrarrojas. Está equipado con un teclado que contiene varios botones:

  • Cada botón del control remoto tiene asignada una función o un comando específica.
  • Cuando se presiona un botón, el control remoto emite una señal infrarroja invisible. Esta señal lleva un código o patrón distintivo asociado al botón presionado.
  • Estas señales infrarrojas pertenecen al espectro infrarrojo y no pueden ser vistas por el ojo humano.
controlador infrarrojo
image source: diyables.io

Receptor IR

El módulo receptor de infrarrojos es un sensor que detecta y recibe las señales infrarrojas emitidas por el control remoto.

El receptor infrarrojo detecta las señales infrarrojas entrantes y las convierte en el código (comando) que representa el botón presionado en el control remoto.

El receptor IR puede ser un sensor o un módulo. Puedes usar las siguientes opciones:

  • Solo módulo receptor IR
  • Solo sensor receptor IR
  • Sensor receptor IR + Adaptador
Módulo de sensor receptor IR
image source: diyables.io
Adaptador de sensor para receptor infrarrojo
image source: diyables.io

Pinout del receptor IR

El módulo receptor IR o el sensor tiene tres pines:

  • Pin VCC: Conecte este pin al pin de 3.3V o 5V del Arduino Nano o a una fuente de alimentación externa.
  • Pin GND: Conecte este pin al pin GND del Arduino Nano o a una fuente de alimentación externa.
  • Pin OUT (Salida): Este pin es la salida del módulo receptor IR. Conectado a un pin de entrada digital en el Arduino Nano.

Cómo funciona

Cuando un usuario presiona un botón en el control remoto infrarrojo, ocurren los siguientes pasos:

  • El control remoto IR codifica el comando asociado al botón en una señal infrarroja utilizando un protocolo específico.
  • El control remoto IR emite la señal infrarroja codificada.
  • El receptor IR capta la señal infrarroja codificada.
  • El receptor IR decodifica la señal infrarroja codificada, convirtiéndola de vuelta en el comando original.
  • El Arduino Nano lee el comando recibido del receptor IR.
  • El Arduino Nano mapea el comando recibido a la tecla correspondiente que se pulsó en el control remoto IR.

Estos pasos explican el proceso de cómo se traduce la pulsación de un botón del control remoto IR en un comando reconocible por el Arduino Nano.

Puede parecer complicado, pero no hay por qué preocuparse. Gracias a la DIYables_IRcontroller library, se vuelve increíblemente fácil.

Diagrama de Cableado

Diagrama de cableado entre Arduino Nano y el módulo receptor IR

Diagrama de cableado del control remoto por infrarrojos para Arduino Nano

This image is created using Fritzing. Click to enlarge image

Diagrama de cableado entre Arduino Nano y el sensor receptor de infrarrojos

Diagrama de cableado del control remoto IR para Arduino Nano

This image is created using Fritzing. Click to enlarge image

Ver La mejor forma de alimentar Arduino Nano y otros componentes.

Diagrama de cableado entre Arduino Nano y el receptor de infrarrojos y el adaptador

Antes de conectar el sensor receptor de infrarrojos al Arduino Nano, tienes la opción de conectarlo al adaptador. Esto facilita la configuración y garantiza una conexión adecuada entre el sensor receptor de infrarrojos y el Arduino Nano.

También puedes conectar el sensor receptor IR al adaptador antes de conectarlo.

Adaptador receptor de control remoto IR para Arduino Nano
image source: diyables.io

Cómo programar para un control remoto infrarrojo

  • Incluir la biblioteca:
#include <DIYables_IRcontroller.h> // Library for IR Receiver
  • Declara un objeto DIYables_IRcontroller_17 o DIYables_IRcontroller_21 que corresponde a controles remotos IR de 17 teclas o 21 teclas:
DIYables_IRcontroller_17 irController(IR_RECEIVER_PIN, 200); // debounce time is 200ms // OR DIYables_IRcontroller_21 irController(IR_RECEIVER_PIN, 200); // debounce time is 200ms
  • Inicializar el controlador IR.
irController.begin();
  • En el bucle, verifica si se pulsa una tecla o no. Si es así, obtén la tecla
Key17 key = irController.getKey(); // if using 17-key IR controller // OR Key21 key = irController.getKey(); // if using 21-key IR controller
  • Al detectar la pulsación de una tecla, puedes realizar acciones específicas que correspondan a cada tecla.

Código de Arduino Nano

/* * Este código de Arduino Nano fue desarrollado por es.newbiely.com * Este código de Arduino Nano se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano/arduino-nano-ir-remote-control */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller library #define IR_RECEIVER_PIN 7 // The Arduino Nano pin connected to IR controller DIYables_IRcontroller_17 irController(IR_RECEIVER_PIN, 200); // debounce time is 200ms void setup() { Serial.begin(9600); irController.begin(); } void loop() { Key17 key = irController.getKey(); if (key != Key17::NONE) { switch (key) { case Key17::KEY_1: Serial.println("1"); // TODO: YOUR CONTROL break; case Key17::KEY_2: Serial.println("2"); // TODO: YOUR CONTROL break; case Key17::KEY_3: Serial.println("3"); // TODO: YOUR CONTROL break; case Key17::KEY_4: Serial.println("4"); // TODO: YOUR CONTROL break; case Key17::KEY_5: Serial.println("5"); // TODO: YOUR CONTROL break; case Key17::KEY_6: Serial.println("6"); // TODO: YOUR CONTROL break; case Key17::KEY_7: Serial.println("7"); // TODO: YOUR CONTROL break; case Key17::KEY_8: Serial.println("8"); // TODO: YOUR CONTROL break; case Key17::KEY_9: Serial.println("9"); // TODO: YOUR CONTROL break; case Key17::KEY_STAR: Serial.println("*"); // TODO: YOUR CONTROL break; case Key17::KEY_0: Serial.println("0"); // TODO: YOUR CONTROL break; case Key17::KEY_SHARP: Serial.println("#"); // TODO: YOUR CONTROL break; case Key17::KEY_UP: Serial.println("UP"); // TODO: YOUR CONTROL break; case Key17::KEY_DOWN: Serial.println("DOWN"); // TODO: YOUR CONTROL break; case Key17::KEY_LEFT: Serial.println("LEFT"); // TODO: YOUR CONTROL break; case Key17::KEY_RIGHT: Serial.println("RIGHT"); // TODO: YOUR CONTROL break; case Key17::KEY_OK : Serial.println("OK"); // TODO: YOUR CONTROL break; default: Serial.println("WARNING: undefined key:"); break; } } }
/* * Este código de Arduino Nano fue desarrollado por es.newbiely.com * Este código de Arduino Nano se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano/arduino-nano-ir-remote-control */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller library #define IR_RECEIVER_PIN 7 // The Arduino Nano pin connected to IR controller DIYables_IRcontroller_21 irController(IR_RECEIVER_PIN, 200); // debounce time is 200ms void setup() { Serial.begin(9600); irController.begin(); } void loop() { Key21 key = irController.getKey(); if (key != Key21::NONE) { switch (key) { case Key21::KEY_CH_MINUS: Serial.println("CH-"); // TODO: YOUR CONTROL break; case Key21::KEY_CH: Serial.println("CH"); // TODO: YOUR CONTROL break; case Key21::KEY_CH_PLUS: Serial.println("CH+"); // TODO: YOUR CONTROL break; case Key21::KEY_PREV: Serial.println("<<"); // TODO: YOUR CONTROL break; case Key21::KEY_NEXT: Serial.println(">>"); // TODO: YOUR CONTROL break; case Key21::KEY_PLAY_PAUSE: Serial.println(">||"); // TODO: YOUR CONTROL break; case Key21::KEY_VOL_MINUS: Serial.println("–"); // TODO: YOUR CONTROL break; case Key21::KEY_VOL_PLUS: Serial.println("+"); // TODO: YOUR CONTROL break; case Key21::KEY_EQ: Serial.println("EQ"); // TODO: YOUR CONTROL break; case Key21::KEY_100_PLUS: Serial.println("100+"); // TODO: YOUR CONTROL break; case Key21::KEY_200_PLUS: Serial.println("200+"); // TODO: YOUR CONTROL break; case Key21::KEY_0: Serial.println("0"); // TODO: YOUR CONTROL break; case Key21::KEY_1: Serial.println("1"); // TODO: YOUR CONTROL break; case Key21::KEY_2: Serial.println("2"); // TODO: YOUR CONTROL break; case Key21::KEY_3: Serial.println("3"); // TODO: YOUR CONTROL break; case Key21::KEY_4: Serial.println("4"); // TODO: YOUR CONTROL break; case Key21::KEY_5: Serial.println("5"); // TODO: YOUR CONTROL break; case Key21::KEY_6: Serial.println("6"); // TODO: YOUR CONTROL break; case Key21::KEY_7: Serial.println("7"); // TODO: YOUR CONTROL break; case Key21::KEY_8: Serial.println("8"); // TODO: YOUR CONTROL break; case Key21::KEY_9: Serial.println("9"); // TODO: YOUR CONTROL break; default: Serial.println("WARNING: undefined key:"); break; } } }

Pasos R\u00e1pidos

  • Haz clic en el icono de Bibliotecas en la barra izquierda del IDE de Arduino.
  • Busca "DIYables_IRcontroller", luego encuentra la biblioteca DIYables_IRcontroller de DIYables.
  • Haz clic en el botón Instalar para instalar la biblioteca DIYables_IRcontroller.
Biblioteca DIYables_IRcontroller para Arduino Nano
  • Se le pedirá instalar la dependencia de la biblioteca como se muestra en la imagen a continuación:
Librería IRremote para Arduino Nano
  • Haz clic en el botón Instalar todo para instalar la dependencia
  • Copia el código anterior y ábrelo con Arduino IDE
  • Haz clic en el botón Subir en el IDE de Arduino para cargar el código en Arduino Nano
  • Presiona las teclas del control remoto una por una
  • Verifica el resultado en el Monitor Serial.
  • Aquí está el resultado que puedes esperar cuando presionas las teclas en un control remoto IR de 17 teclas, una por una:
COM6
Send
1 2 3 4 5 6 7 8 9 * 0 # UP DOWN LEFT RIGHT OK
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Ahora puedes realizar cambios en el código para controlar dispositivos como LEDs, ventiladores, bombas, actuadores y más utilizando controles remotos por infrarrojos.

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!