Contador com sensor infravermelho e display LCD 16×2

Hoje vamos revisitar um post que fizemos lá em 2014, usando um Sensor de Proximidade Infravermelho, como esse da imagem abaixo. No post original usamos o sensor infravermelho e um buzzer pra indicar caso alguma pessoa passasse em frente ao sensor, e no post de hoje vamos acrescentar um display LCD 16×2 que vai mostrar as informações do contador.

Além disso, vamos usar um Arduino Nano para a montagem, já que o nosso contador será colocado dentro de uma caixa feita em impressora 3D. Este contador pode ser usado tanto para pessoas como para objetos.

O Sensor de Proximidade Infravermelho

O sensor infravermelho que vamos usar é um item simples de conectar, alimentado com tensão de 5V e possui um parafuso na parte traseira para ajuste da distância de detecção. Um pino único envia o sinal para o microcontrolador caso o sensor seja acionado.

Com alcance de até 80cm, muito maior do que os sensores infravermelhos tradicionais, ele pode ser usado para contagem de objetos e pessoas, como por exemplo em uma porta para contagem de visitantes em um determinado ambiente.

Circuito sensor infravermelho e display LCD 16×2

No nosso circuito do sensor infravermelho com display LCD 16×2, a conexão do sensor na placa Arduino Nano vai utilizar apenas o pino digital 4, como mostrado no esquema abaixo.

Como saída do contador vamos usar um display LCD 16×2 com módulo I2C integrado, o que vai simplificar bastante o processo de conexão.

O display será conectado nas portas A4 (SDA) e A5 (SCL) do Nano, que são as portas da interface I2C. A alimentação tanto do sensor infravermelho como do display serão feitas pelo pino 5V do Nano.

Programação do contador com sensor de proximidade

O nosso programa usa como biblioteca a LiquidCrystal_I2C, que você pode instalar a partir da IDE do Arduino em Sketch -> Incluir Biblioteca – Gerenciar Bibliotecas.

No Gerenciador de Bibliotecas, procure por LiquidCrystal_I2c conforme a imagem abaixo e em seguida selecione Instalar:

Para o sensor de proximidade não vamos usar nenhuma biblioteca específica, mas apenas a porta digital 4 do Nano.

Dúvidas na instalação da biblioteca? Confira o post Como instalar uma biblioteca na IDE Arduino.

Com a biblioteca instalada, carregue o programa abaixo na IDE do Arduino. Ele vai ler o estado da porta digital 4, onde está instalado o nosso sensor infravermelho.

Caso o sensor seja acionado, vai incrementar a variável contador (linha 39) e enviar o valor do contador tanto para o Serial Monitor como para o display 16×2 I2C.

//Programa: Contador com sensor de proximidade IR e display LCD 16x2
//Autor: Arduino e Cia

#include <LiquidCrystal_I2C.h>

int contador = 0;
int pinosensor = 4;
int leitura; //Armazena o valor lido pelo sensor

//Define o display LCD como 16x2 e endereco 0x3B
LiquidCrystal_I2C lcd(0x3B, 16, 2);

void setup()
{
  Serial.begin(9600);

  //Define o pino do sensor como entrada
  pinMode(pinosensor, INPUT);

  //Inicializa o display
  lcd.init();
  lcd.backlight();

  //Informacoes iniciais display
  lcd.setCursor(0, 0);
  lcd.print("Sensor Prox. IR");
  lcd.setCursor(0, 1);
  lcd.print("Contador: 0");
}

void loop()
{
  //Le as informações do do sensor de proximidade IR
  leitura = digitalRead(pinosensor);

  if (leitura != 1) //Verifica se o objeto foi detectado
  {
    //Incrementa o valor do contador
    contador++;

    //Mostra o valor do contador no Serial Monitor
    Serial.print("Contador : ");
    Serial.println(contador);

    //Atualiza o valor do contador no display
    lcd.setCursor(10, 1);
    lcd.print("    ");
    lcd.setCursor(10, 1);
    lcd.print(contador);

    //Loop caso o objeto pare em frente ao sensor
    while (digitalRead(pinosensor) != 1)
    {
      delay(100);
    }
  }
}

Se você quiser adicionar um botão de reset, pode instalar esse botão por exemplo na porta digital 6 do Arduino Nano e no programa incluir as informações abaixo dentro do setup():

pinMode(6, INPUT);

e dentro do loop, colocar a condição para checar se o botão foi pressionado:

  int botao_reset = digitalRead(6);
  if (botao_reset == 1)
  {
    contador = 0;

    //Atualiza o valor do contador no display
    lcd.setCursor(10, 1);
    lcd.print("    ");
    lcd.setCursor(10, 1);
    lcd.print(contador);
  }

Vamos ver agora alguns detalhes sobre a montagem da caixa que construímos para colocar tudo isso dentro:

Montagem da caixa para o circuito

Para deixar o projeto mais “apresentável”, criamos uma caixa de 100 x 53 x 48 usando uma impressora 3D.

O filamento usado foi o PLA e o tempo de impressão foi de 1h30. Optamos por não usar suportes na hora da impressão, e por isso tivemos que ajustar um pouco a abertura do display, mas nada que pudesse comprometer o resultado final.

Com a caixa pronta, colocamos primeiro o sensor de proximidade IR, fixando o componente com as porcas fornecidas. Em seguida encaixamos o display LCD na abertura e logo abaixo do LCD colocamos a mini protoboard com o Arduino Nano, fixando a protoboard na caixa usando a sua fita dupla face.

Por fim, temos uma tampa que deixa exposto o conector micro USB do Nano, onde vamos colocar o cabo que vai energizar o circuito.

Se você quiser imprimir essa caixa e/ou alterar o projeto, os arquivos estão disponíveis para download aqui no site.

Gostou? Confira outros posts usando Arduino aqui mesmo no Arduino e Cia!

5/5 - (3 votos)

Related posts

Tutorial Genuino 101 com Bluetooth LE

by Arduino e Cia
8 anos ago

Dimmer com o módulo sensor de luz LDR

by Arduino e Cia
10 anos ago

Controle o Arduino usando Node-RED

by Arduino e Cia
3 anos ago
Sair da versão mobile