Brasil Robotics: Alarme de Intruso com sensor PIR - Tutorial Arduino - PIR Alarm for Arduino
A noite é dos lobos e outras feras temerosas.
O perigo ronda.
A fresta da janela é a evidência de um mundo além dos muros.
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.
Será que desse sensor você escapa?
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 essa aula vamos precisar de:
1x Sensor de presença PIR (datasheet)
2x LEDs, um Verde e outro Vermelho. Ou um LED bicolor.
1x Resistor de 1k (é possivel usar valores direfentes)
1x Resistor 220R (é possível usar também valores de 100R a 10k)
1x Matriz de contatos e fios.
Prepare todo o material e monte na sua matriz de contatos como ilustrado abaixo:
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 aulas passadas. Bem como o botão e o buzzer.
1-Agora espete o seu arduino no cabo USB e faça a gravação do código abaixo:
Alarme Contra Intruso.
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
void somAlerta() { //Função de nome: "somAlerta" que gera sinal sonoro
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
digitalWrite(ledVermelho,LOW); // Led Vermelho OFF
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(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
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:
Olá, estou fazendo um projeto de uma central de alarme com arduino. No momento estou fazendo apenas o firmware. Mais p frente comprarei o hardware... Poderias me fornecer tutoriais p realizar esse projeto? sou iniciante no arduino...
O segundo passo seria fazer um software em Processing que configurasse e controlasse a central de alarme via PC(Habilitar-desabilitar canais;Visualizar a situação dos canais;Ligar/Desligar central;Ligar/Desligar sirene). Se puder me ajudar com dicas ou tutoriais com essas duas situações...
no link: http://brasilrobotics.blogspot.com/2010/09/start-no-arduino-iniciar.html
Tem material para estudo.
Estarei incrementando esse projeto futuramente.
Assim que fizer posto mais sobre o tema.
Se possivel envie o que desenvolver ou melhorar para contribuir coletivamente.
D. Rates disse...
Amigo gostei muito desse projeto, estava pensando em fazer... Porém eu não tenho um PIR, gostaria de saber se posso substituir por um sensor de sonar... desde já grato
O sensor sonar é direcional. Então só funciona numa área restrita.
O sensor Pir pega uma área maior.
Outro detalhe é que deve configurar a leitura do sonar para que ao encontrar um obstáculo mandar um valor alto ou baixo.
Fazendo isso funciona prefeitamente.
Amigo não entendi muito bem essa parte de configurar a leitura do sonar... como ficaria o código?
O sonar não funciona como um botão: 0 ou 5V
Ele gera valores analógicos proporcional a distância que o objeto está.
Logo deve informar que faixa de distância o sensor deve pegar.
Não é difícil fazer isso mas será preciso fazer essa adaptação ao código que eu fiz.
Se não tem conhecimento de programação recomendo compra um sensor PIR.
Veja o tutorial sobre o sensor IR sharp que tem um funcionamento parecido com o sonar. Pode ajuda-lo a entender como tudo ocorre. ok?
17 de dezembro de 2011 23:04
Bom na verdade, sou iniciante no curso de Ciências da Computação, e temos uma matéria de Circuitos Digitais usando o Arduino, bom peguei seu projeto e estou tentando fazer umas modificações nele, para ele ficar assim;
Um sensor de temperatura. ou de luminosidade.
que dispara o buzzer e leds,
so que para desarmar o buzzer e o led, tem 4 botoes com uma "sequencia" lógica pré definida
.. Estou com uma grande dificuldade nessa parte de desenvolver a parte dos botões sera que alguem pode me ajudar???
Visite a comunidade no facebook
O sensor que eu comprei tem 2 ajustes: Tempo e Distancia. Li em alguns lugares que durante 60 segundos ele tenta estabilizar. Entretanto ele continua disparando... Sabe o que pode ser?
15 de julho de 2012 22:33
Os ajustem sao para modificar esse tempo.
Faça alguns testes alterando eles.
Saved as a fаvorіte, І reallу liκe yοur
Also visіt my pagе: simply click the following web site
17 de março de 2013 01:20
Egberto Nascimento disse...
como ficaria se eu quisesse colocar o alarme pra desligar pelo teclado tbm ?
pode me ajudar ? to precisando colocar isso no meu projeto urgente!! Obrigado !
I gοt this ωeb pаge from mу friend
who informed me regardіng this site аnd now thіs time I am visiting this web page and rеaԁing vеry infoгmаtive аrticleѕ or геvіеwѕ at this
I am trulу gratеful tο the
oωner of this web ρage whо has shared thіѕ imprеssive piece
Feel fгеe to surf to my web-sitе: Www.Sfgate.Com
natanael braz disse...
Onde, dentro do código, eu posso modificar o tempo mínimo de espera pra que quando eu aperte o botão ele desarme o alarme? Obrigado e parabéns pelo blog! Muito bom..
Esse tempo mínimo é ajustado no sensor PIR.
Alguns modelos possuem um potenciometro basta ajustar ele.
Outros você precisa trocar o resistor que é a referencia de tempo
Reiner Zanotelli disse...
Fera qual a distancia máxima do fio, entre sensor e arduino posso utilizar, sabe me dizer???
16 de agosto de 2014 11:29
Não sei dizer o limite você tem que testar para verificar.
É possível usar equações para determinar. A relação entre a resistência do fio, o comprimento dele e a queda de tensão.
Mas certamente passa de 1m
se precisar de um fio muito longo basta da um ganho de tensão e transistores devem resolver.
22 de agosto de 2014 03:03
Luiz Carlos Messias disse...
Gostaria de trocar o sensor por um contado magnético, como ficaria.
26 de agosto de 2014 08:11
Onde no código tiver pinMode(ledVerde, OUTPUT); onde está "ledverde" eu tenho que escrever em qual pino está? Por exemplo: pinMode(pin4, OUTPUT);