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.
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
- 1 x Placa UNO SMD R3 Atmega328 compatível com Arduino UNO;
- 1 x Cabo USB;
- 1 x Emissor infravermelho;
- 1 x Módulo sensor receptor infravermelho KY-022;
- 1 x Resistor de 150 Ω, 200 Ω ou 220 Ω;
- 1 x Protoboard;
- Fios de jumper macho-macho.
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.
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.
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.
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
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.