Casa Segura - Sistema de Segurança e Proteção Residencial
André Henrique, Gustavo Torres, Iago Santos e Lucas Lizardo

Introdução

Este projeto tem como objetivo garantir a proteção contra invasões a residencia na ausência de moradores.
O funcionamento é baseado em: Após o arduino ser inicializado o teclado matricial fica disponível para que uma senha seja digitada, a senha é digitada e a tecla # apertada caso a senha seja igual a "1234" uma contagem de tempo de 60s é iniciada para que o morador deixe a residencia, após esse tempo os sensores em todos os cômodos da casa são ativados.
Caso o sistema detecte algum movimento fora do comum é iniciado o processo de proteção contra arrombamento, onde uma contagem de 40s para que a senha seja digitada no teclado matricial, caso isso não ocorra os alarmes são ativados, com luzes e um alarme feito pelo Buzzer. Caso a senha seja digitada antes dos 40s o sistema é desativado e após 2s o teclado já fica disponível novamente.

Montagem

Circuito

Programa Arduino

// Projeto Proteção Domiciliar André Henrique, Gustavo Torres, Iago Santos e Gustavo Torres ELE3A CEFET-MG BELO HORIZONTE

#include<Password.h>// Biblioteca utilizada para senha.
#include <Keypad.h> // Biblioteca utilizada para o teclado matricial
#include <Wire.h>
#include <NewPing.h>//Biblioteca utilizada para o sensor ultrassonico




int LedVermelho = 4;// Led Sistema desativado
int LedVerde = 1;// Led sistema ativado
int Led = 2; // Luzes Alarme Acionado
int Buzzer = 3; // Sistema de som Invasão
int passwd_pos = 15;// posição de entrada da senha
int AlarmeAtivo = 0;
int AlarmeStatus = 0;
int Quarto = 0;

#define TRIGGER_PIN 6
#define ECHO_PIN 5
#define MAX_DISTANCE 30 //Distância Maxima
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

