Sensor PIR de Presença: Como Funciona, Como Ligar no Arduino e ESP32 — Guia Completo | Mamute Eletrônica
Sensores & Detecção

Sensor PIREle não enxerga você — enxerga o calor do seu corpo

Entenda como o sensor de presença PIR detecta movimento pelo infravermelho, como ligar corretamente no Arduino e ESP32, ajustar sensibilidade e tempo — e evitar os erros mais comuns.

VCC GND OUT HC-SR501 PIR MODULE Fresnel
#sensorpir#presenca#infravermelho #arduino#esp32#automacao#maker

👁️ O que é um Sensor PIR?

PIR vem de Passive Infrared — Infravermelho Passivo. Diferente de câmeras ou ultrassônicos, o PIR não emite nada: ele apenas escuta o infravermelho que já existe no ambiente. E todo corpo com temperatura emite infravermelho — incluindo você.

Quando algo quente se move dentro do campo de visão do sensor, a quantidade de calor que chega ao detector muda. Essa variação dispara a saída — e sua lâmpada acende, seu alarme toca, ou sua câmera começa a gravar.

🔥 Como Funciona — A Física por Trás

O sensor PIR tem dois elementos sensíveis lado a lado, ligados em oposição. Quando o campo de calor é uniforme (ninguém passando), os dois captam o mesmo valor e se cancelam — saída em zero. Quando uma fonte de calor atravessa as zonas de detecção, um elemento recebe mais calor que o outro e a diferença gera o sinal de disparo.

🏔️ A Cúpula Branca — Lente de Fresnel

PIR Z1 Z2 Z2 Z1 Campo de visão ~ 120° Alcance: até 7 m (ajustável)

A lente de Fresnel divide o campo de visão em múltiplas zonas alternadas. Quando você cruza de uma zona para outra, o sensor percebe a variação de calor. Por isso, ficar parado engana o PIR — a saída pode desligar.

🔌 Os 3 Pinos do Módulo PIR

VCC
Alimentação
5V DC
Compatível com Arduino direto
GND
Terra
GND comum com Arduino / ESP32
OUT
Saída digital
3,3V ou 5V HIGH ao detectar
Liga direto em qualquer GPIO

✅ Compatibilidade ESP32 — sem divisor de tensão!

O módulo HC-SR501 tem regulador interno e a saída OUT já sai em 3,3V na maioria das versões — compatível diretamente com o ESP32. Confirme com multímetro: se marcar 3,3V ao detectar, liga direto. Se marcar 5V, adicione um resistor de 10kΩ em série com o GPIO.

📋 Especificações Técnicas

ParâmetroValorObservação
Tensão de operação4,5 – 20VTípico: 5V DC
Corrente de repouso< 60 µAUltra baixo consumo
Saída OUT (HIGH)3,3V ou 5VDepende do módulo
Ângulo de detecção~120°Horizontal e vertical
Alcance (ajustável)3 – 7 mPotenciômetro de sensibilidade
Tempo de saída5 s – 300 sAjustável por potenciômetro
Temperatura de operação-20°C a +80°CUso interno e externo
RetriggerL / HJumper no módulo

🎛️ Os 2 Potenciômetros de Ajuste

O módulo HC-SR501 tem dois potenciômetros laranja na parte traseira. Eles controlam dois comportamentos independentes:

🔭 Sensibilidade (Alcance)

Controla até onde o sensor detecta. No mínimo, só pega movimento bem próximo (~1–3 m). No máximo, pode detectar até 7 m.

← mín: ~1–3 m     máx: ~5–7 m →
Gire no sentido horário para aumentar

⏱️ Tempo de Saída (Hold Time)

Controla por quanto tempo a saída OUT fica em HIGH após detectar. Útil para ligar uma lâmpada por X segundos.

← mín: ~5 s          máx: ~300 s →
Gire no sentido horário para aumentar

⚡ Jumper de Retrigger — L vs H

