Testando Sensor de Presença (PIR) com Arduino UNO

O funcionamento do Sensor de Presença e Movimento PIR se baseia na detecção de calor emitido pelo corpo. Ele consegue detectar o movimento de objetos que estejam em uma área de até 7 metros de distancia e ao detecter movimento, o pino de alarme é ativado.

É possível ajustar a duração do tempo de espera para estabilização e tambem a distancia de detecção do PIR através de dois potenciômetro que se encontram na parte de baixo do sensor.

Modo de Uso

O sensor PIR HC-SR501 é um dos sensores de movimento mais simples de usar do mercado, e é totalmente compatível com Arduino. Ele tem um ângulo de abertura é de aproximadamente 120 graus.

O sensor possui dois potenciômetros na parte de trás.
– Seleciona quanto tempo o pino de saída vai ficar ligado quando o sensor detectar algum
movimento. (5 segundos a 2,5 minutos) – Quadrado Azul
– Ajusta a distância máxima de leitura. (3 metros a 7 metros) – Quadrado Laranja
– Tensão de Operação: 4,5-20V
– Tensão Dados: 3,3V (Alto) – 0V (Baixo)
– Tempo de Bloqueio: 2,5seg (Default)

Pinagem

Os pinos são identificados na placa embaixo da cápsula do sensor (plástico branco redondo), ao tirar a cápsula é possível ver a sequência dos pinos, como na foto abaixo.

Conectando ao Sensor

Conecte uma fonte de 5v ao GND e VCC. O pino DADOS refere-se ao sinal de saída que será ‘Alto’ indicando movimento ou ‘Baixo’ indicando nenhuma movimentação. Quando a saída é acionada pelo movimento detectado esta ficará em alto por um curto período de tempo, mesmo se não haja mais movimento.

Segue o esquema elétrico que foi seguido para o teste inicial

Segue o código do projeto (Ref.: Site Brincando com ideias – links ao final do artigo)

#define pinPIR 7

void setup() {
  pinMode(pinPIR, INPUT);
  Serial.begin(9600);
}

void loop() {
  bool valorPIR = digitalRead(pinPIR);
  if (valorPIR) {
     Serial.println("DETECTADO");
  } else {
     Serial.println("----");
  }
}

Lançamento de dado com Arduíno e sensor PIR

Este projeto consiste em utilizar um sensor PIR para realizar o lançamento de um dado de seis lados de forma automatica.
Ao acionar o sensor, o programa vai piscar os leds em forma sequencial, simulando uma jogada, e deixar acesso o numero de led correspondente ao numero sorteado.

Alguns apontamentos:
– O numero sorteado é Gerado de forma aleatória.
– O led que se encontra separado, é chamado de Ready. É o indicador que o dado esta pronto para outro lançamento.

#define pinPIR 8
int ledReady = 12;
int ledPins[6] = {2, 3, 4, 5, 6, 7};
int dicePatterns[7][6] =
{
  {0, 0, 0, 0, 0, 0},
  {1, 0, 0, 0, 0, 0},
  {1, 1, 0, 0, 0, 0},
  {1, 1, 1, 0, 0, 0},
  {1, 1, 1, 1, 0, 0},
  {1, 1, 1, 1, 1, 0},
  {1, 1, 1, 1, 1, 1}
};

int blank = 0;
void setup() {
  pinMode(pinPIR, INPUT);
  Serial.begin(9600);

}

void loop() {
  bool valorPIR = digitalRead(pinPIR);
  if (valorPIR) {
    digitalWrite(ledReady, 0);
    Serial.println("PIR detect moviment");
    rollTheDice();
    delay(10000);
    Serial.println("--- End Cycle ---");
  } else {
    show(blank);
    digitalWrite(ledReady, 1);
  }
}

void rollTheDice() {
  Serial.println("Roll The Dice");
  int result = 0;
  for (int circle = 0; circle < 5; circle++) {
    for (int i = 0; i < 8; i++) {
      show(i);
      delay(200);
    }
  }
  result = random(1, 7);
  Serial.println("Dice number: " + String(result));
  for (int j = 0; j < 3; j++) {
    show(blank);
    delay(300);
    show(result);
    delay(300);
  }
}

void show(int result) {
  for (int i = 0; i < 6; i++) {
    digitalWrite(ledPins[i], dicePatterns[result][i]);
  }
}

Execução do projeto

A visualização do funcionamento é melhor usando o simulador ao invés do hardware físico, e por este motivo foi a versão usada no artigo

Para usuários avançados

O sensor tem ainda pads na parte de baixo da placa, onde você pode selecionar o padrão de reset do mesmo após ele verificar algum movimento. Ao colocar um pingo de solda entre os pinos do meio e L, você habilita que ele não resete. Isso significa que, após ver algo se mover ele dá o pulso no pino de saída e pára de funcionar (precisando ser resetado manualmente para voltar a funcionar, ou seja, ligando a desligando o sensor da alimentação). Se você colocar um pingo de solda entre o pino do meio e o pad com a letra H você habilita o auto reset, onde ele vai colocar o pino de saída em nível lógico alto após verificar algo em sua frente, vai voltar com o sinal para nível lógico baixo depois do tempo setado no potenciômetro, e depois está pronto para fazer uma nova leitura, ou seja, o reset é feito automaticamente pelo sensor. Por padrão, o sensor trabalha no modo auto reset e não é necessário nenhuma solda para funcionar.

Referências

– https://www.filipeflop.com/produto/sensor-de-movimento-presenca-pir/
– https://www.robocore.net/loja/sensores/sensor-de-presenca-pir-hc-sr501
– https://www.baudaeletronica.com.br/sensor-pir.html
– https://www.youtube.com/watch?v=0SnDHiJaR5M
– https://www.brincandocomideias.com/

Leave a Reply

Your email address will not be published. Required fields are marked *