Para receber comandos de um controle remoto de TV é necessário um receptor de IR (infra vermelho). A figura abaixo mostra um módulo sensor IR para Arduino que é um receptor infravermelho.
Hardware: É relativamente fácil conectar o receptor de IR com o Arduino. Este experimento mostra a montagem de um protótipo com Arduino Uno. A montagem do hardware é conforme a figura abaixo. Verifique se os três pinos de Vcc, GND e sinal do seu módulo são iguais a este módulo usado na figura)
Sketch: A sketch abaixo decifra as teclas de um controle remoto de TV, apresentando o código da tecla apertada no controle remoto na tela do monitor da IDE do Arduino. Observe que a sketch usa a biblioteca IRremote que pode ser obtida aqui.
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results resultado;
unsigned long last = millis();
void setup()
{
irrecv.enableIRIn(); // Inicia recepção
Serial.begin(9600);
Serial.println("Decodificador de Controle Remoto");
}
void loop() {
if (irrecv.decode(&resultado)) {
if (millis() - last > 250) {
mostra(&resultado);
}
last = millis();
irrecv.resume(); // proximo valor
}
}
void mostra(decode_results *resultado) {
if (resultado->decode_type == UNKNOWN) {
Serial.println("Controle não identificado.");
}
else {
if (resultado->decode_type == NEC) {
Serial.print("Identificado NEC: ");
} else if (resultado->decode_type == SONY) {
Serial.print("Identificado SONY: ");
} else if (resultado->decode_type == RC5) {
Serial.print("Identificado RC5: ");
} else if (resultado->decode_type == RC6) {
Serial.print("Identificado RC6: ");
} else if (resultado->decode_type == DISH) {
Serial.print("Identificado Dish: ");
} else if (resultado->decode_type == SHARP) {
Serial.print("Identificado Sharp: ");
} else if (resultado->decode_type == PANASONIC) {
Serial.print("Identificado Panasonic: ");
} else if (resultado->decode_type == JVC) {
Serial.print("Identificado JVC: ");
} else if (resultado->decode_type == SANYO) {
Serial.print("Identificado Sanyo: ");
} else if (resultado->decode_type == MITSUBISHI) {
Serial.print("Mistubishi: ");
} else if (resultado->decode_type == SAMSUNG) {
Serial.print("Identificado Samsung: ");
} else if (resultado->decode_type == LG) {
Serial.print("Identificado LG: ");
}
Serial.print(resultado->value, HEX);
Serial.print(" (");
Serial.print(resultado->bits, DEC);
Serial.println(" bits)");
}
}
Visualização do resultado: Quando a sketch foi testada com dois controles remotos diferentes intercalados o monitor apresentou os resultado abaixo:
O que você pode fazer agora: Você gostaria de incluir o controle remoto em um projeto seu? Então, anote os códigos das teclas que seriam úteis para construir o seu projeto com controle remoto e faça uma sketch que interprete e execute os comandos de controle.