Escolha uma Página

Detector de Presença com Sensor PIR HC-SR501

15 out - 2018

O projeto que vamos apresentar nesse artigo usa o sensor de presença e movimento HC-SR501, também conhecido como sensor PIR (Passive InfraRed), para soar um alarme sonoro quando for detectada a presença de um corpo no ambiente onde o sensor PIR estiver instalado.

O desenho de montagem do projeto do Detector de Presença com Sensor PIR está apresentado na figura 1 e tem a seguinte lista de componentes:

1 Arduino Uno

1 Sensor PIR HC-SR501

1 Módulo Buzzer

1 Led 5mm, difuso, verde

1 Resistor de 330 Ohms, 1/4 W, 5%

1 Protoboad

Figura 1: Detector de Presença com Sensor PIR

O desenho da figura 1 mostra o modulo buzzer com seus componentes montados separadamente. Todavia, o módulo buzzer utilizado já contém em sua placa um buzzer, um Led verde e um resistor de 100 Ohms.

O projeto foi executado tendo como placa microcontroladora o Arduino Uno, mas pode funcionar perfeitamente em qualquer outra placa de Arduino (Pro Mini, Mega2560, Nano, dentre outras).

Figura 2: Detector de Presença com Sensor PIR montado no Protoboard

Lembrando que um sketch não é escrito para uma determinada placa do Arduino. Isso significa que esse sketch poderá funcionar em qualquer placa do Arduino desde que haja coerência na escolha dos pinos analógicos e digitais. Ainda sobre o nosso projeto, note que todos os componentes são alimentados pela fonte do próprio Arduino em 5 Volts.

Como funciona o sensor PIR

O HC-SR501 possui um sensor piroelétrico de alta sensibilidade que consegue detectar a radiação infravermelha emitida pelos corpos. Quanto mais quente está um corpo, maior será a radiação infravermelha emitida.

Internamente, esse sensor piroelétrico é dividido em duas metades, formando dois elementos de medição, de modo que uma variação da radiação infravermelha será detectada por esses elementos piroelétricos.

O HC-SR501 usa o sensor piroelétrico modelo RE200B, encapsulado em um bloco metálico e hermeticamente fechado. Sobre o sensor RE200B é montado uma lente de Fresnel, modelo NL-11NH, com a finalidade de concentrar a radiação para o ponto onde o sensor piroelétrico está localizado na placa do HC-SR501.

Figura 3: Elementos Piroelétricos e Circuito de Detecção do Sensor PIR HC-SR501

Quando um corpo atravessa o campo de medição do sensor PIR HC-SR501 os elementos piroelétricos do RE200B detectam uma mudança no nível de radiação infravermelha e geram um sinal correspondente. Este sinal de saída do RE200B é recebido pelo circuito de detecção, que usa o CI BISS0001, e é tratado de forma adequada para gerar o pulso de saída do sensor PIR HC-SR501.

As especificações do Sensor PIR HC-SR501 encontram-se na tabela 1.

Tabela 1: Especificações do Sensor PIR HC-SR501

Figura 4: Sensor PIR HC-SR501

Uma dica é iniciar ambos os ajustes do sensor PIR HC-SR501 no mínimo, bastando para isso girar totalmente cada potenciômetro no sentido anti-horário. Depois, você poderá aumentar gradativamente a sensibilidade e o tempo – girando os potenciômetros no sentido horário – e realizar alguns testes de funcionamento no local onde o sensor PIR está sendo instalado, até encontrar o melhor ajuste possível para o seu projeto.

O sensor PIR HC-SR501 pode operar habilitando o modo “repeat trigger” ou não! Para habilitar o modo “repeat trigger” (ou Enable Repeat Trigger) o jumper da placa deve estar na posição H. Para não habilitar o modo “repeat trigger” (ou Disable Repeat Trigger) o jumper da placa deve estar na posição L.

No modo “repeat trigger” (jumper na posição H) a saída do HC-SR05 será mantida em nível lógico alto durante todo o tempo em que algo estiver se movendo dentro da área de alcance do sensor PIR. Na maior parte dos casos recomenda-se o jumper na posição H.

A conexão do sensor PIR HC-SR501 ao Arduino é muito simples.  Note que a saída do sensor PIR só poderá ser um nível lógico alto ou baixo e assim, tudo que se precisa fazer é ler esse sinal e criar uma rotina de tomada de decisão. Isso será melhor detalhado nas observações sobre o sketch do projeto.

Em nosso projeto, o pino de sinal do módulo buzzer foi conectado ao pino digital 10 do Arduino. O pino de sinal do sensor PIR HC-SR501 foi conectado ao pino digital 9 do Arduino. E, finalmente, o Led foi conectado ao pino digital 8 do Arduino.

Monte cuidadosamente o seu projeto e veja o sketch que faz tudo isso funcionar!

********** **********

int buzzer = 10;

int PIR = 9;

int Led = 8;

int LeituraPIR = 0;

void setup() {

Serial.begin(9600); //Inicializando o serial monitor

//Definido pinos como de entrada ou de saída

pinMode(buzzer,OUTPUT);

pinMode(PIR,INPUT);

pinMode(Led,OUTPUT);

}

