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.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

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

Be the First to Share

    Recommendations

    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest

    Discussions