Como configurar um controle remoto e receptor de IR em um Arduino

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


A comunicação por infravermelho (IR) é uma tecnologia sem fio amplamente utilizada e fácil de implementar que possui muitos aplicativos úteis. Os exemplos mais importantes na vida cotidiana são controles remotos de TV / vídeo, sensores de movimento e termômetros infravermelhos.

Como configurar um controle remoto e receptor de IR em um Arduino 1

Existem muitos projetos interessantes do Arduino que também usam comunicação por IR. Com um simples transmissor e receptor de infravermelho, você pode criar robôs com controle remoto, sensores de distância, monitores de freqüência cardíaca, controles remotos de câmeras DSLR, controles remotos de TV e muito mais.

Neste tutorial, explicarei primeiro o que é o infravermelho e como ele funciona. Depois, mostrarei como configurar um receptor de infravermelho e um controle remoto em um Arduino. Também mostrarei como usar praticamente qualquer controle remoto IR (como o da sua TV) para controlar itens conectados ao Arduino.

Agora vamos entrar em detalhes …

O que é infravermelho?

A radiação infravermelha é uma forma de luz semelhante à luz que vemos ao nosso redor. A única diferença entre a luz infravermelha e a luz visível é a frequência e o comprimento de onda. A radiação infravermelha fica fora do alcance da luz visível, para que os humanos não a vejam:

Tutorial de Arduino IR - Diagrama do espectro eletromagnético

Como o infravermelho é um tipo de luz, a comunicação por infravermelho requer uma linha direta de visão do receptor para o transmissor. Não pode transmitir através de paredes ou outros materiais, como Wi-Fi ou Bluetooth.

Como funcionam os controles remotos e receptores de infravermelho

Um sistema de comunicação por infravermelho típico requer um transmissor de infravermelho e um receptor de infravermelho. O transmissor se parece com um LED padrão, exceto que produz luz no espectro IR em vez do espectro visível. Se você der uma olhada na parte frontal de um controle remoto da TV, verá o LED do transmissor de infravermelho:

Tutorial do Arduino IR Remote - Transmissão de LED no controle remoto

O mesmo tipo de LED é usado nas placas de interrupção do transmissor IR para o Arduino. Você pode vê-lo na frente deste transmissor IR Keyes:

Tutorial do Arduino IR Remote - Transmissor IR LED 2

O receptor de infravermelho é um fotodiodo e um pré-amplificador que converte a luz de infravermelho em um sinal elétrico. Os diodos dos receptores de infravermelho geralmente ficam assim:

Tutorial do Arduino IR Remote - Dois diodos receptores de IR

Alguns podem vir em um painel de discussão como este:

Tutorial remoto do Arduino IR - Placa de interrupção do receptor de IR

Modulação de sinal IR

A luz infravermelha é emitida pelo sol, lâmpadas e qualquer outra coisa que produz calor. Isso significa que há muito ruído de luz IR ao nosso redor. Para evitar que esse ruído interfira no sinal de infravermelho, é utilizada uma técnica de modulação de sinal.

Na modulação do sinal IR, um codificador no controle remoto IR converte um sinal binário em um sinal elétrico modulado. Este sinal elétrico é enviado para o LED transmissor. O LED transmissor converte o sinal elétrico modulado em um sinal de luz IR modulado. O receptor IR desmodula o sinal de luz IR e o converte novamente em binário antes de passar as informações para um microcontrolador:

Tutorial do receptor remoto IR para Arduino - Modulação de sinal de IR

O sinal infravermelho modulado é uma série de pulsos de luz infravermelha ativados e desativados em uma alta frequência conhecida como frequência portadora. A frequência portadora usada pela maioria dos transmissores é de 38 kHz, porque é rara por natureza e, portanto, pode ser diferenciada do ruído ambiente. Dessa forma, o receptor de infravermelho saberá que o sinal de 38 kHz foi enviado pelo transmissor e não captado no ambiente circundante.

Leia Também  Clareamento em casa vs Clareamento em consultório. O que é melhor para você?

O diodo do receptor detecta todas as frequências da luz infravermelha, mas possui um filtro passa-banda e apenas permite a passagem do infravermelho a 38 kHz. Em seguida, amplifica o sinal modulado com um pré-amplificador e o converte em um sinal binário antes de enviá-lo para um microcontrolador.

Protocolos de transmissão por infravermelho

O padrão no qual o sinal IR modulado é convertido em binário é definido por um protocolo de transmissão. Existem muitos protocolos de transmissão por infravermelho. Sony, Matsushita, NEC e RC5 são alguns dos protocolos mais comuns.

