- Descrição: O Módulo Fotoresistor (Sensor) LDR possui em sua…
Como usar com Arduino – Controle Remoto Infravermelho
– Descrição:
O Controle Remoto Infravermelho é um dispositivo utilizado para controlar de forma remota algum tipo de aparelho compatível com tecnologia infravermelha.
Com a utilização do Controle Remoto Infravermelho em conjunto com uma plataforma microcontrolada (Arduino, por exemplo) e um fotorreceptor IR, é possível clonar as teclas do controle para em seguida definir ações especificas na plataforma de acordo com a tecla pressionada no controle que foi clonado. Depois que o controle remoto for clonado é possível fazer o controle de LEDs, acionamento de relés para acender / apagar lâmpadas e muitas outras possibilidades junto a plataforma microcontrolada.
Especificações:
– Controle remoto infravermelho
– Alimentação: bateria CR25
– Teclado numérico / navegação
– Possui 21 teclas
– Compacto
– Aplicações:
Projetos com Arduino ou outras plataformas microcontroladas em que seja necessário clonar as teclas do controle remoto para acionamento de algum tipo de carga ou envio de informação a partir do pressionamento das teclas.
– Proposta da prática:
1) Utilizar o Fotorreceptor / Receptor IR VS1838B em conjunto com o Arduino e fazer a clonagem das teclas 1 / 2 / 3 do controle remoto.
2) Em seguida controlar três LEDs a partir do pressionamento das teclas clonadas.
– Lista dos itens necessários:
01 – Arduino com Cabo USB
01 – Controle Remoto Infravermelho
01 – Fotorreceptor / Receptor IR VS1838B
01 – LED Difuso 5mm Vermelho
01 – LED Difuso 5mm Verde
01 – LED Difuso 5MM Amarelo
03 – Resistor de 150Ω
01 – Protoboard
09 – Cabos Jumper macho-macho
– Esquema de ligação da prática (clonagem das teclas):
– Tutorial de instalação e configuração do ambiente de programação do Arduino:
Arduino – Instalação e Configuração da IDE no Windows
– Biblioteca:
– Importando bibliotecas para o ambiente de programação do Arduino:
Arduino – Importando bibliotecas para a IDE
– Código (clonagem das teclas):
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 |
#include <IRremote.h> //INCLUSÃO DE BIBLIOTECA int RECV_PIN = 2; //PINO DIGITAL UTILIZADO PELO FOTORRECEPTOR KY-022 IRrecv irrecv(RECV_PIN); //PASSA O PARÂMETRO PARA A FUNÇÃO irrecv decode_results results; //VARIÁVEL QUE ARMAZENA OS RESULTADOS (SINAL IR RECEBIDO) void setup(){ Serial.begin(9600); //INICIALIZA A SERIAL irrecv.enableIRIn(); //INICIALIZA A RECEPÇÃO DE SINAIS IR } void loop(){ //CAPTURA O SINAL IR if (irrecv.decode(&results)) { Serial.print("Código HEX: "); //IMPRIME O TEXTO NO MONITOR SERIAL Serial.println(results.value, HEX); //IMPRIME NO MONITOR SERIAL O CÓDIGO IR EM FORMATO HEXADECIMAL Serial.print("Código DEC: "); //IMPRIME O TEXTO NO MONITOR SERIAL Serial.println(results.value); //IMPRIME NO MONITOR SERIAL O CÓDIGO IR EM FORMATO DECIMAL Serial.println(""); //QUEBRA DE LINHA NA SERIAL irrecv.resume(); //AGUARDA O RECEBIMENTO DE UM NOVO SINAL IR } delay(100); //INTERVALO DE 100 MILISSEGUNDOS } |
– Resultado (clonagem das teclas):
OBS: veja que os códigos são capturados em formato hexadecimal (HEX) e em decimal (DEC). O ideal é que pressione o mesmo botão mais de uma vez para confirmar que o código clonado está correto. Anote os códigos (DEC) que você clonar, pois você irá precisar deles a seguir.
– Esquema de ligação da prática (controle dos LEDs):
– Código (controle dos LEDs):
OBS: antes de carregar o código abaixo no Arduino, substitua os valores das variáveis codTecla1 (linha 11) / codTecla2 (linha 12) / codTecla3 (linha 13) pelos códigos (DEC) que você clonou e anotou.
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 |
#include <IRremote.h> //INCLUSÃO DE BIBLIOTECA int RECV_PIN = 2; //PINO DIGITAL UTILIZADO PELO FOTORRECEPTOR KY-022 IRrecv irrecv(RECV_PIN); //PASSA O PARÂMETRO PARA A FUNÇÃO irrecv const int ledVerde = 8; //PINO DIGITAL UTILIZADO PELO LED VERMELHO const int ledAmarelo = 9; //PINO DIGITAL UTILIZADO PELO LED VERDE const int ledVermelho = 10; //PINO DIGITAL UTILIZADO PELO LED AMARELO long int codTecla1 = 16724175; //CÓDIGO DA TECLA 1 (ALTERE PARA O CÓDIGO DECIMAL QUE VOCÊ CAPTUROU) long int codTecla2 = 16718055; //CÓDIGO DA TECLA 2 (ALTERE PARA O CÓDIGO DECIMAL QUE VOCÊ CAPTUROU) long int codTecla3 = 16743045; //CÓDIGO DA TECLA 3 (ALTERE PARA O CÓDIGO DECIMAL QUE VOCÊ CAPTUROU) int stLedVermelho = 0; //VARIÁVEL QUE CONTROLA O ESTADO DO LED VERMELHO (LIGADO / DESLIGADO) int stLedVerde = 0; //VARIÁVEL QUE CONTROLA O ESTADO DO LED VERDE (LIGADO / DESLIGADO) int stLedAmarelo = 0; //VARIÁVEL QUE CONTROLA O ESTADO DO LED AMARELO (LIGADO / DESLIGADO) decode_results results; //VARIÁVEL QUE ARMAZENA OS RESULTADOS (SINAL IR RECEBIDO) void setup(){ irrecv.enableIRIn(); //INICIALIZA A RECEPÇÃO DE SINAIS IR pinMode(ledVermelho, OUTPUT); //DEFINE O PINO COMO SAÍDA pinMode(ledVerde, OUTPUT); //DEFINE O PINO COMO SAÍDA pinMode(ledAmarelo, OUTPUT); //DEFINE O PINO COMO SAÍDA } void loop() { //CAPTURA O SINAL IR if (irrecv.decode(&results)) { if((results.value == codTecla1) && (stLedVerde == 0)){ //SE O CÓDIGO IR CAPTURADO FOR IGUAL A codTecla1 E A //VARIÁVEL stLedVerde FOR IGUAL A 0, FAZ digitalWrite(ledVerde, HIGH); //LIGA O LED VERDE stLedVerde = 1; //VARIÁVEL RECEBE O VALOR 1 }else{//SENÃO, FAZ if((results.value == codTecla1) && (stLedVerde == 1)){ ///SE O CÓDIGO IR CAPTURADO FOR IGUAL A codTecla1 E A //VARIÁVEL stLedVerde FOR IGUAL A 1, FAZ digitalWrite(ledVerde, LOW); //DESLIGA O LED VERDE stLedVerde = 0; //VARIÁVEL RECEBE O VALOR 0 } } if((results.value == codTecla2) && (stLedAmarelo == 0)){ //SE O CÓDIGO IR CAPTURADO FOR IGUAL A codTecla2 E A //VARIÁVEL stLedAmarelo FOR IGUAL A 0, FAZ digitalWrite(ledAmarelo, HIGH); //LIGA O LED AMARELO stLedAmarelo = 1; //VARIÁVEL RECEBE O VALOR 1 }else{//SENÃO, FAZ if((results.value == codTecla2) && (stLedAmarelo == 1)){ ///SE O CÓDIGO IR CAPTURADO FOR IGUAL A codTecla2 E A //VARIÁVEL stLedAmarelo FOR IGUAL A 1, FAZ digitalWrite(ledAmarelo, LOW); //DESLIGA O LED AMARELO stLedAmarelo = 0; //VARIÁVEL RECEBE O VALOR 0 } } if((results.value == codTecla3) && (stLedVermelho == 0)){ //SE O CÓDIGO IR CAPTURADO FOR IGUAL A codTecla3 E A //VARIÁVEL stLedVermelho FOR IGUAL A 0, FAZ digitalWrite(ledVermelho, HIGH); //LIGA O LED VERMELHO stLedVermelho = 1; //VARIÁVEL RECEBE O VALOR 1 }else{//SENÃO, FAZ if((results.value == codTecla3) && (stLedVermelho == 1)){ ///SE O CÓDIGO IR CAPTURADO FOR IGUAL A codTecla3 E A //VARIÁVEL stLedVermelho FOR IGUAL A 1, FAZ digitalWrite(ledVermelho, LOW); //DESLIGA O LED VERMELHO stLedVermelho = 0; //VARIÁVEL RECEBE O VALOR 0 } } irrecv.resume(); //AGUARDA O RECEBIMENTO DE UM NOVO SINAL IR } delay(10); //INTERVALO DE 10 MILISSEGUNDOS } |
– Resultado final (controle dos LEDs):
Gostou desta prática? 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: Como usar com Arduino – Encoder Rotativo com Botão
Próxima postagem: Blynk – Controle do ESP32 NodeMCU-32S via Bluetooth (BLE)
Fiz esse projeto mas no meu caso os leds vão ficando mais fracos dependendo como a porta que coloco diminui de numero. Ex: Led da porta 12 normal, led da porta 11 fraco, led da porta 10 muito fraco. Sabe o que pode estar acontecendo?
Primeira coisa, observe os resistores se possuem o mesmo valor. Ou também observe os LEDs,
VERMELHO – Tensão de 1,8 a 2,0 V
AMARELO – Tensão de 1,8 a 2,0 V
VERDE – Tensão 2,0 a 2,5 V
AZUL – Tensão 2,5 a 3,0 V