Arduino Nano ESP32 - Sensor de Movimento
Este tutorial explica como usar o Arduino Nano ESP32 com o sensor de movimento HC-SR501. Em detalhes, vamos aprender:
- Como um sensor de movimento HC-SR501 funciona
- Como conectar um sensor de movimento HC-SR501 ao Arduino Nano ESP32
- Como ler o valor de um sensor de movimento HC-SR501 para detectar uma pessoa
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Sensor de Movimento HC-SR501

O sensor PIR HC-SR501 é um sensor que consegue detectar o movimento de pessoas (ou animais). Ele é muito usado para detectar a presença de pessoas em várias aplicações (ligar/desligar lâmpadas automaticamente, ativar/desativar escadas rolantes, detectar um intruso, abrir/fechar a porta...)
Pinagem do Sensor de Movimento HC-SR501
O sensor de movimento HC-SR501 tem 3 pinos:
- Pino VCC: conecte este pino ao VCC (5V)
- Pino GND: conecte este pino ao GND (0V)
- Pino OUTPUT: conecte este pino a um pino de entrada do ESP32. Este pino envia o sinal correspondente à detecção de movimento:
- LOW se nenhum movimento for detectado
- HIGH se movimento for detectado.
- O objeto está emitindo raios infravermelhos.
- O objeto está se movendo ou balançando
- Se um objeto está emitindo raios infravermelhos, mas NÃO está se movendo (por exemplo, uma pessoa parada sem se mexer), ele NÃO é detectado pelo sensor.
- Se um objeto está se movendo, mas NÃO está emitindo raios infravermelhos (por exemplo, um robô ou veículo), ele NÃO é detectado pelo sensor.
- Se o movimento é detectado, há pessoas presentes
- Se o movimento NÃO é detectado, NÃO há pessoas presentes
Há também dois potenciômetros e um jumper no sensor de movimento HC-SR501. Esses potenciômetros e o jumper são usados para ajustar a configuração do sensor. As instruções detalhadas estão descritas em Usos Avançados.

Como o Sensor de Movimento HC-SR501 Funciona
O princípio de funcionamento do sensor HC-SR501 se baseia na mudança da radiação infravermelha no objeto em movimento. Para ser detectado pelo sensor HC-SR501, o objeto precisa atender a dois requisitos:
Portanto:
Animais e pessoas emitem raios infravermelhos naturalmente. Portanto, animais e pessoas podem ser detectados pelo sensor HC-SR501 se estiverem se movendo. .
O vídeo acima mostra o princípio de funcionamento do sensor de movimento. Na prática, o sensor de movimento pode funcionar de forma diferente de acordo com a configuração do sensor (descrita na seção Usos Avançados)
Detectando a Presença de Pessoas
O sensor em si NÃO detecta diretamente a presença de pessoas, ele apenas detecta o movimento. E então a presença de pessoas é inferida a partir da detecção de movimento:
Há um problema com essa regra na prática: as pessoas estão presentes no alcance do sensor, mas NÃO estão se movendo. Então o movimento NÃO é detectado. O Arduino Nano ESP32 (ou MCU) deduz que NÃO há pessoa presente.
No entanto, o sensor é muito usado para detectar pessoas em várias aplicações porque esse problema NÃO é grave e o preço do sensor é baixo.
Arduino Nano ESP32 e Sensor de Movimento HC-SR501
Quando um pino do ESP32 é configurado como entrada digital, ele consegue ler o estado (LOW ou HIGH) de qualquer coisa conectada a ele.
Ao conectar o pino do ESP32 ao pino OUTPUT do sensor HC-SR501, podemos usar o código do Arduino Nano ESP32 para ler o valor do pino OUTPUT e então inferir o movimento.
Diagrama de Ligação entre o Sensor de Movimento HC-SR501 e o Arduino Nano ESP32
- O diagrama de ligação quando a placa Arduino Nano ESP32 é alimentada pela porta USB.

This image is created using Fritzing. Click to enlarge image
- O diagrama de ligação quando a placa Arduino Nano ESP32 é alimentada pelo pino Vin.

This image is created using Fritzing. Click to enlarge image
Configuração Inicial
| Ajustador do Alcance de Detecção | Gire-o totalmente no sentido horário. |
| Ajustador do Atraso de Tempo | Gire-o totalmente no sentido anti-horário. |
| Seletor de Disparo Repetido | Coloque o jumper como na imagem abaixo. |

Como Programar o Sensor de Movimento
- Configure um pino do ESP32 para o modo de entrada digital usando a função pinMode()
- Leia o estado do pino OUTPUT do sensor usando a função digitalRead().
- Detecte o início do movimento (o estado do pino muda de LOW para HIGH)
- Detecte o fim do movimento (o estado do pino muda de HIGH para LOW)
Código Arduino Nano ESP32
Passos Rápidos
- Se esta é a primeira vez que você usa o Arduino Nano ESP32, veja como configurar o ambiente do Arduino Nano ESP32 no Arduino IDE.
- Copie o código acima e cole no Arduino IDE.
- Compile e faça o upload do código para a placa Arduino Nano ESP32 clicando no botão Upload do Arduino IDE
- Abra o Serial Monitor no Arduino IDE

- Mova a mão no alcance do sensor
- Veja a saída no Serial Monitor