Controle de Lâmpada com Sensor PIR e Sensor de Toque com Arduino
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
- Arduino (Uno, Nano, Mega, etc)
- Lâmpada (LED, CFL ou Incandescente)
- Soquete para lâmpada
- Sensor PIR (Passive Infrared) HC-SR501
- Sensor de Toque Capacitivo TTP223B
- Módulo de Relé 5V KY-019 ou similar
- Matriz de Contatos
- Cabo 1,5 mm2 ou mais grosso
- Fios diversos para breadboard
- Tomada (plugue padrão)
- Fita isolante
- Alicate de corte
- Decapador de fios (opcional)
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).
Escreva um comentário