Introdução
No curso básico da framework Arduino nos vimos como fazer a entrada de dados do usuário via botões e na aula passada vimos uma outra forma de entrada de informações do usuário que foi o teclado matricial.
Porém, em algumas situações, nossos projetos estarão fora do alcance das mãos do usuário, sendo necessário um dispositivo que permita a entrada de dados a uma certa distância do dispositivo e para isso veremos hoje como funcionam os receptores e controles remotos via IR.
Compreendendo o processo
A maioria de nós já teve algum contado com aparelhos de controle remoto estejam eles nas televisões, nos codificadores de TV a cabo ou nos dispositivos dongle para assistir Streaming na TV. A maioria desses dispositivos trabalham com a comunicação por infravermelho (IR).
Infravermelho é uma radiação eletromagnética formada por ondas cujo comprimento é maior do que a luz visível, sendo portanto invisível aos olhos humanos. Uma maneira prática de "ver" o infravermelho e testar as teclas dos controles remotos é visualizar o acionamento de um controle de TV direcionado a câmera de um celular.
![]() |
Testando as teclas de um controle remoto. Fonte: ABC da Eletrônica |
Para a comunicação por infravermelho funcionar precisaremos de dois elementos: Um emissor de infravermelho e um receptor de infravermelho.
É importante ressaltar que ambos deverão estar no alcance e na linha de visão um do outro, pois ao contrário de outras formas de comunicação wireless como Bluetooth e Wi-Fi, o IR não contornam paredes e obstáculos.
Conhecendo o Receptor Infravermelho
São fotodiodos que transformam a luz infravermelho recebida em corrente elétrica. Quanto mais luz, maior a corrente. Podem ser encontrados na forma de sensor vendido separadamente ou na forma de um módulo pronto instalado com outros componentes.
Fisicamente assemelha-se a um Led escuro porem com três terminais (VCC, GND e Sinal), podendo ou não ter um encapsulamento protetor, eventualmente formando uma janela para concentrar o recebimento.
![]() |
Exemplos de receptores IR |
Existem também os Led receptores de infravermelho que diferentemente dos receptores acima, possuem apenas dois terminais. Geralmente são vendidos aos pares junto com um Led emissor de IR, podendo ser diferenciado do emissor por ser mais escuro.
No entanto, existem modelos como o Til32e e o Til78 onde ambos podem ser comercializados na cor transparente. Nesse caso, para diferenciar o TIL32 (emissor IR) do TIL78 (receptor IR) deve se olhar ambos por cima. No emissor é possível ver com facilidade o núcleo.
![]() |
À esquerda um Led emissor e a direita um Led receptor de IR |
Com relação aos módulos encontraremos também os módulos receptores e os módulos emissores de IR, podendo facilmente ser distintos um do outro pela cor escura do elemento receptor. Quando o módulo apresenta os dois elementos, isto é, receptor e transmissor, estamos diante de um Sensor de obstáculo reflexivo IR, assunto de futura postagem .
![]() |
Exemplos de diferentes módulos |
Com relação às especificações, geralmente aceitam uma voltagem de 2 a 5,5 V e uma corrente de 0,5 a 1,5 mA, trabalhando geralmente na frequência de 38 Khz aceitando a transmissão da maioria dos controles remotos do mercado.
Lembrando que o estudante sempre deve consultar o Datasheet antes da aquisição, pois os valores aqui divulgados são genéricos.
Conhecendo o Controle Remoto Infravermelho
Os controles remotos IR para uso em projetos embarcados geralmente diferem dos controles tradicionais de TV por serem mais finos e possuírem 17 ou 21 teclas. São dispositivos que além do emissor de IR possuem um microcontrolador.
Esse microcontrolador vem programado para trabalhar com um dos protocolos de transmissão adotados pela indústria que codificam a emissão de pulsos infravermelhos que serão transmitidos pelo elemento emissor.
Esses códigos variam de acordo com o fabricante, sendo o padrão NEC um dos mais populares. A seguir temos uma tabela que relaciona a tecla do controle, com o código de comandos e hexadecimal correspondente para o padrão NEC em um controle remoto de 17 teclas.
![]() |
Tabela NEC para correspondência entre teclas e códigos |
Esses controles geralmente são alimentados por baterias tipo "moeda" como a CR2025 de 3V e prometem um alcance de 8 a 10 metros, mas a prática nos mostra um alcance próximo a metade desses valores.
A maioria dos controles trabalha em 38 Khz e para evitar incompatibilidade com receptores, muitos fornecedores comercializam Kits contendo um módulo receptor IR, um controle remoto IR e geralmente um Led emissor adicional.
![]() |
Exemplo de Kit comercializado |
Montagem
Abaixo temos o link de uma montagem básica mostrando o uso de um receptor e de um controle remoto infravermelho no Wokwi. A plataforma adota como padrão a tabela de comandos e códigos da NEC e recomenda a utilização da biblioteca IRRemote ou IRMP.
Depois de iniciar a simulação, clique nas teclas do controle remoto e observe o número do comando mostrado no monitor serial.
![]() |
Simulação no Wokwi |
Link: https://wokwi.com/projects/414386241192682497
Sketch
Nesse código temos a inclusão da biblioteca IRremote, a declaração da variável pino para armazenar o pino do receptor e de uma variável chamada comando para armazenar código de comando transmitido pelo controle remoto. Lembrando que o pino também poderia ter sido definido como uma constante.
Na linha 4 estamos instanciando o objeto receptor com base na classe IRrecv da biblioteca, usando como parâmetro o pino informado previamente. Na função setup() estamos iniciando o monitor serial, imprimindo uma mensagem de instrução na tela e iniciando a recepção de IR pelo receptor com o método enableIRIn() (linha 10).
Na função loop() estamos testando na linha 15 se o receptor recebeu "algo" do emissor com o método decode(). Se verdadeiro, estamos atribuindo a variável comando o código de comando recebido (linha 16) e imprimindo este código na tela do monitor serial
Em seguida temos um switch ... case que analisa o valor atribuído a variável comando e imprimindo na tela a identificação da tecla pressionada no controle remoto. Caso não seja identificado esse comando, temos uma mensagem de aviso (linha 81).
É importante finalizar esse código com o método resume() para habilitar o receptor a receber novos comandos, do contrário teremos um looping infinito identificando apenas a primeira tecla pressionada.
- #include <IRremote.h>
- int pino=13;
- int comando=0;
- IRrecv receptor(pino);
- void setup()
- {
- Serial.begin(9600);
- Serial.println("Clique em um botão do controle");
- receptor.enableIRIn();
- }
- void loop()
- {
- if (receptor.decode()) {
- comando=receptor.decodedIRData.command;
- Serial.println(("Comando da tecla: "));
- Serial.println((comando));
- switch (comando) {
- case 162:
- Serial.println("POWER");
- break;
- case 226:
- Serial.println("MENU");
- break;
- case 34:
- Serial.println("TEST");
- break;
- case 2:
- Serial.println("+");
- break;
- case 194:
- Serial.println("Voltar");
- break;
- case 224:
- Serial.println("Anterior.");
- break;
- case 168:
- Serial.println("PLAY");
- break;
- case 144:
- Serial.println("Próximo");
- break;
- case 104:
- Serial.println("Número: 0");
- break;
- case 152:
- Serial.println("-");
- break;
- case 176:
- Serial.println("Clear");
- break;
- case 48:
- Serial.println("Número: 1");
- break;
- case 24:
- Serial.println("Número: 2");
- break;
- case 122:
- Serial.println("Número: 3");
- break;
- case 16:
- Serial.println("Número: 4");
- break;
- case 56:
- Serial.println("Número: 5");
- break;
- case 90:
- Serial.println("Número: 6");
- break;
- case 66:
- Serial.println("Número: 7");
- break;
- case 74:
- Serial.println("Número: 8");
- break;
- case 82:
- Serial.println("Número: 9");
- break;
- default:
- Serial.println("Código não identificado!");
- }
- receptor.resume();
- }
- }
Caso tenha possibilidade de montar fisicamente esse projeto, sugiro testá-lo com outros controles remotos disponíveis para tentar identificar o código de comando de cada tecla. Lembrando que receptor e emissor precisam trabalhar com a mesma frequência. Se for outro protocolo diferente do NEC, identificaremos apenas o comando, não as teclas.
Referências
BLOG ELETROGRATE. Guia Completo do Controle Remoto IR + Receptor IR para Arduino. Disponível em <https://blog.eletrogate.com/guia-completo-do-controle-remoto-ir-receptor-ir-para-arduino/> Acesso em 12 nov 2024.
BLOG MASTER WALKER. Como usar com Arduino – Controle Remoto Infravermelho. Disponível em <https://blogmasterwalkershop.com.br/arduino/como-usar-com-arduino-controle-remoto-infravermelho> Acesso em 12 nov 2024.
STA ELETRÔNICA. Como Utilizar Um Controle Remoto E Receptor Ir Com O Arduino. Disponível em <https://www.sta-eletronica.com.br/artigos/arduinos/como-utilizar-um-controle-remoto-e-receptor-ir-com-o-arduino> Acesso em 12 nov 2024.
ROBO CORE. Módulo Receptor IR. Disponível em <https://www.robocore.net/radio-frequencia-infravermelho/modulo-receptor-ir> Acesso em 12 nov 2024.
WOKWI. Referência do wokwi-ir-receiver. Disponível em <https://docs.wokwi.com/pt-BR/parts/wokwi-ir-receiver/> Acesso em 12 nov 2024.
WOKWI. Referência do wokwi-ir-remote. Disponível em <https://docs.wokwi.com/pt-BR/parts/wokwi-ir-remote/> Acesso em 12 nov 2024.