Arduino UNO R4 - Sensor de Movimento
Este tutorial ensina como usar o sensor de movimento HC-SR501 e o Arduino UNO R4 para detectar pessoas. Em detalhes, vamos aprender:
- Como o sensor de movimento HC-SR501 funciona
- Como conectar o sensor de movimento HC-SR501 ao Arduino UNO R4
- Como programar o Arduino UNO R4 para ler as informações do sensor de movimento HC-SR501
- Como usar o Arduino UNO R4 e o sensor de movimento para detectar a entrada de uma pessoa

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables STEM V4B IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o Sensor de Movimento HC-SR501

O sensor PIR HC-SR501 detecta o movimento de pessoas ou animais. Ele é muito usado em várias aplicações, como acender e apagar luzes, abrir e fechar portas, acionar escadas rolantes e detectar intrusos.
Quando você vai a lugares onde as portas abrem e fecham sozinhas, onde as luzes acendem e apagam automaticamente ou onde as escadas rolantes começam a funcionar sozinhas, você já se perguntou: "Como isso acontece?" Se sim, este guia não só vai explicar como funciona, mas também mostrar como criar isso você mesmo. Vamos começar!
Pinagem
O sensor de movimento HC-SR501 tem três pinos:
- Pino GND: conecte ao GND (0V)
- Pino VCC: conecte ao VCC (5V)
- Pino OUTPUT: envia LOW quando não há movimento e HIGH quando há movimento. Conecte este pino ao pino de entrada do Arduino UNN R4.
O HC-SR501 tem um jumper e dois potenciômetros, que ajudam a ajustar as configurações do sensor. Comece com a configuração padrão. Você pode encontrar mais informações na seção "Usos Avançados". Usos Avançados

Como Funciona
O sensor HC-SR501 percebe o movimento ao notar mudanças na luz infravermelha vinda do objeto que se move. Para o sensor HC-SR501 detectar um objeto, ele precisa atender a duas condições:
- Está se agitando ou se movendo
- Está emitindo energia infravermelha.
Portanto:
- Se um objeto se move sem emitir raios infravermelhos (como um robô ou um carrinho de brinquedo), o sensor não vai detectá-lo.
- Se um objeto emite raios infravermelhos, mas não se move (como uma pessoa parada), o sensor não vai detectá-lo.
Pessoas e animais emitem infravermelho naturalmente. Por isso, o sensor consegue perceber quando pessoas e animais se movem.
O estado do pino OUTPUT:
- Se nenhuma pessoa ou animal está se movendo dentro do alcance do sensor, o pino OUTPUT do sensor fica em LOW.
- Se uma pessoa ou animal entra no alcance do sensor, o pino OUTPUT muda de LOW para HIGH, indicando a detecção de movimento.
- Se uma pessoa ou animal sai do alcance do sensor, o pino OUTPUT muda de HIGH para LOW, indicando o fim do movimento.
O vídeo mostra a ideia básica de como o sensor de movimento funciona. Em situações reais, o funcionamento pode variar um pouco de acordo com as configurações, como explicado na seção Usos Avançados.
Arduino UNO R4 - Sensor de Movimento HC-SR501
Quando você configura um pino do Arduino UNO R4 como entrada digital, ele consegue detectar se o item conectado está em estado LOW ou HIGH.
Conecte o pino do Arduino UNO R4 ao pino OUTPUT do sensor HC-SR501. Depois, use o código do Arduino UNO R4 para ler o valor do pino OUTPUT e detectar movimento.
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Veja A melhor forma de alimentar o Arduino Uno R4 e outros componentes.
Configuração Inicial
| Ajuste do Tempo de Atraso | Gire o parafuso totalmente no sentido anti-horário. |
| Ajuste do Alcance de Detecção | Gire o parafuso totalmente no sentido horário. |
| Seletor de Disparo Repetido | Coloque o jumper como mostrado na imagem. |

