Bóson Treinamentos em Ciência e Tecnologia

Controle de Lâmpada com Sensor PIR e Sensor de Toque com Arduino

Controlar Lâmpada com Arduino, Sensor Infravermelho e Sensor de Toque - Automação Residencial

Controle de Lâmpada com Sensor PIR e Sensor de Toque com Arduino

Neste projeto vamos simular um sistema de iluminação inteligente, controlando o acendimento de uma lâmpada comum (automação residencial) com um sensor de movimento infravermelho (PIR), o qual irá detectar o movimento de uma pessoa no ambiente, e seu apagamento de duas formas: automático, após um tempo determinado, ou imediato após o toque em um sensor capacitivo, que fará o papel de um Smart Switch.

Lista de materiais

Diagrama Esquemático

A figura a seguir mostra o diagrama esquemático do circuito que será criado:

Visão Matriz de Contatos

A ilustração a seguir mostra a conexão entre os componentes empregados no projeto:

Código-Fonte do Projeto

A seguir temos o código-fonte do projeto a ser carregado no Arduino:

const int TOQUE = 2;
const int PIR = 8;
const int LAMP = 10;
int estToque;
int estPIR;
unsigned long tempoAtual = 0;

void setup() {
  pinMode(TOQUE, INPUT);
  pinMode(PIR, INPUT);
  pinMode(LAMP, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(TOQUE),apaga,RISING);
  Serial.begin(9600);
}

void loop() {
  tempoAtual = millis();
  estPIR = digitalRead(PIR);
  if (estPIR == HIGH) {
    digitalWrite(LAMP, HIGH);
    Serial.println("Lâmpada acesa");
    while (millis() < tempoAtual + 10000) {
      if (estPIR == false) {
        break;
      }
    }
    digitalWrite(LAMP, LOW);
    estPIR = false;
    Serial.println("Lâmpada apagada por tempo");
  }
}

void apaga() {
  estToque = digitalRead(TOQUE);
  if (estPIR == HIGH) {
    if (estToque == HIGH) {
      digitalWrite(LAMP, LOW);
      estPIR = false;
      Serial.println("Lâmpada apagada por toque");
    }
  }
  delay(1000);
}

Neste código usamos uma interrupção no Arduino para detectar quando o sensor de toque capacitivo é ativado, permitindo assim apagar a lâmpada em qualquer momento, por meio da chamada à função apaga(). Além disso, usamos a função millis() para temporizar o circuito, em vez de simplesmente usarmos a função delay() (que é limitada).

Usamos o Monitor Serial para visualizar mensagens relativas ao estado da lâmpada – a saber, se ela foi acesa, se foi apagada pela passagem do tempo limite, ou se foi apagada por intervenção do usuário (toque no sensor capacitivo). 

Testando o circuito

ATENÇÃO: Tome muito cuidado ao manipular o circuito após ter sido conectado na tomada da rede elétrica, , pois existe o risco de choque elétrico, que pode ser fatal. Certifique-se de ter isolado muito bem todas as conexões que envolvem o relé e a lâmpada.

Para testar o circuito basta alimentar o Arduino e conectar o plugue na tomada. Espere cerca de um minuto até o sensor se aclimatar com os níveis de infravermelho do ambiente, e então é só se movimentar na frente do PIR, o que deve fazer com que a lâmpada se acenda automaticamente.

A imagem abaixo mostra o circuito montado em uma matriz de contatos, já conectado e pronto para testes:

Tocando no nosso smart switch – o sensor de toque capacitivo –  a lâmpada deve se apagar imediatamente, não sendo acesa novamente por algum tempo mesmo que você se movimente na frente do sensor de novo – para que haja tempo de sair do recinto sem que a lâmpada seja acesa novamente.

Se o sensor de toque não for ativado, a lâmpada se apagará automaticamente após decorrido o tempo configurado no código (10 segundos aqui – mude à vontade para realizar seus testes).

 

Sair da versão mobile