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. Vamos então ver como usar este sensor de presença com Arduino.
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.
Como funciona o sensor PIR
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:
Nessa outra figura, uma representação de como funciona uma lente fresnel:
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):
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.
Conexão do sensor de presença no arduino
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:
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.
// 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 :
Por fim, se você planeja melhorar esse circuito e acionar um relé ou adicionar um buzzer, recomendo a leitura dos posts usando relés e também posts com buzzer.