04 junho 2014

Sensor de presença com módulo PIR DYP-ME003

Os sensores de presença mais comuns usam sensores PIR (Passive Infrared Sensor, ou Sensor Infravermelho Passivo) como detector de movimentos.

No Arduino, temos o módulo PIR DYP-ME003, que une numa mesma estrutura o sensor PIR e também os circuitos necessários para ajuste e controle do sinal de saída.
Modulo PIR DYP-ME003
O módulo contém o sensor PIR propriamente dito, composto internamente por duas faixas com material sensível ao infravermelho. Na parte externa, uma espécie de capa/tampa que na verdade é uma lente fresnel.

Quando há variação na detecção do sinal infravermelho entre essas duas faixas de material sensível, a saída é acionada por um determinado tempo. A lente fresnel tem a função de, vamos dizer assim, "ampliar" o campo de visão do sensor, condensando a luz em um único ponto.

Felizmente existem figuras para traduzir toda essa teoria e mostrar de uma forma mais clara como isso funciona.

Abaixo, o sensor PIR, a lente fresnel e as duas faixas de detecção, acionadas quando alguém passa em frente ao sensor :
sensor de presença com PIR
Imagem : electronicsgurukulam.blogspot.com



Nessa outra figura, uma representação de como funciona uma lente fresnel :

Lente fresnel e sensor PIR


Resumidamente, é assim que a coisa funciona. Uma explicação muito melhor e mais detalhada você encontra no datasheet do módulo, nesse link.

Vamos então para a parte boa, analisando o módulo e testando-o com um Arduino Uno. :-)

No lado esquerdo da imagem, o módulo sem a lente, com o sensor exposto. No lado direito, a parte inferior do módulo, com os 2 pinos de alimentação (4.5 à 20 volts ) e sinal, os potenciômetros para ajuste da sensibilidade e tempo de acionamento da saída, e também o jumper que controla o modo de operação do trigger (gatilho) :

Detalhe módulo PIR Arduino


Apenas preste atenção quando for ligar o seu módulo, pois alguns apresentam os pinos Vcc e GND invertidos. Na dúvida, consulte o datasheet do seu módulo ou verifique as indicações na placa.

Nesse módulo, praticamente não há necessidade de programação no Arduino, já que a saída é colocada em HIGH (ALTO), quando um objeto for detectado, e permanece assim pelo tempo que configurarmos no potenciômetro. Basta então definirmos o que será feito com as saídas do Arduino :

Circuito sensor de presença PIR Arduino Uno
No loop do programa, o valor lido da porta 3 (ligada ao pino de sinal do sensor), é constantemente checado, e caso ocorra movimentação em frente ao sensor, o led vermelho ligado à porta 5 é acionado. Caso contrário, é o led azul ligado à porta 6 que permanece acionado.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Programa : Sensor de presenca com modulo PIR
// Autor : Arduino e Cia

int pinoledverm = 5; //Pino ligado ao led vermelho
int pinoledazul = 6; //Pino ligado ao led azul
int pinopir = 3;  //Pino ligado ao sensor PIR
int acionamento;  //Variavel para guardar valor do sensor

void setup()
{
  pinMode(pinoledverm, OUTPUT); //Define pino como saida
  pinMode(pinoledazul, OUTPUT); //Define pino como saida
  pinMode(pinopir, INPUT);   //Define pino sensor como entrada

}

void loop()
{
 acionamento = digitalRead(pinopir); //Le o valor do sensor PIR
 if (acionamento == LOW)  //Sem movimento, mantem led azul ligado
 {
    digitalWrite(pinoledverm, LOW);
    digitalWrite(pinoledazul, HIGH);
 }
 else  //Caso seja detectado um movimento, aciona o led vermelho
 {
    digitalWrite(pinoledverm, HIGH);
    digitalWrite(pinoledazul, LOW);
 }
}

E o resultado desse experimento você confere no vídeo abaixo :



Se você planeja melhorar esse circuito e acionar um relé ou adicionar um buzzer, recomendo a leitura destes artigos aqui mesmo no Arduino e Cia :

Artigos relacionados à relés

Artigos relacionados à buzzer e sons no Arduino


45 comentários:

  1. Boas tardes , Como faço as ligaçoes no arduino /PIRSEN8630 - PIR MODULE/ e display1.0" SINGLE DIGIT ALPHANUMERIC DISPLAY, possivel amostrar em digrama ou esquema?
    Cumprimentos

    ResponderExcluir
    Respostas
    1. Bom dia João,

      Estou preparando um post para ligação do PIR em um display 16x2. Você tem um link para esse display alfanumerico que você mencionou ?

      Abraço e obrigado !

      Excluir
  2. Sim tenho , um link do display alpha numerico,
    http://www.ptrobotics.com/matrizes/1615-10-single-digit-alphanumeric-display.html
    Cumprimentos

    ResponderExcluir
  3. Boas novamente então e possivel mandar o diagrama desses componentes?
    Cumpriemntos

    ResponderExcluir
    Respostas
    1. Boa tarde João,

      Ainda não tenho nada preparado com esse tipo de display.

      Abraço !

      Excluir
  4. Boas, mas e possivelq que tenhas amanha ou sabado ?
    Cumprimentos

    ResponderExcluir
    Respostas
    1. Boa tarde João,

      Não tenho esse display, e tenho alguns artigos para publicar antes.

      De qualquer forma, assim que possível farei algo nesse sentido.

      Abraço !

      Excluir
  5. Okey obrigado, mas se substituir o meu sensor PIR, por este que está no diagrama trabalha da mesma maneira ? CErto ?

    Abraço

    ResponderExcluir
    Respostas
    1. Boa tarde João,

      Sim, apenas verifique a ordem de ligação dos pinos, mas o esquema é o mesmo.

      Abraço !

      Excluir
  6. Boas e possivel ligar duuas ventoinnas e um motor , se sim como e possivel?

    Cumpriimentos

    ResponderExcluir
    Respostas
    1. Boa tarde João,

      Sim, é possível, você pode utilizar relés ligados às saídas do Arduino para acionar tudo isso.

      Abraço !

      Excluir
  7. Okey obrigado , em caso de resistencias do diagrama , tipo eu nao tenho daquelas , Dá para substituir por qual resistencia ?
    Cumprimentos

    ResponderExcluir
    Respostas
    1. Bom dia,

      Aqui eu usei resistencias de 330 ohms... mas tenho também de 1,7 K, 10 K e outras.. Tente algumas de maior valor. O máximo que pode acontecer é o led ficar com pouco brilho.

      Abraço !

      Excluir
  8. Boas Noites, Substitui as resistencias por resistencias de 1O K , utilizei dos leds um vermelho outro alaranjado , e substitui por o tal sensor PIR 8630, só a programação é a mesma ,mas so da um led vermelho e fica sempre acesso, nunca muda para o outro , qual o problema aqui ?
    Cumprimentos

    ResponderExcluir
    Respostas
    1. Boa noite João,

      O led vermelho deve acender quando for detectado algum movimento. Tente ajustar a sensibilidade do sensor PIR, se houver um potenciômetro para isso.

      Abraço !

      Excluir
  9. bom dia muito bom este material. Eu gostaria de saber se consigo ativar e desativar o sensor pir via bluetooth, simulando como se fosse um alarme residencial.

    Obrigado

    ResponderExcluir
    Respostas
    1. Boa tarde Rodrigo,

      Sim, você pode fazer uma subrotina que habilita o módulo PIR somente enquanto uma determinada variável (setada via BT) não tiver o seu valor alterado. Ficaria mais ou menos assim :

      Se (variavel_BT = false)
      {
      habilita_sensor_PIR();
      }
      senao
      {
      \\comandos
      }

      Abraço !

      Excluir
  10. Olá amigo boa noite, gostaria de saber se tem com usar um projeto igual a esse sem ter que usar resistor

    ResponderExcluir
    Respostas
    1. Boa noite,

      Você vai precisar dos resistores para não danificar os leds.

      Abraço.

      Excluir
    2. Desculpe a minha ignorância mas, se eu não utilizar os leds, não será preciso utilizar os resistores? Gostaria de enviar os estados para um arquivo xml,

      Excluir
    3. Bom dia!

      Sem leds, sem resistores.. pode ligar só o módulo PIR mesmo... :)

      Abraço!

      Excluir
  11. Não consigo copilar o programa, aparece o erro "Arduino: 1.6.5 (Windows 7), Placa:"Arduino/Genuino Uno"

    Cannot run program "{runtime.tools.avr-gcc.path}\bin\avr-g++" (in directory "."): CreateProcess error=2, O sistema não pode encontrar o arquivo especificado

    Este relatório deveria ter mais informações
    "Mostrar saída verbosa durante a compilação"
    habilitado em Arquivo > Preferências."

    o que pode ser?

    ResponderExcluir
  12. Boa noite...
    por algum problema (que não sei qual) parece q o sensor está sempre ativado. não desativa nunca.
    já fiz testes com outros sensores e a mesma coisa.
    Será que é algum problema de fábrica do sensor?
    E pra usar um potenciômetro, como q faço?

    Atenciosamente,
    Henrique

    ResponderExcluir
    Respostas
    1. Bom dia Henrique,

      Você já tentou ajustar a sensibilidade mexendo no potenciômetro do módulo ?

      Abraço!

      Excluir
    2. Boa noite... Henrique, no meu caso o VCC e GND estavam invertido, e acabava ocorrendo o mesmo problema que você está descrevendo. Verifica ai, abraço.

      Excluir
    3. Boa Junior,

      Eu tinha esquecido desse detalhe. Realmente alguns módulos vem com esses pinos invertidos.

      Abraço!

      Excluir
  13. Boa tarde. e se eu usar o mesmo esquema pra ligar tres LED. E possivel?

    ResponderExcluir
    Respostas
    1. Boa tarde,

      É sim, apenas adicione as portas necessárias no programa. :)

      Abraço!

      Excluir
  14. Boa noite, Rodrigo.
    Gostaria de saber se tem como testar um sensor sem ter que aciona-lo no campo, apenas verificando através do software do arduino no notbook.
    obrigado.

    ResponderExcluir
  15. Boa noite existe a possibilidade de colocar Som conforme o acionamento dos sensores? existe um limite? existe placa menor ou é só deste tamanho para sensores? Obrigado...

    ResponderExcluir
  16. Boa tarde, gostaria de saber se é possivel colocar determinado tipo de sons conforme o acionamento do sensor e até quantos sensores eu consigo colocar na placa!! Obrigado!!

    ResponderExcluir
    Respostas
    1. Boa noite,

      É possível sim, utilize o comando Tone ou a biblioteca Newtone para fazer isso. Quanto à quantidade de sensores, vai depender da sua placa, mas como o sensor PIR usa apenas um pino de sinal, você pode ligar vários sensores ao mesmo tempo.

      Abraço!

      Excluir
  17. Boa noite, fiz a pratica e varios outros teste modificando o potenciometro da sensibilidade, mas fica sempre acionado o sensor, mesmo sem nada na frente.

    Sabe oq pode ser?

    ResponderExcluir
    Respostas
    1. Oi Diego,

      Alguns módulos estão vindo com os pinos Vcc e GND invertidos, em relação ao que eu usei no post. Seria isso ?

      Abraço!

      Excluir
  18. qual o valor dos resistores q tem q usar ?

    ResponderExcluir
    Respostas
    1. Boa tarde,

      Eu usei resistores de 330ohms, mas use os valores adequados aos leds que você tem.

      Abraço!

      Excluir
  19. Boa noite.

    Gostaria de saber se o módulo só detecta o movimento ou se detecta a presença de algo dentro de um campo de distância, ou seja, no caso de colocar a mão na frente e continuar com ela no mesmo lugar o sensor entrará em HIGH e depois em LOW ou permanecerá em HIGH?

    Agradeço desde já

    ResponderExcluir
  20. Boa noite

    Gostaria de saber se os sensores funcionam apenas como sensor de movimento ou de presença momentânea, ou seja, se colocar um objeto na frente dele ele irá para alto e depois para baixo ou ficará em alto até tirar o objeto? Tenho quase certeza que deve ser a primeira opção, porém preciso de algo que funcione igual a segunda.

    Agradeço desde já

    ResponderExcluir
  21. Como acrescentar o sensor PIR ao modulo relé para acender uma lâmpada ?

    ResponderExcluir
    Respostas
    1. Dá pra fazer sem arduíno. Uma fonte de 5v pra alimentar os componentes e ligar a saída do módulo PIR direto na entrada do módulo de relê. As regulagens de tempo faz direto pelo potenciômetro do PIR

      Excluir
  22. Boa tarde!! Da pra fazer um dector de presença com o sensor de luminosidade

    ResponderExcluir
    Respostas
    1. Oi Elias,

      Até dá.. mas eu usaria um PIR mesmo... :)

      Abraço!

      Excluir
  23. Olá, é possível unir este sensor de presença com o sensor de temperatura ds18b20 proposto em http://www.arduinoecia.com.br/2013/04/sensor-de-temperatura-ds18b20-arduino.html

    ResponderExcluir
  24. Olá
    Poderia me informar a distância que este sensor alcança e se ele pode ser mais viável para substituir um sensor ultrassônico?

    ResponderExcluir
    Respostas
    1. Boa noite Wadson,

      Segundo informações do fabricante ele alcança até 10 metros. Depende da sua aplicação, mas o sensor ultrassônico é mais fácil de utilizar e medir distâncias, por exemplo.

      Abraço!

      Excluir