Utilizando o sensor de presença com Arduino
Olá galera, tudo beleza? Hoje estaremos utilizando o nosso sensor de presença PIR com Arduino. Assim, estaremos mostrando uma pequena interação entre ambos.
Primeiramente, o foco desse post é o Sensor de Presença PIR HC-SR501 , que é um cara bacana de se trabalhar e amplamente utilizado em projetos e /ou sistemas que envolvam a detecção de movimento, consequentemente, presença.
Além disso, é importante saber que ele trabalha nos 5V fornecidos pelo próprio Arduino. Portanto, vamos agora conhecer algumas informações técnicas sobre o sensor:
- Tensão de Operação: 5V ~ 20V
- Corrente de Operação: <50mA
- Tempo de retardo Ajustável: 2s ~ 200s
- Distância detectável: 3~7m (Ajustáveis – (Reguláveis através dos potenciômetros presente na parte traseira do sensor).
- Tempo de Bloqueio: 2,5s (Padrão)
- Ângulo de de detecção: <= 100°
- Temperatura de Trabalho: -15 ~ +70°C
- Dimensões: 32mm x 24mm x18mm
E galera, apesar de ser uma implementação simples, ela está aqui pra atiçar sua curiosidade de maneiras DIY de integrar esse sensor bacanérrimo.
Ainda assim, vamos atiçar sua imaginação, e dar algumas dicas de onde aplicar ele :
- Sistemas de segurança;
- Controle de consumo de energia elétrica;
- Automação de ambientes.
Mas agora, chegou o momento de colocar a mão na massa!
Componentes Utilizados
- 01x Arduino Uno R3;
- 1x Protoboard;
- 1x Sensor de Presença PIR;
- 02x LEDs ;
- 02x Resistores de 220
- Alguns Jumpers
Montagem do Circuito
Código do Projeto Comentado
Então, o código desenvolvido tem o intuito de que, quando fosse detectado algum movimento, o LED vermelho acenderia e, quando não houvesse movimento, o LED Verde acenderia.
/*Autocore Robótica - Código Desenvolvido por : Iago A.Pereira */ //Declaração de portas digitais aos quais os led e a entrada digital do sensor vão estar conectados. int ledverde = 6; int ledvermelho = 7; int pinoSensor = 4; //Inicia o sensor em estado 0, ou seja desligado. int iniciaSensor = 0; //Variável para calibração do sensor int calibracao = 45; void setup() { Serial.begin(9600); //Declaração de que os LED's serão usados como saída. pinMode(ledvermelho,OUTPUT); pinMode(ledverde,OUTPUT); pinMode(pinoSensor,INPUT); //E o sensor uma entrada. Serial.print("Calibrando o sensor..."); for(int i = 0; i < calibracao; i++){ Serial.print("."); delay(1000); } Serial.println("Sensor Ativado"); delay(500); } void loop() { //A cada ciclo, ele faz uma nova leitura do estado do sensor de presença iniciaSensor = digitalRead(pinoSensor); Serial.print("Valor do Sensor PIR: "); Serial.println(iniciaSensor); ////Verificando se ocorreu detecção de movimentos if (iniciaSensor == 1) { alarme_on(); } else { alarme_off(); } } void alarme_on() { //Função que ativa o alarme - Detectou presença, o LED Vermelho fica acende //E o LED VERDE apaga. digitalWrite(ledvermelho, HIGH); digitalWrite(ledverde, LOW); } void alarme_off() { //Função que desativa o alarme - N foi detectado presença, o LED Vermelho apaga //E o LED VERDE acende. digitalWrite(ledvermelho, LOW); digitalWrite(ledverde, HIGH); }
Resultado do Projeto
Por fim, seguindo a linha de projetos de segurança, não percam o próximo post – Integração do Sensor Óptico-Reflexivo TCRT 5000 e Arduino!
Quem sabe não façamos um projeto de monitoramento online (local) com todos os sensores aplicáveis à área de segurança. :O
Opniões? Dúvidas?Sugestões de projetos?Deixem nos comentários abaixo!
O mais breve responderemos!
CYA! 😀
Boa noite, copiei o código e o circuito exatamente como está ai, a unica diferença é que eliminei o led verde, ou seja, sensor capta movimento, o led vermelho acende, sem movimento ele apaga, porém, após a calibração, o led fica aceso o tempo todo e não acontece nenhuma mudança se passar a mão em frente ao sensor, o que pode estar acontecendo?
Me ajude por favor, pois estou fazendo um projeto para conclusão de curso.
Segue o código com a pequena modificação:
//Declaração de portas digitais aos quais os led e a entrada digital do sensor vão estar conectados.
int ledvermelho = 7;
int pinoSensor = 4;
//Inicia o sensor em estado 0, ou seja desligado.
int iniciaSensor = 0;
//Variável para calibração do sensor
int calibracao = 45;
void setup() {
Serial.begin(9600);
//Declaração de que os LED’s serão usados como saída.
pinMode(ledvermelho,OUTPUT);
pinMode(pinoSensor,INPUT); //E o sensor uma entrada.
Serial.print(“Calibrando o sensor…”);
for(int i = 0; i < calibracao; i++){
Serial.print(".");
delay(1000);
}
Serial.println("Sensor Ativado");
delay(500);
}
void loop() {
//A cada ciclo, ele faz uma nova leitura do estado do sensor de presença
iniciaSensor = digitalRead(pinoSensor);
Serial.print("Valor do Sensor PIR: ");
Serial.println(iniciaSensor);
////Verificando se ocorreu detecção de movimentos
if (iniciaSensor == 1) {
alarme_on();
} else {
alarme_off();
}
}
void alarme_on() { //Função que ativa o alarme – Detectou presença, o LED Vermelho fica acende
digitalWrite(ledvermelho, HIGH);
}
void alarme_off() { //Função que desativa o alarme – N foi detectado presença, o LED Vermelho apaga
digitalWrite(ledvermelho, LOW);
}
Gostaria de saber como faço pegar e colocar no excel o número de objetos que passam pelo sensor de movimento. Tem algum video explicando isso? Tipo vou usar o sensor de movimento para fazer contagem de produtos. Exemplo: Colocar 20 produtos em 1 caixa, passando 1 de cada vez pelo sensor, passar para excel a contagem dos 20.
Boa tarde, acredito que uma forma fácil de fazer isso seria utilizando um módulo sd ou microsd, com isto,
você salva os dados separados por vírgula utilizando um formato de arquivo compatível com excel. Dê uma olhada
nesse vídeo para maior compreensão: https://www.youtube.com/watch?v=5Dp-XatLySM.
Boa tarde, copiei o código e colei no arduino exatamente como está, porém quando tento compilar ele dá o seguinte erro:
Arduino: 1.8.5 (Windows 7), Placa:”Arduino/Genuino Uno”
c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.9.2/../../../../avr/lib/avr5/crtatmega328p.o: file not recognized: File truncated
collect2.exe: error: ld returned 1 exit status
exit status 1
Erro compilando para a placa Arduino/Genuino Uno
Já tentei em vários dispositivos, teria alguma solução para me dar? Agradeço desde já
Olá Mayara, o problema foi resolvido?
Caso não, por favor me informe para que eu possa tentar ajudar.