NodeMCU – Clonando Teclas do Controle Remoto (Método RAW)

NodeMCU – Clonando Teclas do Controle Remoto (Método RAW)

Nesta prática você vai aprender a clonar as teclas de um controle remoto utilizando o NodeMCU em conjunto com um fotorreceptor infravermelho. A clonagem das teclas será feita utilizando o método RAW.

A tecnologia dominante nos controles remotos de TVs, aparelho de som, DVD, BluRay e muitos outros aparelhos  é o infravermelho (IR). O princípio básico no funcionamento de um controle remoto IR é o uso da luz para levar sinais entre o controle e o aparelho que será controlado.

O infravermelho está na faixa invisível do espectro eletromagnético:

img01_nodemcu_clonando_um_controle_remoto_tv_dvd_bluray_sky_ar_condicionado_arduino

O controle remoto IR envia sinais que representam códigos específicos para controle de aparelhos. Estes códigos correspondem a comandos como ligar, desligar, aumentar o volume, diminuir volume ou mudar de canal por exemplo. O receptor IR decodifica em dados o sinal enviado pelo controle remoto e executa a tarefa correspondente ao comando recebido.

É importante ressaltar que sinais IR não são transmitidos através de paredes. É necessário que o emissor IR (controle remoto por exemplo) esteja apontado para o receptor IR. Além disso, o sinal IR está sujeito a interferências do ambiente. Para minimizar as interferências causadas por outras fontes de luz infravermelho, o receptor IR responde apenas a um comprimento de onda que normalmente é de 980nm.

A luz do sol pode confundir o receptor IR, pois possui luz infravermelha no comprimento de onda na faixa de 980nm. Para minimizar este problema o sinal de um controle remoto IR é modulado a uma frequência não presente na luz do sol e o receptor responde apenas ao sinal modulado a 980nm nessa frequência. O sistema não é prefeito, contudo diminui muito as interferências.

A título de curiosidade e aprendizado:

img02_nodemcu_clonando_um_controle_remoto_tv_dvd_bluray_sky_ar_condicionado_arduino

Na imagem acima temos dois componentes e ambos são sensíveis à luz infravermelha. Do lado esquerdo temos um fototransistor e do lado direito um fotorreceptor. O fotorreceptor é que utilizamos para clonar os sinais IR vindos do controle remoto.

O fotorreceptor é comumente utilizado em projetos que usam controle remoto IR e geralmente opera na faixa de 38KHz, contudo há alguns modelos que são capazes de ler outras frequências.

O envio de sinais IR se dá através de protocolos específicos. Abaixo temos uma lista com alguns protocolos:

ITT Protocol
JVC Protocol
Mitsubishi Protocol
NEC Protocol
LG Protocol
Samsung Protocol
Nokia NRC17
Sharp Protocol
Sony SIRC
Philips RC-5
Philips RC-6
Phiilps RC-MM
Philips RECS80
RCA Protocol
X-Sat Protocol

O fotorreceptor IR em conjunto com o NodeMCU consegue reconhecer diversos protocolos de sinais IR, contudo o comando para enviar o código de volta ao aparelho a ser controlado se torna complicado em muitos casos devido a programação complexa para tratar de forma correta o sinal IR antes de ser enviado. Protocolos do tipo NEC, LG e Samsung são mais tranquilos de trabalhar e os mais comuns.

Uma alternativa aos protocolos mencionados acima, é a utilização do método RAW para enviar os sinais IR decodificados de volta ao aparelho a ser controlado. Utilizando este método não é necessário saber qual protocolo corresponde ao aparelho que será controlado, necessitando saber somente a linha de códigos RAW, tamanho da linha e a frequência do sinal. Vale ressaltar que o código RAW precisa ser trabalhado antes de ser enviado ao aparelho a ser controlado.

Nos passos abaixo você vai aprender a trabalhar o código RAW antes de adicioná-lo ao código final, porém antes disso será necessário montar o circuito com o fotorreceptor IR que será responsável por capturar o sinal IR vindo do controle remoto que será clonado.

Abaixo está a lista dos itens necessários para esta prática e mais informações sobre eles.

NodeMCU
Fotorreceptor / Receptor IR VS1838B
Controle Remoto Infravermelho (pode ser outro modelo)
Protoboard
Cabo Jumper Macho-Fêmea

