Controlando o Arduino com Controle Remoto
Neste post vamos explorar controlar o arduino com um controle remoto, isso mesmo, esse da sua TV ai.
Inicialmente utilizaremos o do Kit Infravermelho + Controle Remoto, mas depois iremos demonstrar a como adaptar ele para utilizar com qualquer controle remoto. Várias ideias aparecendo não é? Enviar comandos para o arduino com qualquer controle remoto é algo que pode ser implementado em várias coisas, cabe só a sua criatividade dizer o que irá controlar.
O Kit Infravermelho + Controle Remoto é composto por um controle remoto com bateria, um módulo receptor de infravermelho, um led infravermelho e cabos jumpers fêmia-fêmia, para facilitar a sua prototipação.
Neste projeto utilizaremos Arduino Uno para controlar três leds, que posteriormente você poderá estar substituindo por algum atuador que desejar, então vamos lá ao projeto!
Kit Infravermelho + Controle Remoto
Todos os controles remotos enviam um número em Hexadecimal, que também podemos dizer que é um “código”, para a o receptor do sinal, quando se aperta um botão, cada botão tem um código diferente, com o do nosso kit não é diferente, mais adiante mostraremos como obter o código de cada botão.
Especificações:
Frequência de Transmissão: 38KHz
Bateria de 160mAh (Controle Remoto)
Alcance Transmissão: 8 metros
Ângulo Efetivo: 60°
Corrente de Operação: 3-5mA
Pinagem:
Header Pin 1: Sinal
Header Pin 2: VCC
Header Pin 3: GND
Agora que já conhecemos bem os integrantes do projeto vamos montar o circuito!
Materiais Utilizados:
- 1 x Arduino UNO R3;
- 1 x Protoboard;
- 1 x Kit Infravermelho + Controle Remoto;
- 3 x Led Difuso 5mm;
- 3 x Resistor 220Ω 1/4W;
- Jumpers.
Esses componentes e outros, para os seus próximos projetos você encontra na loja Autocore Robótica, então passa lá.
Controlando o Arduino com Controle Remoto – Montagem do circuito:
Utilizamos as seguintes portas digitais do Arduino:
- 7 – Led Vermelho
- 6 – Led Verde
- 5 – Led Azul
- 11 – Receptor Infravermelho
Como mostrado no circuito:
Figura 01: Circuito do projeto
Fonte: Autocore Robótica
Controlando o Arduino com Controle Remoto – Programação:
Utilizaremos os seguintes botões para controlar os leds:
- 1 – Acende o led vermelho
- 2 – Apaga o led vermelho
- 4 – Acende o led verde
- 5 – Apaga o led verde
- 7 – Acende o led azul
- 8 – Apaga o led azul
- * – Acende todos os leds
- 0 – Apaga todos os leds
Inicialmente vamos ter que receber o código de cada botão, como dito anteriormente, precisaremos receber o código emitido por cada tecla do controle salvar ele, e programar o arduino para quando receber esse código executar determinada atividade.
Então vamos enviar uma programação para o arduino que exibe o código referente a cada tecla. Mas para isso precisaremos instalar a biblioteca do módulo, ela está disponível AQUI!
Se você é daqueles usuários que gosta de entender ao fundo cada código então aqui está o página dos desenvolvedores da biblioteca: Arduino IRremote.
Para instalar a biblioteca você só precisa extrair a pasta de dentro do arquivo ir na pasta “libraries” do diretório da IDE do arduino, Geralmente no Windows costuma ser a pasta ” C:\Program Files (x86)\Arduino\libraries “, e copiar a pasta para lá. Logo após isso, basta alterar a o nome da pasta para “IRremote”, e pronto, agora a sua IDE está prontinha para receber os códigos. ;D
Agora que você já instalou a biblioteca vamos utilizar um código exemplo dela, que é URrecvDemo, que é um programa próprio dela para receber códigos de qualquer controle e imprimir no Monitor Serial.
A imagem abaixo mostra onde está o exemplo que vamos abrir:
Figura 02: Exemplo URrecvDemo
Fonte: Autocore Robótica
Agora é só gravar o código no arduino, abrir o Monitor Serial e verificar o código de cada botão!
Pressionei cada um dos botões anteriormente definidos e recebi os seguintes códigos:
Figura 03: Recebendo o Código dos botões
Fonte: Autocore Robótica
Os códigos são os seguintes:
- FF6897 – Botão 1
- FF9867 – Botão 2
- FF30CF- Botão 4
- FF18E7- Botão 5
- FF10EF- Botão 7
- FF38C7- Botão 8
- FF42BD- Botão *
- FF4AB5- Botão 0
Agora que já sabemos todas as especificações do projeto vamos lá programar!
// Programa: Controlando o Arduino com Controle Remoto // Autor: Saulo Alexandre - Autocore Robótica #include <IRremote.h> int pinoRecepitorIR = 11; int valorRecebido; int ledVermelho = 7; int ledVerde = 6; int ledAzul = 5; // Definindo o código de cada ação que deverá ser realizada int AcendeVermelho = 0xFF6897; int ApagaVermelho = 0xFF9867; int AcendeVerde = 0xFF30CF; int ApagaVerde = 0xFF18E7; int AcendeAzul = 0xFF10EF; int ApagaAzul = 0xFF38C7; int AcendeTudo = 0xFF42BD; int ApagaTudo = 0xFF4AB5; IRrecv irrecv(pinoRecepitorIR); decode_results results; void setup() { pinMode(ledVermelho, OUTPUT); // Definindo os pinos dos leds como saida pinMode(ledVerde, OUTPUT); pinMode(ledAzul, OUTPUT); Serial.begin(9600); // Iniciando o Monitor Serial da IDE irrecv.enableIRIn(); // Inicializa o receptor IR do controle remoto } void loop() { if (irrecv.decode(&results)) // Executa caso receba algum códico { Serial.print("Valor lido : "); Serial.println(results.value, HEX); valorRecebido = (results.value); if (valorRecebido == AcendeVermelho) //Verifica se a tecla 1 foi acionada { digitalWrite(ledVermelho, HIGH); //Acende o led vermelho } if (valorRecebido == ApagaVermelho ) //Verifica se a tecla 2 foi acionada { digitalWrite(ledVermelho, LOW); //Apaga o led vermelho } if (valorRecebido == AcendeVerde) //Verifica se a tecla 4 foi acionada { digitalWrite(ledVerde, HIGH); //Acende o led verde } if (valorRecebido == ApagaVerde) //Verifica se a tecla 5 foi acionada { digitalWrite(ledVerde, LOW); //Apaga o led verde } if (valorRecebido == AcendeAzul) //Verifica se a tecla 7 foi acionada { digitalWrite(ledAzul, HIGH); //Acende o led azul } if (valorRecebido == ApagaAzul) //Verifica se a tecla 8 foi acionada { digitalWrite(ledAzul, LOW); //Apaga o led verde } if (valorRecebido == AcendeTudo) //Verifica se a tecla * foi acionada { digitalWrite(ledVermelho, HIGH); //Acende todos os leds digitalWrite(ledVerde, HIGH); digitalWrite(ledAzul, HIGH); } if (valorRecebido == ApagaTudo) //Verifica se a tecla 0 foi acionada { digitalWrite(ledVermelho, LOW); //Apaga todos os leds digitalWrite(ledVerde, LOW); digitalWrite(ledAzul, LOW); } irrecv.resume(); //Le o valor da próxima tecla pressionada } }
Agora que já está funcionando tudo com o controle remoto do Kit você pode tentar implementar um outro controle remoto para controlar os leds, basta pegar o código gerado por cada botão e colocar na parte dedicada aos códigos de cada botão do código acima.
Conclusão:
Gravamos um vídeo para mostrar a vocês como o código funcionou mais do que perfeitamente, confiram só:
Gostou do projeto? Funcionou tudo certinho? Então comenta aqui em baixo! Nós vamos adorar ler e responder os seus comentários, dúvidas e sugestões.
Confira mais conteúdos em nosso blog. Conteúdos exclusivos para você que utiliza arduino em tudo.
Boa noite!
Excelente tutorial, consegui fazer com o controle de duas TV’s porém o do ar condicionado LG mesmo pressionando apenas uma vez o botão só retorna FFFFFF, será q é “criptografado”? Poderia me ajudar?
Olá Filipe tudo bem contigo?
Cara, realmente isso é um problema com muitas pessoas que querem fazer isso, vai entender né?
Mas basicamente, você precisa alterar o código fonte da biblioteca “IRremote.h”
Vou deixar com você dois links de fóruns os quais muitas pessoas discutiram isso e alguns chegou na solução, espero que te ajude também!
https://forum.arduino.cc/index.php?topic=465585.0
Caso tenha dúvida, comenta abaixo!
Abraços!