Password password = Password ("1234");// Senha utilizada para ativar e desativar o Sistema de proteção
const byte ROWS = 4;// 4 LINHAS POR...
const byte COLS = 3;// 3 COLUNAS.
char keys[ROWS][COLS] =// Define o keypad (Mapa do circuito do teclado).
{
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte rowpins[ROWS] = {13, 12, 11, 10}; // Conecta as linhas do teclado matricial,em Linhas (0 , 1 , 2 ,3)
byte colpins[COLS] = {9, 8, 7}; // Conecta as colunas do teclado matricial, em Colunas ( 0,1,2,)
//// CRIANDO UM OBJETO Keypad.

Keypad keypad = Keypad(makeKeymap(keys), rowpins, colpins, ROWS, COLS);

int ativado = 0; // Controle do alrame
unsigned long disparo = 0;// Delay de ativar
int ledDelay = 1000;


//----------------------------------------------
void setup()
{
Serial.begin(9600);
keypad.addEventListener(keypadEvent);
keypad.setDebounceTime(30);
pinMode(Led, OUTPUT);
pinMode(Buzzer, OUTPUT);
pinMode(LedVerde, OUTPUT);
pinMode(LedVermelho, OUTPUT);
Serial.println("Aguardando Senha...");
digitalWrite(LedVermelho, HIGH);
}
//----------------------------------------------
void loop()
{

keypad.getKey();
if (AlarmeAtivo == 1)
{ delay (50);
Serial.print("Ping: ");
int distancia = sonar.ping();// Tempo entre emissão e recepção do sonar
Serial.print(sonar.convert_cm(distancia)); //Conversão sinal us para cm
Serial.println ("cm"); //Distancia do objeto mostrada em cm
if (distancia <= 30)
{
tempoMillis();// Chama rotina de delay com millis()
Quarto = 1;
digitalWrite(LedVermelho, HIGH);
delay (1000);
digitalWrite(LedVermelho, LOW);
delay (1000);
digitalWrite(LedVermelho, HIGH);
delay (1000);
digitalWrite(LedVermelho, LOW);
delay (1000);
digitalWrite(LedVermelho, HIGH);
delay (1000);
digitalWrite(LedVermelho, LOW);
delay (1000);
digitalWrite(LedVermelho, HIGH);
delay (1000);
digitalWrite(LedVermelho, LOW);
delay (1000);
digitalWrite(LedVermelho, HIGH);
delay (1000);
digitalWrite(LedVermelho, LOW);
delay (1000);
}// Chama rotina de delay com millis()
else
{
delay(50);
Serial.print("Nenhum Movimento Detectado");

}
}
}
//----------------------------------------------
void tempoMillis()
{
if (ativado == 0) // Se nao comecou contar o tempo
{
Serial.println(millis());
ativado = 1; // Informa comecou contar o tempo
disparo = millis();// Incializa a contagem do tempo
}
if ((millis() - disparo) > 20000) // Tempo de aguardo de senha para desativar
{
Serial.println(millis());
AlarmeAcionado(); // Se passou o tempo, e não cancelou, aciona o alarme
}
}
//----------------------------------------------
void keypadEvent(KeypadEvent eKey)
{
switch (keypad.getState())
{
case PRESSED:// SE ALGUM BOTÃO FOR PRESSIONADO
if (passwd_pos - 15 >= 5)
{
return ;
}
Serial.print("Digitado ");
Serial.println (eKey); // Armazena o numero digitado na variavel eKey
switch (eKey)
{
case '#' : // Pressionando "#" valida que a senha foi digitada
passwd_pos = 15;
guessPassword();
break;
case '*' : // Pressionando "*" reseta a senha digitada
password.reset();
passwd_pos = 15;
break;
default:
password.append(eKey);
}
}
}
//----------------------------------------------
void AlarmeAcionado()
{
password.reset();
AlarmeStatus = 1;
AlarmeAtivo = 0;
if (Quarto == 1)
{
Serial.println("Casa Invadida");
delay(1000);
digitalWrite(Buzzer, HIGH);
}
AcionarLuzes();
}
//----------------------------------------------
void AcionarLuzes()
{
for (int i = 0; i < 4; i++)
{
digitalWrite(Led, HIGH);
delay(ledDelay);
digitalWrite(Led, LOW);
delay(ledDelay);
digitalWrite(Led, HIGH);
delay(ledDelay);
digitalWrite(Led, LOW);
delay(ledDelay);
digitalWrite(Led, HIGH);

}

}
//----------------------------------------------
void guessPassword()
{
Serial.println("Verificando,Aguarde..."); // Informa no serial Monitor
if (password.evaluate())
{
if ((AlarmeAtivo == 0) && (AlarmeStatus == 0))
{
Serial.println( "Sistema de proteção Ativado");// Informa no serial Monitor
activate();
}
else if ((AlarmeAtivo == 1) || (AlarmeStatus == 1))
{
deactivate();
}
}
else
{
Serial.print("Senha Invalida!");
Serial.println("Tente Novamente");
password.reset(); // Apaga a senha
}
}
//----------------------------------------------
void activate() // Ativação do sistema
{
digitalWrite(LedVermelho, LOW);
digitalWrite(LedVerde, HIGH);
delay(20000); // Tempo para que o morador saia de casa, antes dos sensores serem ativados
Serial.println("Sensores de presença Ativados ");
AlarmeAtivo = 1;
password.reset();
}
//----------------------------------------------
void deactivate()
{
digitalWrite(Led, LOW);
digitalWrite(Buzzer, LOW);
AlarmeStatus = 0;
ativado = 0;
AlarmeAtivo = 0;
Serial.println("Sistema desativado");
digitalWrite(LedVerde, LOW);
digitalWrite(LedVermelho, HIGH);
password.reset();
}

Conclusão

Este sistema de segurança residencial, é capaz de assegurar a proteção contra invasões a casa na ausência dos moradores. E mesmo com a invasão da casa ele é capaz de espantar o invasor, já que a polícia será chamada.
Sua finalidade é trazer mais tranquilidade aos moradores, garantindo a segurança de seus pertences

Referências

https://pt.scribd.com/document/322842732/Home-Security-System



Administrado por: Epaminondas Lage