Abaixo está o esquema de ligação para esta prática:

img03_nodemcu_clonando_um_controle_remoto_tv_dvd_bluray_sky_ar_condicionado_arduino

Feito o esquema de ligação, será necessário instalar uma biblioteca na IDE do Arduino para em seguida carregar o código no NodeMCU.

Se ainda não tem a IDE do Arduino instalada e configurada para o NodeMCU e não sabe como fazer a instalação de bibliotecas na IDE, acesse os links abaixo e em seguida retorne para continuar:

NodeMCU – Instalação no Windows
NodeMCU – Configurando a IDE do Arduino
Arduino – Importando bibliotecas para a IDE

Faça o download da biblioteca IRremoteESP8266-master e em seguida faça a instalação da mesma na IDE do Arduino.

Em seguida, será necessário carregar o código no NodeMCU. Conecte o cabo USB no seu NodeMCU e a outra ponta na porta USB do seu computador. Na IDE confira se a placa selecionada é o NodeMCU e se a porta COM selecionada é a correta.

O código para testes está abaixo, basta copiar o mesmo, colar na IDE, salvar e carregar no NodeMCU:

Após o arquivo ser carregado abra o monitor serial da IDE e verifique se a taxa de velocidade no rodapé do monitor está configurada para 115200 bauds, caso não esteja faça a alteração. Aguarde 10 segundos e em seguida aponte o controle remoto que será clonado para o fotorreceptor IR que está conectado ao NodeMCU e aperte algum dos botões e aguarde o fotorreceptor IR capturar e informar os dados no monitor serial:

img04_nodemcu_clonando_um_controle_remoto_tv_dvd_bluray_sky_ar_condicionado_arduino

Na imagem acima é possível ver um exemplo de captura de código IR vindo de um controle remoto de uma TV LG 32 polegadas. Veja abaixo a descrição dos dados destacados na imagem acima:

20DF10EF: código hexadecimal referente ao botão apertado. A biblioteca IRremote do NodeMCU captura o código do botão pressionado no controle remoto e gera o valor hexadecimal do mesmo. Vale ressaltar que o valor pode ser convertido para outras bases numéricas (binário, por exemplo).
32 bits: frequência do sinal IR.
68: tamanho da linha RAW (68 blocos).

Os demais dados da linha RAW que estão sublinhados por uma linha azul é a sequência RAW que precisamos, onde começa a partir do primeiro bloco de código da linha e vai até o último bloco da sequência.

Sempre pressione a tecla a ser clonada por pelo menos 5 vezes e veja se o código hexadecimal se mantém igual, pois pode ocorrer de uma sequência inválida ser identificada e consequentemente você pegará uma linha RAW inválida. É importante ressaltar que a biblioteca IRremoteESP8266 aos poucos está sendo melhorada, logo, pode ocorrer de você ter dificuldades em pegar o código correto da tecla do seu controle remoto.

Outra consideração importante é que nem sempre os dados da linha RAW (de um código válido) serão iguais, mesmo que você pressione por diversas vezes o mesmo botão. Sempre haverá variações na linha RAW, contudo todas as linhas (de um código válido) são válidas.

Caso você mantenha a tecla do controle pressionada constantemente, o fotorreceptor vai decodificar uma sequência inválida do tipo “FFFFFFFF” de “0 BITS”.

img05_nodemcu_clonando_um_controle_remoto_tv_dvd_bluray_sky_ar_condicionado_arduino

Nos passos abaixo vamos trabalhar a linha RAW e deixa-la pronta para ser enviada de volta ao aparelho que será controlado através do NodeMCU.

Como exemplo será utilizado à linha RAW da imagem abaixo:

img06_nodemcu_clonando_um_controle_remoto_tv_dvd_bluray_sky_ar_condicionado_arduino

A linha RAW inteira não é possível ser observada no monitor serial, porém basta você rolar a barra de rolagem horizontal do monitor serial para identificar todos os blocos de códigos da linha e selecionar a linha completa.

img06-1_nodemcu_clonando_um_controle_remoto_tv_dvd_bluray_sky_ar_condicionado_arduino

Acima está à linha RAW completa que foi retirada do monitor serial (selecione toda à linha e dê “Ctrl + C”). Veja que ela possui números negativos e positivos.

