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:

video-ir-arduino

 

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:

  1. Aguardar 60 segundos após ativado;
  2. Enviar mensagem para porta serial (somente para debug);
  3. Enviar comando de desligar via IR;
  4. Aguardar 30 segundos;
  5. Enviar mensagem para porta serial (somente para debug);
  6. Enviar comando para avançar canal;
  7. Aguardar 1 segundo;
  8. Enviar comando para voltar canal;
  9. Aguardar 1 segundo;
  10. 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