O protocolo NEC também é o tipo mais comum nos projetos do Arduino, por isso vou usá-lo como exemplo para mostrar como o receptor converte o sinal IR modulado em um binário.

‘1’ lógico começa com um pulso HIGH de 562,5 µs de 38 kHz IR seguido por um pulso LOW de 1.687,5 µs. ‘0’ lógico é transmitido com um pulso HIGH de 562,5 µs, seguido por um pulso LOW de 562,5 µs:

Tutorial do receptor remoto IR para Arduino - Protocolo NEC

É assim que o protocolo NEC codifica e decodifica os dados binários em um sinal modulado. Outros protocolos diferem apenas na duração dos pulsos HIGH e LOW individuais.

Códigos IR

Cada vez que você pressiona um botão no controle remoto, um código hexadecimal exclusivo é gerado. Esta é a informação que é modulada e enviada por IR para o receptor. Para decifrar qual tecla é pressionada, o microcontrolador receptor precisa saber qual código corresponde a cada tecla no controle remoto.

Os controles remotos diferentes enviam códigos diferentes para as teclas pressionadas, portanto, você precisa determinar o código gerado para cada chave em seu controle remoto específico. Se você encontrar a folha de dados, os códigos das chaves IR devem estar listados. Caso contrário, existe um esboço simples do Arduino que lê a maioria dos controles remotos populares e imprime os códigos hexadecimais no monitor serial quando você pressiona uma tecla. Vou mostrar como configurar isso em um minuto, mas primeiro precisamos conectar o receptor ao Arduino …

Como conectar um receptor de infravermelho ao Arduino

Existem vários tipos diferentes de receptores de infravermelho, alguns autônomos e outros montados em uma placa de interrupção. Verifique a folha de dados do seu receptor de IR específico, pois os pinos podem ser organizados de maneira diferente do receptor de IR HX1838 e do conjunto remoto que estou usando aqui. No entanto, todos os receptores de infravermelho terão três pinos: sinal, terra e Vcc.

Vamos começar com as conexões de hardware. O layout dos pinos na maioria das placas de interrupção é assim:

Diagrama de pinagem da placa de interrupção do receptor de IR

A pinagem da maioria dos diodos independentes é assim:

Diagrama de Pinagem Independente do Receptor de IR

Para conectar um receptor infravermelho montado na placa de interrupção, conecte-o ao Arduino da seguinte maneira:

Arduino IR Remote Receiver - Diagrama da fiação da placa de interrupção

Para conectar um diodo receptor independente, conecte-o assim:

Arduino IR Remote Receiver - Diagrama de fiação do receptor de infravermelho independente

Programando o Receptor IR

Depois de conectar o receptor, podemos instalar a biblioteca do Arduino e iniciar a programação. Nos exemplos abaixo, mostrarei como encontrar os códigos enviados pelo controle remoto, como encontrar o protocolo IR usado pelo controle remoto, como imprimir as teclas pressionadas no monitor serial ou no LCD e, finalmente, como controlar pinos de saída do Arduino com um controle remoto.

Leia Também  8 dicas para mais comentários do blog

Instale a biblioteca IRremote

Usaremos a biblioteca IRremote para todos os exemplos de código abaixo. Você pode fazer o download de um arquivo ZIP da biblioteca aqui.

Para instalar a biblioteca a partir do arquivo ZIP, abra o IDE do Arduino, vá para Esboço> Incluir biblioteca> Incluir biblioteca .ZIP e selecione o arquivo ZIP IRremote que você baixou no link acima.

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

Encontre os códigos para o seu controle remoto

Para encontrar os códigos de chave do seu controle remoto, carregue esse código no seu Arduino e abra o monitor serial:

#include 

const int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
  Serial.begin(9600);
  irrecv.enableIRIn();
  irrecv.blink13(true);


void loop()
  if (irrecv.decode(&results))
        Serial.println(results.value, HEX);
        irrecv.resume();
  

Agora pressione cada tecla do controle remoto e registre o código hexadecimal impresso para cada tecla pressionada.

Arduino IR Remote Receiver - Localizando códigos HEX remotos

Usando o programa acima, deduzi uma tabela de chaves e seus códigos correspondentes do controle remoto que acompanha o meu receptor HX1838 IR e conjunto remoto. Observe que você receberá um código 0XFFFFFFFF quando pressionar uma tecla continuamente.

Chave Código
CH- 0xFFA25D
CH 0xFF629D
CH + 0xFFE21D
<< 0xFF22DD
>> 0xFF02FD
> || 0xFFC23D
0xFFE01F
+ 0xFFA857
EQ 0xFF906F
100+ 0xFF9867
200+ 0xFFB04F
0 0 0XFF6897
1 0xFF30CF
2 0xFF18E7
3 0xFF7A85
4 0xFF10EF
5 0xFF38C7
6 0xFF5AA5
7 0xFF42BD
8 0xFF4AB5
9 0xFF52AD

