Conhecido também como sensor infravermelho passivo (PIR), ou mesmo como sensor de movimento.
Ele detecta movimento usando um par de sensores piroelétricos para detectar energia térmica ao redor do ambiente.
Esses dois sensores ficam um ao lado do outro e, quando a diferença de sinal entre os dois sensores muda (suponha que uma pessoa entre no ambiente), o sensor é acionado.
A leitura da detecção é realizada através de um único pino no sensor.
Ele possui dois potenciômetros para ajustes.
Um deles ajusta a sensibilidade de detecção.
O outro é para o ajuste da espera (delay) de detecção, ou o tempo em que ele fica como HIGH sempre que for acionado.
O jumper presente no sensor serve para selecionar o modo único ou múltiplo de detecção.
O modo único não detecta enquanto o tempo de espera esteja acionado.
O modo múltiplo detecta mesmo no tempo de espera, reiniciando o contador.
Neste projeto você criará um circuito que faz o uso de um display LCD de 16x2 com módulo I2C PCF8574T no Arduino.
Para a criação deste circuito serão necessários os seguintes componentes:
Para montar o circuito, visualize na imagem a seguir como conectar os componentes entre a placa Arduino e a breadboard.
A seguir temos o schematics do circuito, que detalha suas conexões e fornece detalhes mais específicos do que o circuito da imagem anterior.
Uma vez criado o circuito, use o código fonte a seguir no Arduino IDE para fazer o upload dele na placa Arduino e assim ver o resultado do circuito em funcionamento.
/**
* Código do curso Magos do Arduino para conectar um sensor
* de presença PIR modelo HC-SR501 com o Arduino.
*
* Ele imprime no Serial Monitor a mensagem de movimento detectado.
*
* (c) Copyright KazaleIT
* @kazaleitoficial no YouTube
**/
#define PINO_SENSOR 8
int detectado = LOW; // define que não existe detecção ao iniciar
int valorSensor = 0; // valor da leitura do sensor
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
pinMode(PINO_SENSOR, INPUT);
Serial.begin(9600);
}
void loop() {
// realiza a leiura do valor corrente do sensor
valorSensor = digitalRead(PINO_SENSOR);
// caso movimento detectado
if (valorSensor == HIGH) {
// acende o LED da placa
digitalWrite(LED_BUILTIN, HIGH);
// imprime mensagem somente quando mudar o estado
if (detectado == LOW) {
Serial.println("Movimento detectado!");
detectado = HIGH;
}
} else {
// apaga o LED da placa
digitalWrite(LED_BUILTIN, LOW);
// imprime mensagem somente quando mudar o estado
if (detectado == HIGH) {
Serial.println("Movimento não detectado.");
detectado = LOW;
}
}
}