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.

www.sbprojects.com/knowledge/ir/rc5.php

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).