Interruptor por controle remoto.
Autor: THALES NICOLETI | Publicado: 2012-10-16T13:21:00-07:00

Salve galera apos um grande tempo sem postar, resolvi fazer esse post para ajudar uma galera que ainda tem duvidas para fazer a leitura de um controle remoto com arduino, e para utilizar esses dados para poder acionar lampadas ou qualquer outro dispositivo.

Inicialmente temos que fazer uma montagem simples com um &nbsp;sensor infravermelho, gosto muito do TSOP.






Para inicio vamos fazer uma montagem simples, pois esse receptor, já é encarregado de captura filtragem e amplificação do sinal Infra vermelho gerado pelo controle remoto.

A montagem inicial é a seguinte:









Temos que ver o Datasheet do receptor, pois os pinos podem mudar de ordem, mnais de uma forma geral e generica elas são dasas dessa ordem, 1º - Sinal; 2º - negativo; 3º - Positivo



Em seguida Temos que fazer a leitura do tipo de protocolo que o controle que você pretende utilizar esta se comunicando, essa etapa é extremamente importante, pois cada marca de controle faz um tipo de protocolo diferente



Para isso vamos utilizar um programinha para fazer a leitura das teclas do controle, para isso também temos que ter uma biblioteca que leia os tipos de protocolos, eu estou disponibilizando a biblioteca no seguinte link:&nbsp;http://www.4shared.com/zip/Sc_glkP-/IRremote.html?



Em seguida deve descompactar o arquivo dentro da pasta&nbsp;libraries do arduino para utilizar de forma correta.



Primeiro passo é a leitura do controle.



Como colocamos a biblioteca na pasta certa, temos agora na aba : FILE - EXAMPLES o IR- remote:









Em seguida vamos fazer a leitura do controle para isso abrimos o exemplo IRrecvDump:









Esse exemplo faz uma leitura na porta 11 como colocado no&nbsp;esquemático&nbsp;la em cima e entrega no leitor do serial&nbsp;vários&nbsp;dados, e para nos apena dois deles servem, o que indica que o botão foi&nbsp;pressionado&nbsp;pela primeira vez e o que indica que o botão foi pressionado pela segunda vez.



Bom na leitura do serial ele aparece varias coisas, mais o primeiro valor é o código de cada tecla escrita em&nbsp;hexadecimal&nbsp; temos apenas que tratar esse&nbsp;código&nbsp;para ter controle de cada tecla ex:







Decoded RC5: 2060 (12 bits)

Raw: ( 20) 574 900 750 1750 800 900 1672 2382 0932 24 323 443 2060



Decoded RC5: 12 (12 bits)

Raw: ( 20) 574 900 750 1750 800 900 1672 2382 0932 24 323 443 12






Temos que observar no meu caso eu apertei o mesmo botão 2 vezes e notamos eu o numero que vem antes do &nbsp;(12bits) mudou, vamos utilizar esse numero para fazer o&nbsp;próximo&nbsp;programa.



Agora que você já tem o código em HEX de cada tecla do controle podemos fazer o programa que aciona o rele:







#include  // Inclui a biblioteca



int RECV_PIN = 11; // Seta pino de entrada



IRrecv irrecv(RECV_PIN);



decode_results results;



void setup()

{

&nbsp; Serial.begin(9600); &nbsp;// Inicia comunicaçao serial

&nbsp; irrecv.enableIRIn();&nbsp;

&nbsp; pinMode(8, OUTPUT); // Seta pino de saida

&nbsp;&nbsp;

}



void loop()&nbsp;

{

&nbsp; if (irrecv.decode(&amp;results)) // teste de comunicação com controle

&nbsp; { &nbsp;&nbsp;

&nbsp; &nbsp; irrecv.resume();&nbsp;

&nbsp; }

&nbsp;&nbsp;

&nbsp;if(results.value == 2060) // Aciona a luz conforme o botao

&nbsp;{&nbsp;

&nbsp; &nbsp; &nbsp;digitalWrite(13, HIGH); &nbsp; &nbsp;

&nbsp;}&nbsp;

&nbsp; if(results.value == 12) // Apaga a luz conforme o botao

&nbsp;{&nbsp;

&nbsp; &nbsp; &nbsp;digitalWrite(13, LOW);&nbsp;

&nbsp;} &nbsp;





}






E com a montagem do seguinte esquemático temos o acionamento: