IR RECEIVER - CONTROLE REMOTO DE TV


A pouco tempo comprei dois receptores de ir por R$ 0,20 cada e fiquei pensando como utilizá-los com a arduino, depois de pesquisar um bocado entendi como funciona a transmissão dos comandos entre o controle remoto e a TV.
É realmente muito interessante pois a gente percebe como cada fabricante desenvolveu um protocolo próprio para seus sistemas, neste site http://www.ustr.net/infrared/infrared1.shtml existe uma explicação bem detalhada.

Usar um receptor de ir com o arduino é bastante simples, a conexão é feita com uma porta digital, no caso deste que usei a pinagem é a seguinte:


A única informação que achei sobre o sensor acima ( acredito que seja este) está neste link o modelo é 1838b e os detalhes:

Supply voltage: 2.7 to 5.5V
Transmission distance :18-20m .

No experimento deste post conectei o pino de dados na porta digital 2 e os de força direto nas portas do arduino (alimentando a bradboard). Usei um controle remoto universal programado com os códigos da TV da sony e usei o código abaixo. As possibilidades são muitas, fazer um controle remoto para robôs ou controlar os equipamentos de casa. Imagine entrar em uma sala e ligar automáticamente o som ou a tv no canal ou estação que você mais gosta?

O código analisa os pulsos recebidos pela porta digital e apresenta na saida serial da IDE do arduino usando o comando pulseIn e transforma em números que são os códigos dos controles remotos da sony, com adaptações é possível usar qualquer marca. Este link tem um exemplo sobre como determinar os códigos .

-----------------------------------------------------------------------
/* 
Program that reads key presses of a sony remote control
Created by Kurtis Waterston, March 6 2010
Realesed into the public domain
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1267950229
*/

int irDet = 2;
int key = 0;
int data[12];
int state;

void setup() {
 Serial.begin(9600);                         //For debugging
 pinMode(irDet, INPUT);                      //IR detector connected to digital pin 2
}

void loop() {                                //Main loop
 if (pulseIn(irDet, LOW) > 2200) {          //Check for start pulse
   getIRkey();
   Serial.print("Key press is = ");
   Serial.println(key);
 }

}

int getIRkey() {                             //Read pulses
 data[0] = pulseIn(irDet, LOW);
 data[1] = pulseIn(irDet, LOW);
 data[2] = pulseIn(irDet, LOW);
 data[3] = pulseIn(irDet, LOW);
 data[4] = pulseIn(irDet, LOW);
 data[5] = pulseIn(irDet, LOW);
 data[6] = pulseIn(irDet, LOW);
 data[7] = pulseIn(irDet, LOW);
 data[8] = pulseIn(irDet, LOW);
 data[9] = pulseIn(irDet, LOW);
 data[10] = pulseIn(irDet, LOW);
 data[11] = pulseIn(irDet, LOW);

 for(int x = 0; x <= 11; x++) {              //Decide wether pulses are 1's or 0's
   if(data[x] > 1000) {
     data[x] = 1;
   }
   else {
     data[x] = 0;
   }
 }

 int result = 0;                            //Convert array into interger
 int seed = 1;
 for(int i=0;i<11;i++) {
   if(data[i] == 1) {
     result += seed;
   }
   seed = seed * 2;
 }
 key = result;
 return result;
}

---------------------------------------------------------------------------------

Uma imagem do setup:








Nenhum comentário:

Postar um comentário

Faça seu comentário.

Internet of Things

LUX com arduino GPRS shield e sensor LDR.

/*
Graph: Feed 38642, Datastream lux
*/

Laboratórios, Lojas e Produtos

Blogs, Comunidades e Revistas