Tem um pequeno jumper entre os dois potenciômetros:

  • Posição H (Repeatable): enquanto houver movimento, a saída continua alta e o timer reinicia a cada detecção. Use para luzes que devem permanecer acesas enquanto houver presença.
  • Posição L (Non-Repeatable): a saída fica alta pelo tempo configurado e só dispara de novo depois que esse tempo acabar, mesmo com movimento. Use para contagem de pessoas ou registros de eventos.

🕐 Aguarde o Warm-up — 30 a 60 segundos!

Ao ligar o módulo, o PIR precisa de 30 a 60 segundos para estabilizar a leitura do ambiente. Durante esse período ele pode disparar falsos positivos. No código, use um delay(60000) no setup() antes de começar a ler.


💻 Código Arduino UNO / NANO / MEGA

Ligue o fio OUT em um pino digital (ex: D2). Sem resistor pull-up externo — o módulo já tem buffer de saída.

// pir_arduino.ino — Detecção básica com warm-up
// Sensor PIR com Arduino — Mamute Eletrônica
// blog.mamuteeletronica.com.br
// Ligação: VCC→5V | GND→GND | OUT→D2

#define PIR_PIN    2
#define LED_PIN    13
#define WARMUP_MS  30000 // 30 s de estabilização

void setup() {
  pinMode(PIR_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600);
  Serial.println("Aguardando estabilização do PIR...");
  delay(WARMUP_MS);
  Serial.println("Pronto! Monitorando presença.");
}

void loop() {
  int estado = digitalRead(PIR_PIN);
  if (estado == HIGH) {
    digitalWrite(LED_PIN, HIGH);
    Serial.println("Presença detectada!");
    delay(500);
  } else {
    digitalWrite(LED_PIN, LOW);
  }
  delay(100);
}

💡 Ligando uma Lâmpada — Com Relé

Use um módulo relé entre o Arduino e a rede elétrica. O PIR detecta → Arduino comanda o relé → lâmpada acende:

#define RELE_PIN  4
pinMode(RELE_PIN, OUTPUT);
// No loop:
if (digitalRead(PIR_PIN) == HIGH) {
  digitalWrite(RELE_PIN, HIGH);
} else {
  digitalWrite(RELE_PIN, LOW);
}

💻 Código ESP32 3.3V GPIO

No ESP32, use interrupção de hardware para reação instantânea. Conecte OUT ao GPIO 4:

// pir_esp32.ino — com interrupção de hardware
// Sensor PIR com ESP32 — Mamute Eletrônica
// Ligação: VCC→3.3V ou 5V | GND→GND | OUT→GPIO4

#define PIR_PIN  4
#define LED_PIN  2

volatile bool deteccao = false;
volatile unsigned long ultimoDisparo = 0;

void IRAM_ATTR pirISR() {
  unsigned long agora = millis();
  if (agora - ultimoDisparo > 2000) {
    deteccao = true;
    ultimoDisparo = agora;
  }
}

void setup() {
  Serial.begin(115200);
  pinMode(PIR_PIN, INPUT);
  pinMode(LED_PIN, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(PIR_PIN), pirISR, RISING);
  Serial.println("Warm-up PIR — aguarde 30s...");
  delay(30000);
  Serial.println("Sistema ativo!");
}

void loop() {
  if (deteccao) {
    deteccao = false;
    Serial.println("Presença detectada!");
    digitalWrite(LED_PIN, HIGH);
    delay(3000);
    digitalWrite(LED_PIN, LOW);
  }
}

🌍 Onde Usar o Sensor PIR

💡

Iluminação Automática

Luz que acende ao entrar no cômodo e apaga sozinha — economia de energia real

🚨

Alarme de Intrusão

Detecta movimento em áreas restritas e dispara alerta sonoro ou notificação

🚪

Abertura de Portas

Aciona motor ou trava ao detectar pessoa se aproximando — sem tocar nada

🧮

Contagem de Pessoas

Com posicionamento correto e retrigger em L, conta entradas em ambientes

