Sacaneie seu amigo com Arduino e IR
#1 Tips & Tricks – Arduino
Olá pessoal!
No primeiro vídeo da seção Tips&Tricks do meu canal, ou melhor, Dicas & Truques, trago o tema Arduino e como sacanear seu amigo(a), namorado(a), esposa, marido, etc, usando um circuito simples e um controle remoto de televisão.
Você acha que ficar acendendo LED e fazendo BIP com Arduino muito chato?
Se liga nessa dica que trago hoje e divirta-se!
Semana passada divulguei um vídeo com a programação do canal, e toda terça vai ter vídeo de algum tema prático, dentre eles, programação, eletrônica, Arduino e etc, sugerido por vocês!
Quer participar sugerindo temas?
Deixe seu comentário aqui no site ou no canal do Youtube com sua sugestão de tema para o próximo Tips&Tricks!
OUTRAS FORMAS DE ENTRAR EM CONTATO…
Facebook: https://www.facebook.com.br/angelito.com.br
Twitter: https://twitter.com/angelitocsg
VOLTANDO AO TIPS&TRICKS DE HOJE…
Vamos montar dois circuitos, um para lermos os códigos do nosso controle remoto e outro para enviar os códigos para a televisão. Há na internet alguns sites que tem códigos de alguns aparelhos, não necessitando do circuito de leitura, mas isso muda de marca para marca, então vamos montar os dois e fazer todo os processo.
Para ambos os circuitos vamos precisar de:
- 1 x Placa de Arduino Uno, compatível ou superior;
- 1 x Protoboard;
- 1 x Cabo USB;
- 1 x Receptor IR;
- 1 x LED infravermelho;
- 1 x LED branco alto brilho (pode ser outro de qualquer tipo/cor);
- 2 x Resistores 300Ω
- 1 x Controle remoto TV
- Fios diversos
Monte o circuito conforme a imagem abaixo:
Faça o download no final do post dos arquivos necessários para o projeto.
No arquivo há três diretórios, o conteúdo do diretório libraries deve ser copiado para o diretório libraries da instalação da sua IDE do Arduino. Os outros dois diretórios são dos projetos que iremos utilizar.
projeto 1 – receptor ir
Abra o projeto “video_ir_receptor_controleremoto” e envie para seu Arduino, utilizaremos ele para ler os códigos do nosso controle remoto.
Arquivo: video_ir_receptor_controleremoto.ino
#include <IRremote.h> #include <IRremoteInt.h> const int irReceiverPin = 12; // Porta onde está ligado o receptor IR const int ledPin = 11; // Porta onde está ligado o led de referencia IRrecv irrecv(irReceiverPin); // Objeto que controla o recebimento do comando IR decode_results results; // Resultados recebidos do receptor de IR void setup() { pinMode(ledPin, OUTPUT); irrecv.enableIRIn(); Serial.begin(9600); } void loop() { if (irrecv.decode(&results) == true) // Verifica se o receptor recebeu algum sinal IR { digitalWrite(ledPin, HIGH); Serial.print("Codigo recebido: "); Serial.println(results.value, HEX); Serial.println(""); digitalWrite(ledPin, LOW); delay(250); irrecv.resume(); } }
Para lermos os códigos dos botões, devemos fazer a leitura de cada botão várias vezes para encontrar um padrão. O mesmo botão pode retornar códigos diferentes a cada vez que é acionado. Assista o vídeo no final do post para ver o processo.
No vídeo os códigos mantinham um padrão dos quatros dígitos iniciais (E0E0) e os quatros dígitos restantes são referentes ao botão acionado. Para saber qual o código correto aperte outros botões e procure pelo padrão do seu controle.
Os códigos lidos do controle usado no vídeo:
E0E040BF = Botão liga/desliga
E0E048B7 = Botão avançar canal
E0E008F7 = Botão voltar canal
PROJETO 2 – EMISSOR IR
Abra o projeto “video_ir_emissor_controleremoto” e envie para seu Arduino, vamos testar os códigos lidos no projeto anterior e prepará-lo para uso (6).
Antes de enviar, lembre-se de alterar os comandos em vermelho pelos comandos referentes ao seu controle capturado no projeto acima.
Arquivo: video_ir_emissor_controleremoto.ino
#include <IRremote.h> const int ledPin = 11; // Porta onde está ligado o led de referencia IRsend irsend; // Objeto que controla o envio do comando IR long comandos[] = { 0x00001, // Botão liga/desliga 0x00002, // Botão avançar canal 0x00003, // Botão voltar canal }; // Lista de comandos (deve ser alterado antes de compilar) /* * Função para enviar o comando e acender * o led durante o envio do comando */ void sendCommand(long command) { digitalWrite(ledPin, HIGH); irsend.sendNEC(command, 32); digitalWrite(ledPin, LOW); } void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { Serial.println("Iniciando..."); delay(60 * 1000); // 60 segundos antes do primeiro envio Serial.println("Enviando comando para desligar TV..."); sendCommand(comandos[0]); delay(30 * 1000); // 30 segundos depois do primeiro envio Serial.println("Enviando comando para trocar de canal..."); sendCommand(comandos[1]); // Avançar canal delay(1000); // Pausa de 1 segundo sendCommand(comandos[2]); // Voltar canal delay(1000); // Pausa de 1 segundo delay(60 * 1000); // delay de 60 segundos para próxima sequência }
O código está configurado para seguir o processo descrito abaixo:
- Aguardar 60 segundos após ativado;
- Enviar mensagem para porta serial (somente para debug);
- Enviar comando de desligar via IR;
- Aguardar 30 segundos;
- Enviar mensagem para porta serial (somente para debug);
- Enviar comando para avançar canal;
- Aguardar 1 segundo;
- Enviar comando para voltar canal;
- Aguardar 1 segundo;
- Aguardar 60 segundos e reiniciar o processo.
Você pode alterar os tempos de acordo com o tempo de resposta da TV que você está utilizando. Adapte o código para a zuera e divirta-se! (6)
Dúvidas e sugestões deixem seus comentários!
PS: O comando “irsend.sendNEC(” destacado no código não funciona para todas as TVs, algumas marcas tem um método próprio ( ex: “irsend.sendSAMSUNG(” ), verifique detalhes na documentação da biblioteca no link ao final do post.
Download: Códigos para o projeto IR com Arduino
Download da biblioteca: https://github.com/shirriff/Arduino-IRremote