Arduino Nano ESP32 - Controle Remoto IR

Você provavelmente já viu o controle remoto infravermelho, também chamado de controle remoto IR, ao usar aparelhos como TVs e aparelhos de ar-condicionado em casa... Neste guia, vamos aprender como usar o controle remoto infravermelho (IR) e um receptor infravermelho para controlar o Arduino Nano ESP32. Em detalhes, vamos aprender:

Controle IR - receptor IR - ESP32

Hardware Necessário

1×Arduino Nano ESP32
1×Cabo USB Tipo-A para Tipo-C (para PC com USB-A)
1×Cabo USB Tipo-C para Tipo-C (para PC com USB-C)
1×IR Remote Controller and Receiver Kit
1×Bateria CR2025 (para controle remoto IR)
1×Protoboard
1×Fios Jumper
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para Arduino Nano
1×(Recomendado) Placa de Expansão Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentação para Arduino Nano ESP32

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

Sobre o Controle Remoto IR

Um sistema de controle IR tem dois componentes: um controle remoto IR e um receptor IR.

  • O controle remoto IR é usado para enviar comandos usando sinais infravermelhos.
  • O receptor IR captura e interpreta esses sinais para controlar o dispositivo.

Um kit IR normalmente é formado pelos dois componentes citados acima: um controle remoto IR e um receptor IR.

Controle remoto IR

O controle remoto IR é um dispositivo portátil que emite sinais infravermelhos. Ele foi projetado com um teclado que tem vários botões:

  • Cada botão do controle remoto recebe uma função ou comando específico.
  • Quando um botão é pressionado, o controle emite um sinal infravermelho com um código ou padrão único ligado ao botão pressionado.
  • Esses sinais infravermelhos ficam dentro do espectro infravermelho e não são visíveis ao olho humano.
Controle IR
image source: diyables.io

Receptor IR

O módulo receptor IR é um sensor que detecta e recebe os sinais infravermelhos emitidos pelo controle remoto.

O receptor infravermelho detecta os sinais infravermelhos que chegam e os converte no código (comando) que representa o botão pressionado no controle remoto.

O receptor IR pode ser um sensor ou um módulo. Você pode usar as seguintes opções:

  • Apenas o módulo receptor IR
  • Apenas o sensor receptor IR
  • Sensor receptor IR + adaptador
Módulo sensor receptor IR
image source: diyables.io
Adaptador do sensor receptor IR
image source: diyables.io

Pinagem do Receptor IR

O módulo ou sensor receptor IR tem três pinos:

  • Pino VCC: Conecte este pino ao pino 3.3V ou 5V do Arduino Nano ESP32 ou a uma fonte de alimentação externa.
  • Pino GND: Conecte este pino ao pino GND do Arduino Nano ESP32 ou da fonte de alimentação externa..
  • Pino OUT (saída): Este pino é a saída do módulo receptor IR. Conectado a um pino de entrada digital do Arduino Nano ESP32.

Como Funciona

Quando o usuário pressiona um botão no controle remoto IR

  • O controle remoto IR codifica o comando correspondente ao botão em um sinal infravermelho por meio de um protocolo específico
  • O controle remoto IR emite o sinal infravermelho codificado
  • O receptor IR recebe o sinal infravermelho codificado
  • O receptor IR decodifica o sinal infravermelho codificado em um comando
  • O Arduino Nano ESP32 lê o comando do receptor IR
  • O Arduino Nano ESP32 associa o comando à tecla pressionada

Quando um botão é pressionado no controle remoto IR, a seguinte sequência de eventos acontece:

  • O controle remoto IR codifica o comando do botão em um sinal infravermelho usando um protocolo específico.
  • O sinal infravermelho codificado é emitido pelo controle remoto IR.
  • O receptor IR captura e recebe o sinal infravermelho codificado.
  • O receptor IR decodifica o sinal infravermelho, convertendo-o de volta no comando original.
  • O Arduino Nano ESP32 lê e obtém o comando do receptor IR.
  • Em seguida, o Arduino Nano ESP32 associa o comando recebido ao botão correspondente que foi pressionado no controle remoto IR.

Em essência, esses passos descrevem como o botão pressionado no controle remoto IR é transformado em um comando reconhecível, que pode ser entendido e processado pelo Arduino Nano ESP32.

Regenerate response

Pode parecer complicado, mas não se preocupe. Graças à biblioteca DIYables_IRcontroller, que é fácil de usar, fazer isso fica incrivelmente simples.

Diagrama de Ligação

Diagrama de ligação entre o Arduino Nano ESP32 e o Módulo Receptor IR

Diagrama de ligação do controle remoto IR com o Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Diagrama de ligação entre o Arduino Nano ESP32 e o Sensor Receptor IR

Diagrama de ligação do controle remoto IR com o Arduino Nano ESP32

This image is created using Fritzing. Click to enlarge image

Diagrama de ligação entre o Arduino Nano ESP32 e o Sensor Receptor IR com Adaptador

Antes de conectar o sensor receptor IR ao ESP32, você tem a opção de conectá-lo ao adaptador. Isso facilita a integração e a configuração do sensor receptor IR com o Arduino Nano ESP32.

Adaptador do receptor do controle remoto IR com o Arduino Nano ESP32
image source: diyables.io

Como Programar o Controle Remoto IR

  • Inclua a biblioteca:
#include <DIYables_IRcontroller.h> // Library for IR Receiver
  • Declare um objeto DIYables_IRcontroller_17 ou DIYables_IRcontroller_21 correspondente aos controles remotos IR de 17 teclas ou de 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
  • Inicialize o controle IR.
irController.begin();
  • No loop, verifique se uma tecla foi pressionada ou não. Se sim, obtenha a tecla
Key17 key = irController.getKey(); // if using 17-key IR controller // OR Key21 key = irController.getKey(); // if using 21-key IR controller
  • Depois de detectar o pressionamento de uma tecla, você pode executar ações para cada tecla.

Código do Arduino Nano ESP32

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.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 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.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; } } }

Passos Rápidos

  • Se esta é a primeira vez que você usa o Arduino Nano ESP32, veja como configurar o ambiente para o Arduino Nano ESP32 no Arduino IDE.
  • Abra o Library Manager clicando no ícone Library Manager na barra de navegação à esquerda do Arduino IDE
  • Pesquise "DIYables_IRcontroller" e encontre a biblioteca DIYables_IRcontroller da DIYables
  • Clique no botão Install para instalar a biblioteca DIYables_IRcontroller.
Biblioteca DIYables_IRcontroller para Arduino Nano ESP32
  • Será pedido para você instalar a dependência da biblioteca, como na imagem abaixo:
Biblioteca IRremote para Arduino Nano ESP32
  • Clique no botão Install all para instalar a dependência
  • Copie o código acima e abra no Arduino IDE
  • Clique no botão Upload do Arduino IDE para fazer o upload do código para o Arduino Nano ESP32
  • Pressione as teclas do controle remoto uma por uma
  • Veja o resultado no Serial Monitor.
  • Quando você pressiona as teclas de um controle IR de 21 teclas uma por uma, este é o resultado:
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
9 8 7 6 5 4 3 2 1 0 200+ 100+ EQ + – || >> << CH+ CH CH-
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

Agora você pode personalizar o código e controlar diferentes dispositivos, como LEDs, ventiladores, bombas, atuadores e mais, usando controles remotos IR. Isso significa que você pode alterar o código para fazer esses dispositivos responderem aos comandos enviados pelo controle remoto.

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!