Primeiro será necessário trocar todos os espaços da sequência por uma ‘,’ (VÍRGULA). Uma forma mais simples de fazer essa troca é através do Excel ou no próprio Word. Abra algum dos dois programas e cole a sua sequência RAW. Utilize o comando “Ctrl + U” para abrir a ferramenta de substituição:

img07_nodemcu_clonando_um_controle_remoto_tv_dvd_bluray_sky_ar_condicionado_arduino

Em “Localizar” aperte a tecla de espaço do seu teclado apenas uma vez e em “Substituir por” coloque uma vírgula e clique em substituir tudo. Sua sequência passa ter um formato similar ao da sequência abaixo:

img07-1_nodemcu_clonando_um_controle_remoto_tv_dvd_bluray_sky_ar_condicionado_arduino

Para finalizar o processo de substituição, é necessário eliminar os sinais de ‘’. Novamente pressione “Ctrl + U” para abrir a ferramenta de substituição:

img08_nodemcu_clonando_um_controle_remoto_tv_dvd_bluray_sky_ar_condicionado_arduino

Em “Localizar” aperte a tecla ‘’ do seu teclado apenas uma vez e em “Substituir por” deixe sem espaço e sem nenhum caractere e clique em substituir tudo. Sua sequência passa ter um formato similar ao da sequência abaixo:

img08-1_nodemcu_clonando_um_controle_remoto_tv_dvd_bluray_sky_ar_condicionado_arduino

É interessante executar esse processo de substituição após ter todas as linhas RAWs correspondentes aos botões do seu controle remoto, pois tendo todas em um único local você pode efetuar as substituições em todas as linhas simultaneamente e tornar menos trabalhoso esse processo.

Não deixe de salvar cada linha RAW. É ideal que elas fiquem salvas em uma planilha.

Na próxima prática vamos inserir no código fonte as linhas RAW clonadas para que quando um comando for enviado pelo monitor serial, o RAW correspondente seja enviado ao aparelho a ser controlado.

Clique no link abaixo e acesse a próxima prática:

NodeMCU – Enviando códigos clonados do Controle Remoto (Método RAW)

Gostou deste tutorial? Então deixa seu comentário, dúvida ou sugestão aí embaixo!

Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop

Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.

Obrigado e até a próxima!

Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.

NodeMCU – Clonando Teclas do Controle Remoto (Método RAW)
53 votos / Média de avaliação: 4.9 / Pontuação: 98.49%


Postagem anterior:
Próxima postagem:
Postagem feita por

Formado em Engenharia da Computação pela Faculdade Presidente Antônio Carlos, fundador e CEO da MasterWalker Electronic Shop. Se preocupa com o aprendizado dos seus clientes e daqueles interessados em aprender sobre Arduino e plataformas embarcadas em geral.

Existem 7 comentários para esta postagem
    • Euler Oliveira Autor às 07:08

      Olá Joziel.

      Verifique se colocou a biblioteca IRremoteESP8266-master na pasta correta. Acabei de testar a biblioteca e o código disponível na postagem e está tudo funcionando normalmente.

  1. joziel às 22:55

    coloquei isso #include resolveu

    mais deu outro erros, esse ‘class decode_results’ has no member named ‘panasonicAddress’
    nao estou conseguindo copila o codigo devido esse massagem. sera que pode me ajuda fico muito grato

    • Euler Oliveira Autor às 07:08

      Conforme respondi anteriormente, Verifique se colocou a biblioteca IRremoteESP8266-master na pasta correta, pois fiz o teste da biblioteca e do código disponível na postagem e está tudo funcionando sem problemas.

  2. Diogenes às 18:30

    Boa noite,
    Tenho uma duvida referente a biblioteca ” IRremoteESP8266-master”, gostaria de saber se ela funciona com a nova versão desta placa, no caso a ESP-32 pois pretendo comprar uma para um projeto, mas caso não funcione na ESP-32, irei comprar a ESP-8266 mesmo.

    Desde ja, agradeço a atenção dada.

  3. Anderson às 12:56

    Olá amigo, a minha linha RAW está aparecendo como RAW (100), imagino que é só substituir todo o código 68 para 100. É isso mesmo? Obs: esse RAW 100 veio do ar condicionado.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *