Arduino Nano ESP32 - Control remoto por infrarrojos

Probablemente te hayas encontrado con el control remoto por infrarrojos, también llamado control remoto IR, al usar dispositivos como televisores y aires acondicionados en casa... En esta guía, aprenderemos a usar el control remoto por infrarrojos (IR) y un receptor infrarrojo para controlar el Arduino Nano ESP32. En detalle, aprenderemos:

Controlador de infrarrojos - Receptor infrarrojo - ESP32

Hardware Requerido

1×Arduino Nano ESP32
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
1×IR Remote Controller and Receiver Kit
1×Batería CR2025 (para control remoto IR)
1×Protoboard
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 ESP32

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 IR

Un sistema de control por IR tiene dos componentes: un mando a distancia IR y un receptor IR.

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

Un kit de IR normalmente consta de los dos componentes mencionados anteriormente: un control remoto IR y un receptor IR.

control remoto por infrarrojos

El control remoto IR es un dispositivo portátil que emite señales infrarrojas. Está diseñado con un teclado que presenta múltiples botones:

  • Cada botón del control remoto tiene asignada una función o comando específica.
  • Cuando se presiona un botón, el control remoto emite una señal infrarroja que contiene un código o patrón único vinculado al botón presionado.
  • Estas señales infrarrojas se encuentran dentro del espectro infrarrojo y no son visibles para el ojo humano.
Controlador IR
image source: diyables.io

Receptor de infrarrojos

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
  • Sensor receptor IR solamente
  • Sensor receptor IR + adaptador
Módulo de sensor receptor IR
image source: diyables.io
Adaptador de sensor para receptor IR
image source: diyables.io

Pinout del receptor infrarrojo

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

  • Pin VCC: Conecte este pin al pin de 3.3V o 5V del Arduino Nano ESP32 o a una fuente de alimentación externa.
  • Pin GND: Conecte este pin al pin GND del Arduino Nano ESP32 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 ESP32.

Cómo funciona

Cuando el usuario pulsa un botón en el control remoto por infrarrojos.

  • El control remoto IR codifica el comando correspondiente al botón en la señal IR mediante un protocolo específico.
  • El control remoto IR emite la señal infrarroja codificada.
  • El receptor IR recibe la señal infrarroja codificada.
  • El receptor IR decodifica la señal infrarroja codificada para obtener el comando.
  • El Arduino Nano ESP32 lee el comando desde el receptor IR.
  • El Arduino Nano ESP32 asigna el comando a la tecla pulsada.

Cuando se pulsa un botón en el mando a distancia por infrarrojos, ocurre la siguiente secuencia de eventos:

  • El control remoto IR codifica el comando del botón en una señal infrarroja utilizando un protocolo específico.
  • La señal infrarroja codificada es emitida por el control remoto IR.
  • El receptor IR captura y recibe la señal infrarroja codificada.
  • El receptor IR decodifica la señal infrarroja, convirtiéndola de nuevo en el comando original.
  • El Arduino Nano ESP32 lee y recupera el comando del receptor IR.
  • El Arduino Nano ESP32 luego asigna el comando recibido al botón correspondiente que fue presionado en el control remoto IR.

En esencia, estos pasos describen cómo la pulsación de un botón del control remoto IR se transforma en un comando reconocible que puede ser entendido y procesado por el Arduino Nano ESP32.

Regenerar respuesta

Puede parecer complicado, pero no te preocupes. Gracias a la biblioteca de uso sencillo DIYables_IRcontroller library, resulta increíblemente fácil de lograr.

Diagrama de Cableado

Diagrama de cableado entre Arduino Nano ESP32 y Módulo Receptor IR

Diagrama de cableado del control remoto IR para Arduino Nano y ESP32

This image is created using Fritzing. Click to enlarge image

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

Diagrama de cableado del control remoto IR para Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Diagrama de cableado entre Arduino Nano ESP32 y sensor receptor IR y adaptador

Antes de conectar el sensor receptor IR al ESP32, tienes la opción de conectarlo al adaptador. Esto facilita la integración y la configuración del sensor receptor IR con el Arduino Nano ESP32.

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

Cómo programar para el control remoto IR

  • Incluir la biblioteca:
#include <DIYables_IRcontroller.h> // Library for IR Receiver
  • Declara un objeto DIYables_IRcontroller_17 o DIYables_IRcontroller_21 que corresponde a mandos a distancia 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
  • Después de detectar la pulsación de una tecla, puedes realizar acciones según cada tecla.

Código para Arduino Nano ESP32

/* * Este código de Arduino Nano ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-ir-remote-control */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller library #define IR_RECEIVER_PIN D7 // The Arduino Nano ESP32 pin connected to IR receiver 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 ESP32 fue desarrollado por es.newbiely.com * Este código de Arduino Nano ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-ir-remote-control */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller library #define IR_RECEIVER_PIN D7 // The Arduino Nano ESP32 pin connected to IR receiver 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

  • Si es la primera vez que usas Arduino Nano ESP32, consulta cómo configurar el entorno para Arduino Nano ESP32 en Arduino IDE.
  • Abre el Administrador de Bibliotecas haciendo clic en el icono Administrador de Bibliotecas en la barra de navegación izquierda de Arduino IDE.
  • Busca "DIYables_IRcontroller", luego localiza la biblioteca DIYables_IRcontroller de DIYables.
  • Haz clic en el botón Instalar para instalar la biblioteca DIYables_IRcontroller.
Biblioteca Arduino Nano ESP32 DIYables_IRcontroller
  • Se le pedirá instalar la dependencia de la biblioteca como se muestra en la imagen a continuación:
Biblioteca IRremote para Arduino Nano ESP32
  • 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 Arduino IDE para cargar el código al Arduino Nano ESP32
  • Pulsa las teclas del mando a distancia una por una
  • Consulta el resultado en el Monitor serie.
  • Cuando presiones las teclas de un mando IR de 21 teclas una por una, este es el resultado:
COM6
Send
9 8 7 6 5 4 3 2 1 0 200+ 100+ EQ + – || >> << CH+ CH CH-
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Ahora tienes la capacidad de personalizar el código y controlar diferentes dispositivos como LEDs, ventiladores, bombas, actuadores y más usando mandos a distancia por infrarrojos. Esto significa que puedes realizar cambios en el código para que estos dispositivos respondan a tus comandos enviados a través del control remoto.

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!