📹

Acionamento de Câmera

Inicia gravação só quando há movimento — economiza armazenamento e bateria

🌱

Economia de Energia

Desliga equipamentos automaticamente quando o ambiente fica vazio


🔧 Problemas Comuns e Como Resolver

👻

Falsos disparos — detecta sem ninguém

A saída vai para HIGH sem nenhuma pessoa por perto. Acontece muito nos primeiros 60 segundos após ligar ou com fontes de calor próximas.

✅ Solução

Aguarde o warm-up completo (60 s). Afaste o sensor de lâmpadas, janelas com sol direto, ar-condicionado ou pets. Diminua a sensibilidade.

🙈

Não detecta — pessoa passa e nada acontece

A saída fica em LOW mesmo com pessoa na frente. Pode ser ligação errada, sensor de costas ou alcance insuficiente.

✅ Solução

Confirme que a cúpula branca está voltada para a área. Verifique tensão no OUT com multímetro. O PIR detecta melhor movimento lateral do que frontal.

Saída fica em HIGH para sempre

O sinal OUT não volta para LOW. Pode ser jumper em H com movimento contínuo, ou Hold Time no máximo.

✅ Solução

Verifique se há movimento contínuo (ventilador, cortina, animal). Diminua o Hold Time. Mude o jumper para posição L.

📡

ESP32 não lê corretamente — OUT em 5V

Alguns módulos HC-SR501 saem com 5V no pino OUT, o que pode danificar o GPIO do ESP32.

✅ Solução

Meça com multímetro. Se for 5V, use divisor resistivo: R1=10kΩ (OUT→GPIO) + R2=20kΩ (GPIO→GND). Ou use o módulo AM312 que já sai em 3,3V.

🧊

Não funciona em ambiente muito frio

Em ambientes frios, a diferença entre corpo e ambiente diminui, reduzindo o contraste IR e a sensibilidade.

✅ Solução

Aumente a sensibilidade ao máximo. Em ambientes externos muito frios considere sensor com maior sensibilidade espectral. O PIR opera até -20°C mas pode ter desempenho reduzido abaixo de 0°C.

😴

Pessoa parada não é detectada

A lente de Fresnel detecta transição de calor entre zonas. Uma pessoa completamente parada pode não disparar o sensor.

✅ Solução

Esse é comportamento esperado do PIR. Se precisar detectar presença estática, combine com sensor ultrassônico ou use o AMG8833 (câmera térmica de baixo custo).


✅ Checklist — Antes de Usar o Sensor PIR

  • 1
    Aguarde 30–60 segundos após ligar. O PIR precisa estabilizar a leitura do ambiente. Ignore os disparos durante o warm-up — são falsos positivos normais.
  • 2
    Meça a tensão do OUT antes de ligar no ESP32. Se marcar 5V, adicione divisor de tensão. O ESP32 suporta no máximo 3,6V nos GPIOs.
  • 3
    Cúpula voltada para o campo de detecção. Evite posicionar apontado para paredes, janelas com sol direto ou fontes de calor.
  • 4
    Configure o jumper de retrigger corretamente. H = sensor continua ativo enquanto houver movimento. L = dispara uma vez e aguarda o tempo configurado.
  • 5
    Posicione para captar movimento lateral, não frontal. O PIR detecta melhor alguém cruzando o campo do que vindo de frente. Instale de lado para melhor performance.
  • 6
    Use debounce no código. Após detectar, aguarde pelo menos 500 ms antes de ler novamente para evitar múltiplos disparos no mesmo evento.

🛒 Sensores PIR na Mamute Eletrônica

HC-SR501, AM312 e módulos completos — entregamos em todo o Brasil

🔍 Pronto para detectar presença no seu projeto?

Sensores PIR, módulos de relé, ESP32 e tudo que você precisa para automação — na Mamute. Ou passa pessoalmente: Rua Vitória, 125 — Santa Efigênia/SP ☕

🛒 Ver Sensores PIR na Mamute