Encontre o protocolo usado pelo seu controle remoto

Saber qual protocolo o seu uso remoto pode ser útil se você quiser trabalhar em alguns projetos mais avançados. Ou você pode apenas estar curioso. O programa abaixo identificará o protocolo usado pelo seu controle remoto. Até funciona na maioria dos controles remotos da sua casa.

#include 

const int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
  Serial.begin(9600);
  irrecv.enableIRIn();
  irrecv.blink13(true);


void loop()
  if (irrecv.decode(&results))
        Serial.println(results.value, HEX);
        switch (results.decode_type)
            case NEC: Serial.println("NEC"); break ;
            case SONY: Serial.println("SONY"); break ;
            case RC5: Serial.println("RC5"); break ;
            case RC6: Serial.println("RC6"); break ;
            case DISH: Serial.println("DISH"); break ;
            case SHARP: Serial.println("SHARP"); break ;
            case JVC: Serial.println("JVC"); break ;
            case SANYO: Serial.println("SANYO"); break ;
            case MITSUBISHI: Serial.println("MITSUBISHI"); break ;
            case SAMSUNG: Serial.println("SAMSUNG"); break ;
            case LG: Serial.println("LG"); break ;
            case WHYNTER: Serial.println("WHYNTER"); break ;
            case AIWA_RC_T501: Serial.println("AIWA_RC_T501"); break ;
            case PANASONIC: Serial.println("PANASONIC"); break ;
            case DENON: Serial.println("DENON"); break ;
          default:
            case UNKNOWN: Serial.println("UNKNOWN"); break ;
          
        irrecv.resume();
 

Imprimir chaves no monitor serial

Estendi o código acima para imprimir o valor da chave em vez do código hexadecimal:

#include 

const int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long key_value = 0;

void setup()
  Serial.begin(9600);
  irrecv.enableIRIn();
  irrecv.blink13(true);


void loop()
  if (irrecv.decode(&results))
 
        if (results.value == 0XFFFFFFFF)
          results.value = key_value;

        switch(results.value)<<");
          break;
          case 0xFF02FD:
          Serial.println(">>
        key_value = results.value;
        irrecv.resume(); 
  

Se o seu controle remoto enviar códigos diferentes dos da tabela acima, substitua o código hexadecimal em cada linha onde diz:

caso 0xFFA25D:
Serial.println (“CH-“);

Nestas linhas, quando o código hexadecimal 0xFFA25D recebido, o Arduino imprime “CH-“.

Como o código funciona

Para qualquer comunicação de IR usando a biblioteca IRremote, primeiro precisamos criar um objeto chamado irrecv e especifique o número do pino em que o receptor de infravermelho está conectado (linha 3). Este objeto cuidará do protocolo e processamento das informações do receptor.

O próximo passo é criar um objeto chamado resultados , de decode_results classe, que será usada pelo irrecv objeto para compartilhar as informações decodificadas com nosso aplicativo (linha 5).

No configuração nula () primeiro, configuramos a taxa de transmissão do monitor serial. Em seguida, iniciamos o receptor de IR chamando o IRrecv função membro enableIRIn () (linha 10).

o irrecv.blink13 (verdadeiro) A função na linha 11 piscará o LED a bordo do Arduino toda vez que o receptor receber um sinal do controle remoto, o que é útil para a depuração.

No loop vazio () bloco, a função irrecv.decode retornará true se um código for recebido e o programa executará o código na instrução if. O código recebido é armazenado em results.value. Em seguida, usei um comutador para manipular cada código de IR e imprimir o valor da chave correspondente.

Antes do bloco de comutação começar, existe um bloco condicional:

if (results.value == 0XFFFFFFFF)
results.value = valor_chave;

Se recebermos 0XFFFFFFFF do controle remoto, isso significa uma repetição da tecla anterior. Portanto, para lidar com o padrão de repetição de chave, estou armazenando o código hexadecimal em uma variável global valor chave toda vez que um código é recebido:

key_value = results.value;

Quando você recebe um padrão de repetição, o valor armazenado anteriormente é usado como o pressionamento de tecla atual.

No final de loop vazio () seção, chamamos irrecv.resume () para redefinir o receptor e prepará-lo para receber o próximo código.

Imprimir chaves em um LCD

Em vez de imprimir os valores-chave no monitor serial, você também pode exibir as informações em um LCD. Confira nosso artigo sobre como configurar e programar um LCD no Arduino para obter mais informações sobre como programar o LCD, mas a configuração básica é semelhante a esta:

Arduino IR Remote - Imprimir chaves no LCD

O resistor define o brilho da luz de fundo do LCD. Pode ser de 200 ohms a 2K ohms. O potenciômetro define o contraste dos caracteres. Eu normalmente uso um potenciômetro de 10K ohm para este.

Depois que tudo estiver conectado, faça o upload deste código no Arduino:

#include 
#include 

const int RECV_PIN = 7;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long key_value = 0;

void setup()
  Serial.begin(9600);
  irrecv.enableIRIn(); 
  irrecv.blink13(true);
  lcd.begin(16, 2);


void loop()
  if (irrecv.decode(&results))
 
        if (results.value == 0XFFFFFFFF)
        results.value = key_value;
        lcd.setCursor(0, 0);
        lcd.clear();
        
        switch(results.value)
          case 0xFFA25D:          
          lcd.print("CH-");
          break;
          case 0xFF629D:
          lcd.print("CH");
          break;
          case 0xFFE21D:
          lcd.print("CH+");
          break;
          case 0xFF22DD:
          lcd.print("
        key_value = results.value;
        irrecv.resume(); 
  

Novamente, se os códigos hexadecimais não corresponderem aos códigos emitidos pelo controle remoto, substitua-os por cada caractere em que ele diz caso 0xXXXXXXXX;.

Usando o controle remoto IR para controlar coisas

Agora vou mostrar uma demonstração simples de como você pode usar o controle remoto IR para controlar os pinos de saída do Arduino. Neste exemplo, acenderemos um LED quando um botão específico for pressionado. Você pode modificar facilmente o código para executar ações como controlar servomotores ou ativar relés pressionando qualquer botão do controle remoto.

O circuito de exemplo tem o receptor IR conectado ao Arduino, com um LED vermelho conectado ao pino 10 e um LED verde conectado ao pino 11:

Arduino IR Remote Receiver - Controle de LEDs com o IR Remote

O código abaixo escreverá o pino digital 10 HIGH por 2 segundos quando o botão “5” for pressionado e escreverá o pino digital 11 HIGH por 2 segundos quando o botão “2” for pressionado:

#include 

const int RECV_PIN = 7;
IRrecv irrecv(RECV_PIN);
decode_results results;
const int redPin = 10;
const int greenPin = 11;


void setup()
  irrecv.enableIRIn();
  irrecv.blink13(true);
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);


void loop()
    if (irrecv.decode(&results))

        switch(results.value)
          case 0xFF38C7: //Keypad button "5"
          digitalWrite(redPin, HIGH);
          delay(2000);
          digitalWrite(redPin, LOW);
          

        switch(results.value)
          case 0xFF18E7: //Keypad button "2"
          digitalWrite(greenPin, HIGH);
          delay(2000);
          digitalWrite(greenPin, LOW);
          

        irrecv.resume(); 
    

Até agora, cobrimos as propriedades da radiação infravermelha e como a comunicação acontece entre o transmissor e o receptor. Vimos como identificar os códigos de chave IR para um determinado controle remoto. Aprendemos como exibir as teclas pressionadas no monitor serial e na tela LCD. Por fim, mostrei como controlar a saída do Arduino com o controle remoto. Divirta-se jogando com isso e deixe-nos saber nos comentários se você tiver alguma dúvida ou dificuldade em configurar isso!

Krishna Pattabiraman é uma escritora convidada frequente do Circuit Basics e fundadora do www.codelectron.com.

Blogs Relacionados:
https://responsibleradio.com/20-ideias-bem-sucedidas-de-negocios-em-casa-na-india/

https://draincleaningdenverco.com/o-que-e-um-nome-de-dominio/

https://weeventos.com.br/usar-o-android-no-windows-codigo-bude-net/

https://clipstudio.com.br/obter-mais-feito-pelo-almoco-em-seguida-outros-fazer-em-1-dia/

https://multieletropecas.com.br/eletronicos-para-cozinha/

https://holidayservice-tn.com/entao-voce-se-liberta-como-prestador-de-servicos-da-armadilha-do-tempo-contra-o-dinheiro/

https://teleingressos.com.br/eu-pensei-que-fossemos-frugais-entao-eu-encontrei-seu-meio-milhao-em-dividas-com-cartao-de-credito/

https://proverasfestas.com.br/como-escrever-um-e-mail-de-desculpas-apos-um-desastre-de-newsletter/

https://coniferinc.com/o-perfil-de-marketing-do-istp-sensing-thinking-perception-introverts-as-marketers/

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br