Introduction: Automação Residencial (Domótica) Com Intel Edison
O propósito deste projeto é ligar uma saída digital quando a tecla "UP" for pressionada no transmissor de um controle remoto e desligar esta mesma saída quando a tecla "DOWN" for pressionada. Tal experimento possui diversas aplicações associadas a domótica.
Step 1: Protocolo RC5
Para isso, o protocolo RC5 foi utilizado, no qual no link abaixo há todos os detalhes de funcionamento do mesmo.
Step 2: Sensor TSOP4838
O sensor TSOP4838 permite receber via infravermelho na frequência de 38 kHz. Ele é utlizado para detectar os bits "1" e "0" oriundos do controle remoto de uma TV, por exemplo. Mais detalhes sobre o mesmo pode ser verificado no próximo link.
www.vishay.com/docs/82459/tsop48.pdf
Ligue a alimentação do sensor e o pino OUT do mesmo a uma entrada digital qualquer do Intel Edison (o kit Grove foi utilizado). Neste exemplo, a entrada "AN0" foi utilizada.
Step 3: Código Arduino
O código a seguir recebe o frame em RC5. Caso seja recebido o código de sistema 5 e comando 16 o relé será acionado. Caso seja 5 e 56 o relé será desligado. Observe que tal código pode variar de acordo com o controle remoto utilizado, sendo recomendado printar o código de sistema e comando via serial para verificar o código recebido e assim ajustar o código.
//Intel Iot Roadshow Nov/2015
//Autores: Vitor Amadeu e Renata Leal
/* * * * * * * * * * * * * * Declaração de I/Os * * * * * * * * * * * * * */
#define RC_5 A0
#define RELE1 3
#define TEMPO 890
char le_bit(void);
/* * * * * * * * * * * * * * Função de inicialização * * * * * * * * * * * * * */
void setup(void) {
pinMode(RC_5,INPUT_PULLUP);
pinMode(RELE1,OUTPUT);
Serial.begin(9600); }
/* * * * * * * * * * * * * * Função de loop * * * * * * * * * * * * * */
void loop(void) {
if (digitalRead(RC_5)==0) {
char comando=0,sistema=0;
delayMicroseconds(4000);
sistema=sistema|le_bit()<<4;
sistema=sistema|le_bit()<<3;
sistema=sistema|le_bit()<<2;
sistema=sistema|le_bit()<<1;
sistema=sistema|le_bit()<<0;
comando=comando|le_bit()<<5;
comando=comando|le_bit()<<4;
comando=comando|le_bit()<<3;
comando=comando|le_bit()<<2;
comando=comando|le_bit()<<1;
comando=comando|le_bit()<<0;
if(sistema==5 && comando==16)
digitalWrite(RELE1,1);
if(sistema==5 && comando==56)
digitalWrite(RELE1,0);
}
}
/* * * * * * * * * * * * * * Função para ler bit * * * * * * * * * * * * * */
char le_bit(void) {
char last_rx=1;
delayMicroseconds(890);
if (digitalRead(RC_5))
last_rx=0;
delayMicroseconds(890);
return(last_rx);}
Step 4: Testando O Exemplo
Conecte um led ou relé ao pino digital utilizado no código e observe se o mesmo liga quando o botão "UP" for pressionado e desliga quando o "DOWN" for ativado. Após testar com um led, conecte um relé para acionar cargas como lâmpadas, podendo tal aplicação ser utilizada para automatizar uma residência (domótica).