fbpx
ArduinoNovidade

Como controlar a TV utilizando Arduino

O sensor infravermelho é um dispositivo eletrônico que verifica os sinais de infravermelho em faixas de frequência específicas definidas e os converte em sinais elétricos em seu pino de saída. Os sinais de infravermelho são comumente utilizados para transmitir comandos pelo ar em curtas distâncias, como nos controles remotos da TV e outros dispositivos semelhantes.

Cada sinal infravermelho enviado por um controle representa um código específico, que são convertidos em sinais elétricos. Estes sinais elétricos também podem ser convertidos de volta em códigos. Um exemplo de uso destas conversões é no controle remoto da TV. Quando pressionamos um botão no controle remoto da TV, ele gera sinais correspondente ao código do botão e o envia para um receptor embutido na TV, que consiste em um decodificador dos sinais transmitidos pelo controle. Ao interpretar o código de cada tecla do controle pressionadas, o aparelho pode executar vários tipos de operação, como ligar e desligar a TV, aumentar o volume, trocar o canal, entre outras.

Programar e utilizar um controle remoto infravermelho é uma operação simples e pode ser muito útil em vários projetos de automação. Usando um LED emissor e um módulo receptor infravermelho (Figura 1) em conjunto com o Arduino é possível implementar várias aplicações interessantes, como controlar remotamente lâmpadas, alarmes, câmeras fotográficas, acionar aparelhos diversos, ou, até mesmo, copiar o código das teclas de outro controle remoto, como o da sua TV.

Ilustração do emissor e receptor infravermelho
Figura 1 – LED emissor infravermelho e módulo receptor infravermelho.

Este projeto tem como objetivo clonar alguns botões do controle remoto da televisão e utilizar a placa Arduino para controlar algumas funções da sua TV.


MATERIAIS NECESSÁRIOS


ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES

Certifique-se de que sua placa Arduino esteja desligada para evitar possíveis problemas. Em seguida, monte o circuito ilustrado na Figura 2 utilizando a protoboard, o módulo receptor infravermelho, o emissor infravermelho e os fios.

Imagem ilustrativa de uma simulação de um projeto para controlar funções da TV com Arduino
Figura 2 – Circuito para projeto Controlar a TV utilizando Arduino.

Ao elaborar o circuito observe os seguintes itens:

  • O primeiro pino do módulo sensor receptor infravermelho, representado pelo sinal “–”, deve ser conectado ao GND da placa Arduino, o pino do meio deve ser alimentado com 5V e o último pino, representado pela letra “S,” deve ser conectado a um dos pinos digitais da placa UNO. Em nosso exemplo, conectamos ele ao pino digital 11.
  • Assim como o LED, o emissor infravermelho possui polaridade. O cátodo (terminal menor) deve ser conectado ao GND da placa UNO.


ELABORANDO O CÓDIGO

Neste projeto vamos clonar os botões ligar/desligar, canal + e canal – . Para tal, vamos utilizar a biblioteca IRremote.h que implementa as funcionalidades do sensor receptor infravermelho e do emissor infravermelho tornando suas aplicações mais simples.

Desta forma, vamos proceder a instalação da biblioteca IRremote.h. Esta biblioteca encontra-se disponível para download no seguinte link:

www.blogdarobotica.com/biblioteca-IRremote

Após realizar o download da biblioteca, vamos instalá-la por meio do seguinte caminho: Toolbar > Sketch > Incluir biblioteca > Adicionar biblioteca ZIP. Com a biblioteca instalada, feche o Arduino IDE e abra-o novamente.

Neste exemplo, faz-se necessária a implementação de dois Sketch. O primeiro para clonar os botões do controle remoto da TV e o segundo para programar a placa UNO para controlar algumas funções da sua TV.


Sketch 1: Clonar os botões do controle remoto da TV

Para programar o Arduino para controlar funções da TV, precisamos inicialmente conhecer o código correspondente aos botões do controle remoto que utilizaremos. Este código é, geralmente, um número em hexadecimal (sistema numérico de base 16). Cada botão do controle remoto possui um código único.

Para detectar os códigos do controle remoto correspondentes aos botões Ligar/Desligar, Canal + e Canal – utilizaremos um código IRrecvDumpV2 que se encontra disponível nos exemplos da biblioteca IRremote.h. Para acessá-lo siga o caminho na Toolbar: Arquivo > Exemplos > IRremote > IRrecvDumpV2, conforme a Figura 3.

print ilustrativo tirado da arduino IDE mostra a utilização do IRrecvDumpV2
Figura 3 – Caminho para acessar o código IRrecvDumpV2.

Desta forma, abra o exemplo IRrecvDumpV2 e faça o upload para o seu Arduino.

Em seguida, abra o monitor serial e pressione uma vez o botão Ligar/Desligar do controle da sua televisão apontado para o módulo receptor infravermelho. Aparecerá no monitor serial a codificação do botão pressionado, como o da Figura 4.

Foto ilustra um print retirado mostrando o codigo do botao ligar e desligar
Figura 4 – Código do botão Ligar/Desligar.

Os parâmetros selecionados em vermelho serão utilizados no segundo Sketch e devem ser anotados. O parâmetro Encoding exibe o tipo de codificação do controle, em nosso exemplo a codificação foi do tipo NEC. O parâmetro Code exibe o código em hexadecimal do botão (20DF10EF) e o comprimento do código identificado, no nosso exemplo o código tem 32 bits de comprimento.

Em seguida, pressione o botão Canal + e, posteriormente, o Canal -. Assim como no botão Ligar/Desligar, anote os parâmetros.


Sketch 2: Controlar algumas funções da TV com emissor infravermelho e o Arduino

Iniciaremos a programação do Sketch para controlar algumas funções da TV com emissor infravermelho e a placa Arduino incluindo a biblioteca IRremote.h ao código. Em seguida, criaremos o objeto irsend do tipo IRsend.

No setup apenas iniciaremos a comunicação serial através da instrução Serial.begin(9600);

No loop utilizaremos a instrução de controle switch … case, utilizaremos o valor lido da serial como variável de comparação. Caso o valor digitado pelo usuário no monitor seja igual a 1 será executado o código do case 1 será executado, enviando o código hexadecimal 0x20DF10EF, equivalente ao botão ligar/desligar da TV, através do emissor infravermelho que deve ser direcionado ao receptor da TV.

De modo semelhante, quando o usuário digitar 2 será executado o código do case 2, enviando o código equivalente ao botão Canal +. Por fim, se o usuário digitar 3, o código do case 3 será executado, enviando o hexadecimal que representa o botão Canal – do controle remoto da TV.

O trecho no código responsável por fazer com que o emissor infravermelho envie o código hexadecimal deve ter a seguinte estrutura:

irsend.sendEncoding(0xCode Hexadecimal, Comprimento do código)

No nosso caso, o trecho do código para emitir o sinal equivalente ao botão Ligar/Desligar ficou da seguinte maneira:

irsend.sendNEC(0x20DF10EF, 32);

O código deste projeto segue a seguinte estrutura:

#include <IRremote.h>//Inlui a biblioteca IRremote
IRsend irsend;//Cria o objeto irsend do tipo IRsend

void setup() {
  Serial.begin(9600);//Inicializa a comunicação serial
}
void loop() {
  switch (Serial.read()) {//Leia a serial e escolha:
    case ‘1’://Caso valor da serial seja igual a 1
      irsend.sendNEC(0x20DF10EF, 32);//Envie através do emissor o hexadecimal 20DF10EF, equivalente ao botão Ligar/Desligar a TV
      Serial.println("Ligar/Desligar a TV");//Imprime na serial a mensagem "Ligar/Desligar a TV"
      break;//Interrompe o comando Switch
      
    case ‘2’://Caso o valor da serial seja igual a 2
      irsend.sendNEC(0x20DF00FF, 32);//Envie através do emissor o hexadecimal 20DF00FF, equivalente ao botão Canal +
      Serial.println("Canal +");//Imprime na serial a mensagem "Canal+"
      break;//Interrompe o comando Switch
      
    case ‘3’://Caso o valor da serial seja igual a 3
      irsend.sendNEC(0x20DF807F, 32);//Envie através do emissor o hexadecimal 20DF807F, equivalente ao botão Canal -
      Serial.println("Canal -");//Imprime na serial a mensagem "Canal-"
      break;//Interrompe o comando Switch
  }
}

Espero ter ajudado,

Obrigada a todos e em caso de dúvidas deixe seu comentário abaixo!

Att. Carol Correia Viana

Dúvidas? Deixe seu comentário

Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.

Carol Correia Viana

Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.

Deixe uma pergunta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.