Nesta prática você vai aprender a montar com o NodeMCU…
NodeMCU – Enviando códigos clonados do Controle Remoto (Método RAW)
Nesta prática você vai aprender a enviar ao aparelho os comandos clonados de um controle remoto. O envio será feito a partir do NodeMCU em conjunto com o LED Emissor IR.
Na prática NodeMCU – Clonando Teclas do Controle Remoto (Método RAW) foi ensinado a capturar as teclas do controle remoto utilizando o NodeMCU em conjunto com um fotorreceptor infravermelho (IR). A clonagem das teclas foi feita utilizando o método RAW. Nos passos abaixo vamos dar continuidade para que os códigos clonados possam ser enviados ao aparelho que será controlado.
Abaixo está a lista dos itens necessários para esta prática e mais informações sobre eles.
– NodeMCU
– Led Emissor Infravermelho (IR) 5mm 940nm
– Resistor de 100Ω
– Protoboard
– Cabo Jumper Macho-Fêmea
Além dos itens, também será necessário que você tenha executado a prática NodeMCU – Clonando Teclas do Controle Remoto (Método RAW).
Abaixo está o esquema de ligação para esta prática:
É importante que o LED Emissor IR fique na horizontal, ou seja, apontado para o visor (receptor IR) do aparelho que vai receber os comandos clonados. Monte o circuito com o LED Emissor IR apontado a uma distância máxima de 70cm do visor (receptor IR).
O código para testes está abaixo, basta copiar o mesmo e colar na IDE do Arduino. Se ainda não tem a IDE do Arduino instalada e configurada para o NodeMCU, acesse os links abaixo e em seguida retorne para continuar:
NodeMCU – Instalação no Windows
NodeMCU – Configurando a IDE do Arduino
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
#include <IRremoteESP8266.h> //INCLUSÃO DE BIBLIOTECA IRsend irsend(14); //FUNÇÃO RESPONSÁVEL PELO MÉTODO DE ENVIO DO SINAL IR / UTILIZA O GPIO14(D5) int tamanho = 68; //TAMANHO DA LINHA RAW(68 BLOCOS) int frequencia = 32; //FREQUÊNCIA DO SINAL IR(32KHz) // BOTÃO LIGA / DESLIGA unsigned int LD[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO EJECT //unsigned int EJ[68] = {}; //UTILIZADO PARA APARELHOS DE SOM // BOTÃO MUTE unsigned int MT[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO PLAY / PAUSE unsigned int PP[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO VOLTAR unsigned int VT[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO ADIANTAR unsigned int AT[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO UM unsigned int UM[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO DOIS unsigned int DOIS[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO TRES unsigned int TRES[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO QUATRO unsigned int QUATRO[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO CINCO unsigned int CINCO[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO SEIS unsigned int SEIS[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO SETE unsigned int SETE[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO OITO unsigned int OITO[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO NOVE unsigned int NOVE[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO AUMENTAR VOLUME unsigned int VMAIS[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO ZERO unsigned int ZERO[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO AVANÇAR CANAIS unsigned int CMAIS[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO ENTRADAS unsigned int ENTRADAS[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO DIMINUIR VOLUME unsigned int VMENOS[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO OK unsigned int BOTAOOK[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES // BOTÃO VOLTAR CANAIS unsigned int CMENOS[68] = {}; //COLE A LINHA RAW CORRESPONDENTE DENTRO DAS CHAVES void setup(){ irsend.begin(); //INICIALIZA A FUNÇÃO Serial.begin(115200); //INICIALIZA A PORTA SERIAL } void loop(){ char c = Serial.read(); //VARIÁVEL RESPONSÁVEL POR RECEBER O CARACTER DIGITADO NA JANELA SERIAL if (c == 'a'){ //SE CARACTER DIGITADO FOR IGUAL A "a", FAZ irsend.sendRaw(LD,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Liga / Desliga"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 'b'){ //SE CARACTER DIGITADO FOR IGUAL A "b", FAZ irsend.sendRaw(MT,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Mute"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 'c'){ //SE CARACTER DIGITADO FOR IGUAL A "c", FAZ irsend.sendRaw(PP,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Play / Pause"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 'd'){ //SE CARACTER DIGITADO FOR IGUAL A "d", FAZ irsend.sendRaw(VT,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Faixa Anterior"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 'e'){ //SE CARACTER DIGITADO FOR IGUAL A "e", FAZ irsend.sendRaw(AT,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Proxima Faixa"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 'f'){ //SE CARACTER DIGITADO FOR IGUAL A "f", FAZ irsend.sendRaw(UM,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Um"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 'g'){ //SE CARACTER DIGITADO FOR IGUAL A "g", FAZ irsend.sendRaw(DOIS,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Dois"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 'h'){ //SE CARACTER DIGITADO FOR IGUAL A "h", FAZ irsend.sendRaw(TRES,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Tres"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 'i'){ //SE CARACTER DIGITADO FOR IGUAL A "i", FAZ irsend.sendRaw(QUATRO,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Quatro"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 'j'){ //SE CARACTER DIGITADO FOR IGUAL A "j", FAZ irsend.sendRaw(CINCO,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Cinco"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 'k'){ //SE CARACTER DIGITADO FOR IGUAL A "k", FAZ irsend.sendRaw(SEIS,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Seis"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 'l'){ //SE CARACTER DIGITADO FOR IGUAL A "l", FAZ irsend.sendRaw(SETE,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Sete"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 'm'){ //SE CARACTER DIGITADO FOR IGUAL A "m", FAZ irsend.sendRaw(OITO,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Oito"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 'n'){ //SE CARACTER DIGITADO FOR IGUAL A "n", FAZ irsend.sendRaw(NOVE,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Nove"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 'o'){ //SE CARACTER DIGITADO FOR IGUAL A "o", FAZ irsend.sendRaw(VMAIS,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Aumentar Volume"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 'p'){ //SE CARACTER DIGITADO FOR IGUAL A "p", FAZ irsend.sendRaw(ZERO,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Diminuir Volume"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 'q'){ //SE CARACTER DIGITADO FOR IGUAL A "q", FAZ irsend.sendRaw(CMAIS,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Proximo Canal"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 'r'){ //SE CARACTER DIGITADO FOR IGUAL A "r", FAZ irsend.sendRaw(ENTRADAS,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Mudar Entrada"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 's'){ //SE CARACTER DIGITADO FOR IGUAL A "s", FAZ irsend.sendRaw(VMENOS,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Diminuir Volume"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 't'){ //SE CARACTER DIGITADO FOR IGUAL A "t", FAZ irsend.sendRaw(BOTAOOK,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: OK"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } if (c == 'u'){ //SE CARACTER DIGITADO FOR IGUAL A "u", FAZ irsend.sendRaw(CMENOS,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR Serial.println("Comando enviado: Canal Anterior"); delay(50); // TEMPO(EM MILISEGUNDOS) DE INTERVALO ENTRE UM COMANDO E OUTRO } } |
Vamos fazer a inserção das linhas RAW dentro do código fonte, basta pegar as linhas RAW que você obteve na prática anterior e colocar cada uma delas no parâmetro correspondente.
Seu código vai estar similar ao da imagem abaixo:
Com calma vá colando cada uma das linhas RAW em seu parâmetro correspondente. Veja na imagem abaixo como o código fica após preencher alguns parâmetros:
Veja a linha “unsigned int LD[68]” como exemplo. Inicialmente a linha tinha o aspecto:
unsigned int LD[68] = {};
Após inserir a linha RAW correspondente, essa mesma linha assumiu a forma:
A linha “unsigned int LD[68]” recebeu a linha RAW referente ao botão liga / desliga do controle remoto clonado.
O exemplo acima é válido para cada uma das linhas que corresponde a um botão do controle remoto.
Preencha cada um dos parâmetros dos botões de acordo com sua necessidade e em seguida salve o arquivo. Confira cada parâmetro preenchido e verifique se não deixou caracteres a mais. Leia os comentários do código fonte para entender o que cada linha faz.
Terminado as edições, carregue 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. 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.
Em seguida, digite no campo de entrada de dados a letra “a” (sem aspas) e clique no botão “ENVIAR”. Supondo que o aparelho esteja ligado e que a letra “a” possui a linha RAW referente ao comando para ligar / desligar, se tudo estiver correto (código RAW e LED Emissor IR apontado diretamente para o receptor IR) o aparelho vai responder ao comando enviado e será desligado. Em seguida digite a letra “b” (sem aspas) e envie e veja se o comando é executado pelo aparelho. Faça esse procedimento com cada um dos comandos disponíveis no código e que foram preenchidos de acordo com o controle remoto que você clonou.
No vídeo abaixo você pode ver o resultado final desta prática. Utilizei uma mini caixa de som e executei comandos básicos como ligar, desligar, play, pause, próxima faixa e faixa anterior:
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.
Postagem anterior: NodeMCU – Clonando Teclas do Controle Remoto (Método RAW)
Próxima postagem: NodeMCU – Como criar um Web Server e conectar a uma rede WIFI
boa tarde, é tudo q estou precisando… mas copiando seu o codigo…no monitor serial …aqui nao aparece os comandos dados, nem uma piscada do emissor.. tem como ajudar? obrigado
Opa, mas gostaria de parabenizar pelos ótimos textos! Muito bem escritos e com ótimas imagens de apoio!
Agradeço pelo comentário e reconhecimento!
Vlw!!!
Amigo se você ler a biblioteca que está usando, verá que não tem a necessidade de usar RAW, um código daquele tamanho, basta você usar a representação HEX da mesma. Pode ser lido na biblioteca IRremote, ou mesmo na IRremoteESP8266.
Olá Alberio.
Agradeço pelo comentário!
Ao usar RAW, não é necessário se preocupar com o tipo do protocolo do dispositivo IR que será controlado e isto está informado no texto:
“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.”
Poderia sim ter usado o exemplo enviando o código HEX com a função sendNEC, mas achei mais prudente ensinar a usar a linha RAW.
Gostaria de saber se é possível ampliar esse sinal para mais que 70cm de distância?
Olá Bruno.
Agradeço pelo comentário!
Com o circuito adequado é possível sim.
Saberia especificar o circuito adequado? pois estou precisando aumentar a distância também.
boa tarde
o meu código deu esse erro abaixo, oq pode ser?
C:\Users\Xpress\Documents\Arduino\sendraw\sendraw.ino: In function ‘void loop()’:
sendraw:21:9: error: ‘irsend’ was not declared in this scope
irsend.sendRaw(LD,tamanho,frequencia); // PARÂMETROS NECESSÁRIOS PARA ENVIO DO SINAL IR
^
exit status 1
‘IRsend’ does not name a type
Olá Jessé.
Agradeço pelo comentário!
Você deve instalar a biblioteca IRremote no IDE do Arduino conforme orientação no tutorial:
https://blogmasterwalkershop.com.br/embarcados/nodemcu/nodemcu-clonando-teclas-do-controle-remoto-metodo-raw/
Bem, eu uso essa biblioteca no meu esp32, o wemos d1 r32, e funciona perfeitamente. Inclusive fiz um sistema q controla minha fita led(pelo IR) e liga minha tv( por WoL), tanto pela web local, como pelo telegram também
Bom Dia Euler
O que tenho que fazer para esse código rodar no ESP32, da vários erros na hora de carregar. E depois de alguns ajustes ele ainda aparece essa mensagem no Monitor Serial = “IRsend not implemented for ESP32 yet”. Vc poderia me ajudar? Gostei muito desse tutorial parabéns
Estou com mesmo erro Uziel Alves de Azevedo Junior se descobriu a solução me avise pf …
Olá Emanuel.
Agradeço pelo comentário!
Conforme respondi ao Uziel:
Esta biblioteca foi adaptada para o ESP8266.
Para utilização com ESP32 terá que utilizar outra biblioteca. Veja esta, por exemplo:
https://github.com/SensorsIot/Definitive-Guide-to-IR
Agora deu certo mas irsend.begin(); não esta sendo aceita , e tirando essa linha do código ele fica mandando o código contante pra tv … a algo q eu possa fazer ?
Recomendo que verifique a documentação desta biblioteca do link mencionado anteriormente e veja se fala algo sobre o envio de códigos IR.
Ainda não utilizei IR com ESP32, logo, não consigo te orientar por enquanto.
Olá Uziel.
Agradeço pelo comentário!
Esta biblioteca foi adaptada para o ESP8266.
Para utilização com ESP32 terá que utilizar outra biblioteca. Veja esta, por exemplo:
https://github.com/SensorsIot/Definitive-Guide-to-IR
BOA TARDE… TUDO BEM?
ENTÃO… ESTOU CLONANDO OS CODIGOS DOS MEUS APARELHOS , ATRAVES DO COMANDO irsend.Samsung , nao foi possivel clonar . nem DVD e nem TV!! Por serem extenção Samsung . eu testei e a biblioteca IRremote so reconhece extenção NEC, RC5, RC6 e Sony!!
Tive que mudar para extenção Rw, mas só o DVD aceitou o código!!
Eu espelhei o código enviado para tv , mandando para a TV e o receptor ir de outro arduino pra ver se havia erros , mas o codigo sai perfeito!! Mas a abençoada da TV nao responde ao codigo! eu envio o codigo atraves do controle ( espelhado tambem) a TV aceita!!
Deve haver algum detalhe que esta passando despercebido!!
TV Samsung smartv linha F.
OBIGADO!
Olá Grandioso Euler,
Em vez de NODEMCU fiz no WEMOS D1. Tudo certo e funcionando . Meu questionamento seria quanto a tomada de decisões (famoso “if” ) neste arquivos de IR em HEX.
Meu amigo acha posso enviar todo o arquivo RAW (em HEX) como um único comando ou teria que transformar este arquivo RAW(já em HEX) em outro formato ?
Desde já agradeço vossa atenção e presteza
Olá
Bom dia Euler trabalho abençoado!
Queria está vendo cm você meu caro em que botão do Blynk posso ta usando cm controle de TV E AR CONDICIONADO.
AGUARDO .
OBGD…….
Boa noite amigo , eu fiz igualzinho , no meu arduino mega
meu ar condicionado , e meu home da sansumg , consigui só capiturar codigo Raw , tem algum metodo ou biblioteca que decodifica esse codigo , sem ser em codigo Raw,
porque no meu codigo acho que esta dando muito o delay por motivo do Codigo Raw
Obrigado
Boa tarde, Euler Oliveir,
Gostaria de perguntar sobre essa sua programação que você realizou relacionado ao codigo clonado,
To com problema no meu sensor de infravermelho(vs1838b);
Não consigo clonar o sinal da minha televisão,mas acabou que coincidiu que a mesma TV que você clonou (32 Polegadas da LG) é a que eu vou usar no meu projeto(TCC)
Todavia,por não conseguir clonar,gostaria de perdir para você me enviar essa programação sua,pois já q n consigo clonar,se você me enviasse ela feita,ia me ajudar a parte de clonar e já poderia emitir o sinal infravermelho
Se possivel,me envie o quanto antes,pois é TCC,se puder me enviar no E-mail,ajudaria muito,Obrigado
-Erick
Olá Erick.
O código que utilizei é o mesmo disponível nesta postagem.
No código que tenho aqui não há mais os códigos RAWs do controle da LG, pois eu substitui por um controle de outro aparelho e de outra marca.
OLá amigo, não deu erro ao inviar o código para o arduíno
Olá Natailton.
Se não deu erro, então está correto.
Boa tarde muito bacana o projeto, parabéns! é possivél controlar pelo um APP android enviando a placa via wi fi e após ao infra?
Olá João Paulo.
Agradeço pelo seu comentário!
Sim, é possível fazer isto sim. Basta clonar as teclas do controle e em seguida decidir qual a melhor forma: armazenar os códigos clonados em uma base de dados dentro do app e os botões do app vão enviar para o NodeMCU os códigos de acordo com o botão pressionado ou deixar os códigos armazenados no NodeMCU e o botão pressionado no app envia apenas um parâmetro que será responsável por indicar ao NodeMCU qual código será enviado pelo emissor IR.
Boa noite! Estou fazendo um projeto assim porem fiquei preso nessa parte de usar o esp8266 como servidor e fazer o comendo via wi-fi poderia fazer um tutorial explicando. Otimo site parabens