void loop() {

//Leitura do PIR que pode ser 1 ou 0.

//1 detecta movimento. 0 não detecta movimento.

LeituraPIR = digitalRead(PIR);

Serial.print("Valor do Sensor PIR: ");

Serial.println(LeituraPIR);

//Verificando se ocorreu detecção de movimentos

if (LeituraPIR == 1) {

ligarAlarme();

} else {

 desligarAlarme();

 }

}

void ligarAlarme() {

//Ligando o led

digitalWrite(Led, HIGH);

//Ligando o buzzer com uma frequencia de 700 Hz.

tone(buzzer,700);

delay(2000); //tempo que o led fica ligado e o buzzer toca

desligarAlarme();

}

void desligarAlarme() {

//Desligando o led

digitalWrite(Led, LOW);

//Desligando o buzzer

noTone(buzzer);

}

********** **********

Comentários sobre o Sketch

O sketch inicia definindo os pinos do buzzer (int buzzer = 10), do sensor PIR (int PIR = 9) e do Led (int Led = 8) em relação ao microcontrolador Arduino. Também declara a variável inteira LeituraPIR, zerando seu valor inicial (int LeituraPIR = 0).

Na parte do setup(), o monitor serial é inicializado através da instrução Serial.begin(9600), e os pinos do buzzer (pinMode(buzzer,OUTPUT)), do sensor PIR (pinMode(PIR,INPUT)) e do Led (pinMode(Led,OUTPUT)) são definidos como entrada (INPUT) ou como saída (OUTPUT), dependendo de sua utilização no projeto.

No loop(),  a leitura do sensor PIR é guardada na variável LeituraPIR (LeituraPIR = digitalRead(PIR)). A função digitalRead() foi utilizada porque a saída do sensor PIR será digital, ou seja, terá apenas duas opções: baixa (0 Volt) ou alta (3 Volts). A saída (pino OUT) do sensor PIR em 3 Volts será suficiente para ser reconhecida pelo Arduino como um nível lógico alto.

Em seguida, com a instrução   Serial.print(“Valor do Sensor PIR: “), a mensagem “Valor do Sensor PIR: ” será impressa no monitor serial. O valor lido efetivamente é mostrado no monitor serial na linha seguinte através da instrução Serial.println(LeituraPIR). Note que, como já dissemos, a variável LeituraPIR só pode assumir dois valores; a saber: 0, para nível lógico baixo (0 Volt) e 1, para nível lógico alto (3 Volts).

Figura 5: Tela do Monitor Serial

Na continuação do sketch aparecem as instruções responsáveis pela tomada de decisão. Aqui foi usada a função if () … else().

Se é verdade que a variável LeituraPIR é igual a 1 (if (LeituraPIR == 1) será chamada a função ligarAlarme(). Esta função foi escrita para esse sketch.

Se, em caso contrário, o valor da variável LeituraPIR é igual a 0, será chamada a parte do else() dessa função, que contem apenas a função para desligar o alarme (desligarAlarme()), também escrita para esse sketch.

Caso o alarme já esteja desligado, ele assim permanecerá. Finalmente, o sketch termina com as funções ligarAlarme() e desligarAlarme().

Vejamos como cada uma funciona:

A função ligarAlarme() escreve nível lógico alto no Led (digitalWrite(Led, HIGH)) e envia um sinal com frequência 700 Hz para o buzzer (tone(buzzer,700)), e gera um atraso de 2 segundos (delay(2000)). Isso significa que o Led e o buzzer ficarão ativados por 2 segundos.

Por sua vez, a função desligarAlarme(), escreve nível lógico baixo no Led (digitalWrite(Led, LOW)) e desliga o buzzer (noTone(buzzer)).

Se você ficou com alguma dúvida sobre esse artigo, nos envie suas perguntas.

Bem, é isso aí. Até a próxima.

Continue nos seguindo no blog.

Haroldo Mamede Coutinho Simões

Haroldo Mamede Coutinho Simões

Engenheiro de telecomunicações e pós-graduado em gerenciamento de negócios, tendo trabalhado em empresas de médio e grande porte por mais de 30 anos, atuando em diferentes projetos e departamentos. É instrutor de treinamento, tendo ministrado workshops em várias empresas, professor universitário em cursos MBA presenciais e tutor de cursos à distância. É apaixonado por tecnologia, especialmente pela plataforma Arduino e tudo de positivo que ela pode fazer pelas pessoas quando dela se aproximam.

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Facebook

VEJA TAMBÉM

Regador automático de plantas com Arduino

Aprenda neste artigo, como automatizar a rega de suas plantas, utilizando o Arduino NANO. Este projeto, além do baixo custo, pode ser montado em menos de uma hora e irá garantir que as suas plantas sempre tenham água disponível, garantido um crescimento adequado e...

Fita de LEDs RGB endereçáveis WS2812B e a biblioteca fastLED

No post de hoje, vamos conhecer a fita de LEDs WS2812B endereçáveis e como utilizá-la com o Arduino UNO.  Essa fita de LEDs se destaca, em relação as outras do mercado, pelo fato de que seus LEDs podem ser controlados de maneira individual, permitindo que o...

NEWSLETTER

Assine nossa newsletter e receba as novidades.

ATENDIMENTO

(19) 3579-7189