Sensor de presença com Arduino | PIR HC-SR501
Automação residencial é claramente uma das áreas mais exploradas entre os grandes amantes de tecnologia. Nesse tutorial iremos aprender a montar um dos sistemas de automação mais comuns em nosso cotidiano, os detectores de presença e movimento. Para isso iremos abordar a utilização do Sensor de presença, também chamado de sensor de movimento, mais especificamente o Sensor PIR HC-SR501 e ensinar os procedimentos básicos na manipulação do mesmo para uso junto com Arduino.
[toc]
Sensores de Presença
É comum em alguns ambientes, tais como, banheiros não residenciais, garagens ou até mesmo corredores de edifícios, as lâmpadas acenderem de forma automática e instantânea.
Os sensores de presença possuem diversas aplicações, entre as mais populares estão a de controlar sistemas de iluminação e a de detectar a presença de invasores em alarmes. Com certeza você já viu um desses sensores.
Além da preocupação com a segurança, este tipo de comportamento automático também contribui para a economia de energia elétrica, evitando o desperdício da mesma e consequentemente para a diminuição de gastos.
Existem diversos formatos, todos com a mesma finalidade: Detectar a presença de pessoas. E como ele é capaz de fazer isso?
Sensor PIR
Todos esses sensores possuem uma coisa em comum, um sensor Piroelétrico ou também conhecido como Sensor PIR. Esse sensor é um pequeno componente capaz de detectar níveis de irradiação infravermelha emitidas pelo corpo humano.
Dentro desse sensor temos dois elementos piroelétricos que podem detectar uma faixa em uma faixa especifica determinados espectros de radiação.
Quando alguém passa na frente desse sensor, primeiramente a pessoa passará na zona de detecção do primeiro elemento piroelétrico e depois na zona de detecção do segundo elemento. Quando a pessoa passa pelo primeiro, ele gera um pulso de tensão na saída, quando ele passa na frente do outro, ele gera um pulso de tensão de sinal contrário. Tal como podemos ver na imagem abaixo:
Módulo Sensor PIR HC-SR501
Para nosso sistema automático iremos usar o módulo sensor de presença HC-SR501. Uma das vantagens desse sensor é a praticidade de usá-lo unido ao seu pequeno tamanho.
Tal como os demais detectores de presença, ele também possui um sensor piroelétrico por baixo desse domo branco. Vale ressaltar que esse domo branco tem uma função importante, ele aumenta a zona de alcance do sensor.
Este módulo já vem com todo sistema para tratamento do sinal e por isso o funcionamento deste sensor é bastante simples, de modo que, basta alimentar o mesmo, esperar a inicialização completa e a partir deste momento, quando algum corpo emissor de radiação infravermelha passar pelo alcance do sensor, o pino de saída deste proporcionará um sinal de nível alto em seu terminal, que por sua vez, pode ser utilizado por uma placa Arduino como sinalização da presença de algum elemento.
O sensor HC-SR501 possui dois potenciômetros na parte traseira onde, em um deles é possível selecionar o tempo em que o pino de saída citado ficará em nível alto quando o sensor detectar algo (este tempo pode variar de 5 segundos a 2 minutos e meio), enquanto o segundo possui a funcionalidade de ajustar a distância máxima de percepção do sensor, de modo que, é possível configurar esta sensibilidade para valores em torno de 3 a 7 metros.
Mãos à obra – Detectando elementos com o Sensor de presença – Sensor PIR HC-SR501
Componentes utilizados:
- Arduino Micro, Arduino Uno ou outro
- Sensor de Presença PIR HC-SR501
- Protoboard
- Fios Jumpers
- LED
- 1x Resistor 330Ohm ou 470Ohm
Montando o projeto
Na figura abaixo, o leitor poderá conferir como foi realizada a montagem do projeto apresentado neste tutorial. Lembre-se de montar o projeto com o seu Arduino desligado.
Veja como ficou o nosso:
Programando
Antes de adentrarmos na apresentação do código, disponibilizamos uma seção para ajudar aqueles que são iniciantes no assunto. Sinta-se livre para prosseguir caso você já tem domínio da IDE do Arduino.
Conectando o Arduino ao computador
Primeiramente, conecte seu Arduino ao computador e abra a IDE Arduino. Em seguida, é necessário selecionar a porta COM na qual o Arduino está conectado (este procedimento pode ser feito clicando no menu Ferramentas (tools) e em seguida escolhendo-se a porta correspondente no submenu Porta (port). Neste caso, a porta na qual está o Arduino é apresentada da seguinte maneira: COM3 (Arduino Micro).
Por fim, garanta também que o tipo de placa apropriado esteja selecionado (isso pode ser feito acessando o menu Ferramentas (tools) e o submenu Placa (board)).
– Código do projeto
Segue o código a ser utilizado no Arduino para Detectar um elemento com o sensor de Presença PIR – HC-SR501
bool estadoSensor; void setup() { pinMode(2,OUTPUT); pinMode(3,INPUT); } void loop() { estadoSensor = digitalRead(3); if (estadosensor == HIGH) { digitalWrite(2, HIGH); } else { digitalWrite(2, LOW); }
Entendendo a fundo
Software
– Declarando a variável responsável por armazenar o estado do sensor
O primeiro passo no desenvolvimento do código apresentado anteriormente consiste em criar uma variável booleana, ou seja, uma variável que pode assumir apenas dois estados (nível alto e nível baixo, 1 e 0, high e low, entre outras nomenclaturas). Esta variável será utilizada para armazenar a informação proveniente do sensor de presença.
bool estadoSensor;
– Definindo as configurações iniciais
O definição das configurações iniciais do programa ocorre dentro da função setup(). Em um primeiro momento, determinamos o modo de operação do pino 2 como um pino de saída digital (este pino estará conectado ao led responsável por sinalizar quando o sensor detectou algo).
pinMode(2,OUTPUT);
Em seguida, definimos o pino conectado ao sensor de presença como um pino de entrada digital, também através da função pinMode().
pinMode(3,INPUT);
Veja como ficou nossa função setup()
void setup() { pinMode(2,OUTPUT); pinMode(3,INPUT); }
– Detectando a presença
O primeiro procedimento para realizar a detecção de presença corresponde à leitura do nível lógico retornado pelo sensor em um determinado instante. Isto é feito por meio da função digitalRead().
estadoSensor = digitalRead(3);
Posteriormente, utilizamos a função if() para conferir o valor referente ao estado do sensor (armazenado na variável estadoSensor), de modo que, caso o mesmo esteja em nível alto, o conteúdo da função if() será executado.
if (estadosensor == HIGH) { ****** Conteúdo da função if() ****** }
Caso a sentença da função if() seja verdadeira, o Arduino deverá acender o led através da função digitalWrite().
digitalWrite(2, HIGH);
Em contrapartida, caso a condição da função if() não seja satisfeita, ou seja, caso a saída do sensor de presença seja um sinal em nível baixo, deve-se apagar o led.
else { digitalWrite(2, LOW); }
Desafio
Agora que sabemos usar o sensor de presença e movimento, que tal usar um módulo relé para acender uma lâmpada? Seria uma boa ideia para automatizar o seu quarto, o que acha?
Faça isso:
- Ligue uma lâmpada quando detectar movimento no ambiente (Leia nosso Tutorial sobre módulo relé) .
Considerações finais
Neste tutorial demonstramos os procedimentos básicos para utilizar o sensor de presença e movimento HC-SR501 com o Arduino. Esperamos que você tenha gostado deste conteúdo, sinta-se à vontade para nos dar sugestões, críticas ou elogios. Lembre-se de deixar suas dúvidas nos comentários abaixo.
3 Comments
Deixe uma pergunta, sugestão ou elogio! Estamos ansiosos para ter ouvir!Cancelar resposta
Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.
quero montar um quadro com rele de 8 canais, posso alimentar ele fazendo jump com a fase pra cada canal
E para utilizar o sensor de presença com um servo motor? Estou utilizando essa programação como base mas não dá certo meu projeto. No meu projeto eu queria que quando o sensor de presença detectasse algo o servo motor girasse 90º. Alguma dica?