Decodificando Controles Remotos Pretos ou Brancos com Arduino

Decodificando Controles Remotos Pretos ou Brancos com Arduino

Neste tutorial, aprenderemos como decifrar as teclas de controles remotos infravermelhos preto e branco usando um Arduino e um receptor IR. Ao final deste projeto, você será capaz de determinar qual tecla foi pressionada no controle remoto e exibir essa informação no monitor serial. Isso pode ser útil para controlar dispositivos com qualquer controle remoto que você tenha, como TVs ou outros aparelhos (no vídeo às 01:00).

Deconding-IR-remote-main

Usaremos uma configuração simples que inclui um Arduino, um módulo receptor infravermelho e o código necessário para decodificar os sinais. O receptor infravermelho capturará os sinais do controle remoto, e o Arduino interpretará esses sinais para determinar qual botão foi pressionado. Este projeto é simples e pode ser adaptado para vários controles remotos.

Deconding-IR-remote-main-2

Hardware Explicado

Os componentes principais para este projeto incluem a placa Arduino e um módulo receptor IR, tipicamente designado como VS1838B. O Arduino servirá como o controlador principal, executando o código que processa os sinais recebidos do controle remoto. O receptor IR captura os sinais infravermelhos emitidos pelo controle remoto e os converte em um formato que o Arduino pode entender.

Pinos do receptor remoto IR VS1838B
Pinos do receptor remoto IR VS1838B

O VS1838B opera em uma faixa de voltagem de 2,7V a 5,5V, tornando-o compatível com a maioria das placas Arduino. Ele pode detectar sinais a uma distância de 10 a 15 metros, dependendo das condições. O receptor infravermelho emite um sinal digital que indica qual botão no controle remoto foi pressionado, permitindo que o Arduino responda adequadamente.

Detalhes da Ficha Técnica

Fabricante VS1838B
Número da peça VS1838B
Tensão lógica/IO 2,7-5,5 V
Tensão de alimentação 5 V
Corrente de saída (por canal) 1,5 mA
Distância de recepção 10-15 m
Frequência de entrada 38 kHz
Corrente de repouso 0,8 mA (tip.)
Ângulo de operação 70 graus
Pacote TO-220

  • Assegure o fornecimento adequado de voltagem para evitar danos ao receptor IR.
  • Mantenha o módulo receptor longe da luz solar direta ou de fontes fortes de infravermelho.
  • Use resistores pull-up se necessário para estabilizar as leituras de sinal.
  • As conexões de fiação devem ser seguras para evitar sinais intermitentes.
  • Teste diferentes controles remotos para ver como eles funcionam com a configuração.
  • Deconding-IR-remote-main-1

Instruções de Fiação

Para conectar o receptor IR ao Arduino, primeiro conecte o pino VCC do receptor IR ao pino 5V no Arduino. Em seguida, conecte o pino GND do receptor a um dos pinos GND no Arduino. Por fim, conecte o pino de sinal (geralmente marcado como SIG ou OUT) do receptor IR ao pino digital 11 no Arduino.

Certifique-se de que as conexões estão seguras, pois conexões soltas podem levar a leituras inconsistentes. Se você estiver usando uma versão PCB do receptor IR ou um módulo nu, a fiação permanece a mesma; apenas certifique-se de identificar corretamente os pinos de acordo com a rotulagem do módulo (no vídeo às 03:15).

Instale a biblioteca IRremote

Inicie o IDE do Arduino.Arduino.ccClique no ícone da biblioteca à esquerda e pesquise porIRremotee clique em "Instalar" para instalá-lo.

#include <IRremote.h>

Exemplos de Código e Guia passo a passo

int RECV_PIN = 11;
const char type ='W'; // W for white, B for black
const boolean PCB = 0; // 1 for PCB, 0 for bare module
IRrecv irrecv(RECV_PIN);

Neste trecho, definimos o número do pino para o receptor IR comRECV_PINdefinido para 11. Também especificamos o tipo de controle remoto que está sendo usado com otypevariável, onde 'W' indica um controle remoto branco e 'B' indica um controle remoto preto. OPCBa variável distingue entre usar uma versão de PCB do receptor ou um módulo nu.

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}

No textosetup()função, inicializamos a comunicação serial a 9600 bauds e começamos o receptor IR. Isso é crucial para monitorar a saída no monitor serial, permitindo-nos ver qual tecla foi pressionada.

void loop() {
  if (irrecv.decode(&results)) {
    robojaxValidateCode(results.value); // Validate the received code
    irrecv.resume(); // Receive the next value
  }
  delay(100);
}

O principalloop()verifica se o receptor IR decodificou um sinal. Se o fez, chama orobojaxValidateCodefunção para processar o valor recebido e então retoma a escuta para o próximo sinal. Odelay(100)garante que o loop não execute muito rapidamente, o que pode ajudar no processamento de sinais.

Demonstração / O que Esperar

Depois que tudo estiver configurado e o código estiver carregado, abra o monitor serial para ver a saída. Quando você pressionar uma tecla no controle remoto, deverá ver o nome da tecla correspondente exibido no monitor. Se a tecla não for reconhecida, será exibido "Tecla desconhecida." Certifique-se de pressionar as teclas com firmeza, pois conexões soltas podem causar leituras incorretas (no vídeo em 05:40).

Se você pressionar uma tecla continuamente, a saída pode mostrar valores repetidos ou códigos hexadecimais. Esse comportamento é normal, e você pode modificar o código para filtrar esses sinais contínuos, se desejar. Além disso, você pode ajustar o código para realizar ações com base em pressionamentos específicos de teclas, como acender luzes ou controlar outros dispositivos.

Marcas de tempo do vídeo

  • 00:00 Início
  • 00:56 Hardware é Explicado
  • 04:26 Explicação da Fiação
  • 05:20 O código é explicado
  • 12:27 Demonstração da decodificação de código

Imagens

Decodificando qualquer controle remoto preto ou controle remoto branco com Arduino
Decodificando qualquer controle remoto preto ou controle remoto branco com Arduino
Pinos do receptor remoto IR VS1838B
Pinos do receptor remoto IR VS1838B
Deconding-IR-remote-main
Deconding-IR-remote-main
Deconding-IR-remote-main-1
Deconding-IR-remote-main-1
Deconding-IR-remote-main-2
Deconding-IR-remote-main-2
137-Source code for decoding infrared remote controllers using Arduino
Idioma: C++
Copiado!

Coisas que você pode precisar

Recursos e referências

Ainda não há recursos.

Arquivos📁

Nenhum arquivo disponível.