Social Icons

Alarme de Intruso com Arduino

Nada como um alarme para alertar a presença de um intruso.
Apresento o projeto de Alarme que desenvolvi.
Este dispositivo gera um sinal sonoro e luminoso e um botão desarma o alarme.
O código desenvolvido para o projeto é fexível e  permite a interação com  outros tipos de sensores de presença com nenhuma ou minimas modificações. 

Para esse projeto não será exigido um conhecimento em eletrônica elevado, mas será preciso conhecer alguns conceitos mais avançados de programação para compreender com facilidade o que o código está fazendo.

Para esse projeto vamos precisar de:

1x Sensor de presença PIR
2x LEDs, um Verde e outro Vermelho. Ou um LED bicolor.
1x Buzzer
1x Resistor de 1k (é possivel usar valores direfentes)
1x Resistor 220R (é possível usar também valores de 100R a 10k)
1x Arduino (qualquer modelo)
1x Matriz de contatos e fios.


Prepare todo o material e monte na sua matriz de contatos como ilustrado abaixo:


Clicar na imagem para ampliar

Confira todas as conexões.
Note que os LEDs não são ligados ao GND do arduino.
Lembre-se que essa forma de controlar LEDs com arduino já foi elucidada em turoriais antigos .Bem como o botão e o buzzer.

1-Agora plugue o seu arduino no cabo USB e faça a gravação do código abaixo:


//Alarme Contra Intruso.

Descição:
Sensor detecta intruso e ativa sinal sonoro e luminoso. 
O alarme é desarmado pressionando um botão.
Luz Verde: Alarme está aguardando.
Luz Vermelha: Alarme detectou algo.
*/

int ledVermelho = 8;                 //Pino para o LED vermelho(RED)
int ledVerde = 7;                    //Pino para o LED verde(Green)            
int piezoPin = 6;                   // Pino para o + do PIEZO

int PIRPin = 4;                      //Pino OUT do PIR(leitura de valores)
int botaoPin = 5;                   //Pino de leitura da entrada do Botão

int PIR = 0;                     //Variável que representa o valor fornecido pelo sensor PIR
int Bot = 0;                        //Variável que representa o valor fornecido pelo Botão



void setup() {               //Declara LEDs e PIEZO como pinos de Saída. PIR e Botão como Entrada
  pinMode(piezoPin, OUTPUT);
  pinMode(ledVermelho, OUTPUT); 
  pinMode(ledVerde, OUTPUT);                                
  pinMode(PIRPin, INPUT);    
  pinMode(botaoPin, INPUT);
  }



void somAlerta() {                          //Função de nome: "somAlerta" que gera sinal sonoro
  digitalWrite(piezoPin, HIGH);
  delayMicroseconds(600);
  digitalWrite(piezoPin, LOW);
  delayMicroseconds(600);
}

void piscaLED(){                                   //Função de nome: "piscaLED" que gera sinal sonoro
 
  digitalWrite(ledVerde, LOW);                    // Pino do ledVerde será o Terra
  digitalWrite(ledVermelho, HIGH);             // Led Vermelho ON
  delay(100);
 
  digitalWrite(ledVermelho,LOW);                 // Led Vermelho OFF          
  delay(100);
}



void loop(){
 
  PIR = digitalRead(PIRPin);     // Faz leitura do OUT do senso PIR e joga o valor lido na variável: "PIR"
 

 
if (PIR == HIGH) {             // Testa se a variável "PIR" é alta(5v), caso SIM: executa uma tarefa Caso NÃO pular para else{

  do{                                     //Faça essa tarefa e testar em while
    digitalWrite(ledVermelho, HIGH);     // Liga led Vermelho
    digitalWrite(ledVerde, LOW);         // Pino do led Verde torna-se o GND(terra) do led Vermelho
     somAlerta();                        //chama função que emite um som de alerta
 
    Bot = digitalRead(botaoPin);      //Faz leiturado do Botão e joga o valor na variálvel "Bot"  
   
    }while(Bot==0);  //Enquanto a variável Bot for zero(Botão não pressionado) continuar  executando           

}     
else{                                // PIR não está HIGH então executa as tarefas que estão no else{
           if(Bot==1){                        // caso o botão for pressionado após o alarme disparar fazer uma tarefa
               for(int i=0; i<5 ;i++){            // Temporiza(alguns segundo) a função que será chamada "piscaLED()"
                 piscaLED();                   //chama função que pisca o LED vermelho
                 }
                
                 digitalWrite(ledVermelho, LOW);    
                 digitalWrite(ledVerde, HIGH);     // Liga Led verde para
                 delay(10000);                      // Aguarda 10s (impede um novo alarme de imediato)
                
               Bot=0;         //Após o temporizador chamar e executar a função pescaLED declara que a variável "BOT" é zero
           }
     
     
          digitalWrite(ledVermelho, LOW);     // Mantem o pino Vermelho como GND(terra) para o lede VERDE
          digitalWrite(ledVerde, HIGH);       // Led Verde ON
       
     
    }
   
   
}



Entendendo o código:

Temos dois blocos básicos: if e um else, que testam o estado do sensor PIR. Caso for ativado(HIGH) uma tarefa é executada indeterminadamente. Nesta execução uma função é chamada: somAlerta();   que ativa o sinal sonoro. E também o LED vermelho é ativado.
Caso o sensor PIR não detectar(LOW) nenhum intruso o else é executado. Tornando o Led Verde e aguardando a presença de um intruso.
Entretanto é feito um teste para saber se o alarme foi desativado a poucos instantes. Se isso for verdade uma função: piscaLED(); é chamada dentro de um temporizador para piscar o LED Vermelho por alguns segundos. Este comportamento informa que o alarme está sendo desativado pelo botão.
Passado esse tempo o LED fica Verde indicando que o sensor está monitorando a área.
Há também um "timer" que estabelece um tempo minimo de 10s para disparo do alarme após este ser desativado pelo botão.
É importante notar que o botão funciona corretamente quando pressionado.
O botão só é habilitado para desarmar o alarme após alguns segundos obrigando um aviso de alerta.
O sensor pode detectar uma pessoa até 7m de distância.


Vejam o vídeo do seu funcionamento:




Nenhum comentário:

Postar um comentário