Como Programar o Sensor de Movimento
- Configure um pino do Arduino UNO R4 como entrada digital usando a função pinMode().
- Use a função digitalRead() para verificar o estado do pino OUTPUT do sensor.
- Detecte quando o movimento começa (o pino muda de estado de LOW para HIGH).
- Detecte quando o movimento termina (o estado do pino muda de HIGH para LOW).
Código Arduino UNO R4
Passos Rápidos
Siga estas instruções passo a passo:
- Se esta é a primeira vez que você usa o Arduino Uno R4 WiFi/Minima, consulte o tutorial sobre como configurar o ambiente para o Arduino Uno R4 WiFi/Minima no Arduino IDE.
- Ligue os componentes de acordo com o diagrama fornecido.
- Conecte a placa Arduino Uno R4 ao seu computador usando um cabo USB.
- Abra o Arduino IDE no seu computador.
- Selecione a placa Arduino Uno R4 apropriada (por exemplo, Arduino Uno R4 WiFi) e a porta COM.
- Copie o código acima e abra-o no Arduino IDE
- Pressione o botão Upload no Arduino IDE para carregar o código no Arduino UNO R4
- Abra o Serial Monitor
- Mova a mão na frente do sensor
- Veja a saída no Serial Monitor
Arduino UNO R4 com Sensor de Movimento HC-SR501 - Tutorial em Vídeo
Abaixo está um tutorial em vídeo, passo a passo, que mostra como usar o sensor de movimento HC-SR501 com o Arduino UNO R4. No final do vídeo, você vai ver como fazer um sistema de abertura automática de porta com um servo e um buzzer usando o código abaixo:
Usos Avançados
Podemos ajustar as configurações do sensor usando um jumper e dois potenciômetros, como descrito acima.
Ajuste do Alcance de Detecção
Este potenciômetro ajusta a distância de detecção (cerca de 3 metros a 7 metros).
- Quando girado totalmente no sentido horário, o alcance de detecção é de cerca de 3 metros.
- Quando girado totalmente no sentido anti-horário, o alcance de detecção é de cerca de 7 metros.

Podemos mudar a posição do potenciômetro para obter o alcance que quisermos, entre 3 metros e 7 metros.
Ajuste do Tempo de Atraso
Este potenciômetro ajusta o tempo de atraso.
- Se você girá-lo totalmente no sentido horário, o tempo de atraso será de cerca de 5 minutos.
- Se você girá-lo totalmente no sentido anti-horário, o tempo de atraso será de cerca de 3 segundos.
A seguir, vamos explicar o que significa o tempo de atraso e como ele se relaciona com o Disparo Repetido.

Seletor de Disparo Repetido
Este jumper permite escolher um modo de disparo: disparo único ou disparo repetido.

Vamos chamar a configuração do tempo de atraso (ajustada pelo Ajuste do Tempo de Atraso) de time_delay. Imagine que você continue se movendo dentro da área de detecção do sensor por um bom tempo, que vamos chamar de motion_time (muito maior que time_delay).
- No modo de disparo único, o pino OUTPUT alterna entre LOW e HIGH várias vezes. Ele fica em HIGH por um período igual a "time_delay" e em LOW por um tempo fixo de 3 segundos.

- O pino OUTPUT fica em HIGH durante o tempo de movimento mais o tempo de atraso.

Teste
Vamos testar os modos de disparo. Gire o Ajuste do Tempo de Atraso totalmente para a esquerda para definir o tempo de atraso em 3 segundos.
- Modo de Disparo Único:
- Coloque o jumper para selecionar o modo de disparo único.
- Acene com a mão na frente do sensor continuamente por 10 segundos.
- Tire a mão do alcance do sensor.
- Espere 3 segundos; depois, veja no Serial Monitor a saída mostrada abaixo.
- Modo de Disparo Repetido:
- Coloque o jumper para ativar o modo de Disparo Repetido.
- Mova a mão continuamente na frente do sensor por cerca de 10 segundos.
- Tire a mão do alcance do sensor.
- Depois de esperar 3 segundos, veja no Serial Monitor a saída.
- Dispositivos ou máquinas costumam ser ligados quando uma pessoa é detectada por perto.
- Dispositivos ou máquinas não são desligados assim que a pessoa sai. Eles são desligados depois de um certo atraso.
No modo de disparo único, o sensor é ativado duas ou três vezes. No modo de disparo repetido, ele é ativado apenas uma vez.
※ Nota:
Durante o período LOW, que dura 3 segundos, o sensor não consegue detectar nenhum movimento. Isso significa que o sensor fica inativo nesse tempo, mas isso normalmente não causa problemas.
É recomendado usar o modo de disparo repetido.
Em aplicações práticas: