Você está na página 1de 4

Avisador Porta Janela Aberta

Muitas vezes existe a necessidade de ter um aviso que a janela ou porta esta aberta. O avisador
pode ser aplicado a qualquer outra aplicação alterando o sensor, ou seja, tanto pode avisar a
abertura/fecho como para controlar ou avisar em função de outro tipo de sensor (sensor de luz por
exemplo). O sistema é composto por duas zonas um com sensores normalmente abertos (SW NA)
que atuam o aviso quando fecham e outra zona com sensores normalmente fechados (SW NF).
Podem ser usados vários sensores, por exemplo, pretendemos verificar se todas as janelas de uma
sala se encontram fechadas, podem ser usados vários sensores NA em cada uma janela. Usando os
NF, têm de estar em série, os NA em paralelo.

Optou-se por usar um LCD 16 carateres com 2 linhas mas é facultativo, o circuito funciona e atua
sem a informação no display.

Circuito Elétrico

Avisador de janela porta aberta.


SW NF (Int. Normalmente Fechado)
SW NA (Int. Normalmente Aberto)

A saída do LED pode ser usada para ativar dispositivos com maior potência usando um relé ou um
triac em substituição.

Saída com Triac


Saída com triac

 R1-180Ω, R2-380Ω, R3-330Ω


 IC1-MOC3041, >Triac-BT136, F1 - 5A

Saída com Relé

Atuar Relé com Arduino

Funcionamento

Foi definido no código que o circuito das janelas é normalmente aberto e o circuito das portas
normalmente fechado. Ao ativar os sensores, aparece no display "JANELA ABERTA!" ou "PORTA
ABERTA!" e se o alarme está ligado ou não. Ao mesmo tempo, acende um led e o avisador sonoro é
ativado.

Alerta Porta Aberta


Alerta Janela Aberta

Arduino Sketch

// Eletronica PT //
// Jan 2016 //
#include <LiquidCrystal.h> // Carrega LIB para o LCD
int sensPin2 = 2; // entrada sensor PINO 2
int sensPin3 = 3; // entrada sensor PINO 3
int ledPin = 13; // Saida LED PINO 13
int Speaker = 5; // Saida Piezo PINO 5
int alarm1 = 0; // Definiçao da Variável de entrada ´1
int alarm2 = 0; // Definiçao da Variável de entrada ´1

LiquidCrystal lcd (7, 8, 9, 10, 11, 12);


void setup() {
pinMode(sensPin2, INPUT); // Define Sensor2 como entrada
pinMode(sensPin3, INPUT); // Define Sensor3 como entrada
pinMode(Speaker, OUTPUT); // Define piezo como saida
pinMode(ledPin, OUTPUT); // Define LED como saida
lcd.begin(16, 2);
lcd.print("ALARME LIGADO");
}
void loop(){

alarm1 = digitalRead(sensPin2); // Faz a leitura do alarm1


alarm2 = digitalRead(sensPin3); // Faz a leitura do alarm2

if (alarm1 == LOW || alarm2 == HIGH){ // Verifica entrada alarm1 e alarm2


if (alarm1 == LOW){
digitalWrite(ledPin, HIGH); // Liga o LED
lcd.setCursor(0, 1);
lcd.print("PORTA ABERTA! ");
playTone(500, 600);
delay(100);
playTone(500, 800);
delay(100);
}
if (alarm2 == HIGH){
digitalWrite(ledPin, HIGH); // Liga o LED
lcd.setCursor(0, 1);
lcd.print("JANELA ABERTA! ");
playTone(500, 600);
delay(100);
playTone(500, 800);
delay(100);
}

} else {
digitalWrite(ledPin, LOW); // Desliga o LED
lcd.setCursor(0, 1);
lcd.print("OK ");
playTone(0, 1);
delay(300);
}
}
// duraçao em mSecs, frequencia em Hz
void playTone(long duration, int freq) {
duration *= 1000;
int period = (1.0 / freq) * 1000000;
long elapsed_time = 0;
while (elapsed_time < duration) {
digitalWrite(Speaker,HIGH);
delayMicroseconds(period / 2);
digitalWrite(Speaker, LOW);
delayMicroseconds(period / 2);
elapsed_time += (period);
}
}

Você também pode gostar