Medidor de distância com sensor Sharp IR

No post de hoje vamos usar o sensor SHARP GP2Y0A02YK0F, um sensor infravermelho de longo alcance capaz não só de verificar a presença de obstáculos mas também de medir a distância até eles.

Com ele, vamos montar um sensor de distância utilizando display LCD 16×2 e uma placa Arduino Uno.

O sensor infravermelho SHARP GP2Y0A02YK0F

O GP2Y0A02YK0F (datasheet) é um sensor IR (Infravermelho) capaz de medir distâncias de 20 a 150 cm (1,5 m), funcionando com tensão de operação entre 4,5 e 5,5 VDC.

Esse tipo de sensor funciona emitindo um sinal IR e efetuando a leitura por um receptor, tudo no mesmo módulo: na imagem acima temos o emissor no lado direito e o receptor (com uma lente) no lado esquerdo.

Quando o sinal infravermelho encontra um obstáculo, ele é refletido, passa pela lente e o sensor então faz os cálculos para determinar a posição do objeto, gerando na saída uma tensão variável (sinal analógico) que no nosso caso será lida pelo microcontrolador.

Podemos usar esse sensor não só para medir distâncias, mas também como um sensor de presença.

Conexão do sensor no Arduino

No nosso circuito vamos usar o sensor sharp GP2Y0A02YK0F juntamente com um display LCD 16×2 I2C com backlight azul.

O uso desse display vai reduzir bastante o número de conexões no Arduino, já que ele usa a interface I2C de apenas dois fios para comunicação.

Conectamos então o sensor sharp na porta analógica A0 e o display nas portas analógicas A4 (SDA) e A5 (SCL) do Arduino Uno:

O sensor que estou utilizando acompanha cabo de conexão, com os fios vermelho (Vcc) e preto (GND) para alimentação, e o amarelo, que é o pino de sinal.

Programa medidor de distância

Para testar o sensor vamos utilizar duas bibliotecas: a ZSharpIRLibrary e a LiquidCrystal_I2C. Ambas podem ser instaladas a partir da IDE do Arduino, no menu Sketch -> Incluir Biblioteca -> Gerenciar bibliotecas.

Procure por ZSharp e clique em instalar:

Faça o mesmo procedimento para a biblioteca LiquidCrystal_I2C.

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

No programa abaixo, altere a linha 16 de acordo com o endereço do display que você possui. No meu caso o endereço é o 0x3F.

Se estiver com dúvida, faça o download do I2CScanner e carregue o programa no Arduino. O I2CScanner vai mostrar no serial monitor o endereço do seu display.

//Programa: Medidor de distancia com o sensor IR GP2Y0A02YK0F
//Autor: Arduino e Cia

#include <SharpIR.h>
#include <LiquidCrystal_I2C.h>

//Pino de conexao do sensor IR
#define pino_IR A0

//Modelo do sensor: 20150 para o GP2Y0A02YK0F, 1080 para o GP2Y0A21Y
#define model 20150

SharpIR SharpIR(pino_IR, model);

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

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

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

  //Informacoes iniciais display
  lcd.setCursor(0, 0);
  lcd.print("Sensor SHARP IR");
  lcd.setCursor(0, 1);
  lcd.print("Dist.: 00  cm");
}

void loop()
{
  delay(2000);
  unsigned long time1 = millis();

  //Leitura da distancia
  int dis = SharpIR.distance();

  //Exibe as informacos no serial monitor e no display
  Serial.print("Distancia: ");
  Serial.println(dis);

  lcd.setCursor(7, 1);
  lcd.print("    ");
  lcd.setCursor(7, 1);
  lcd.print(dis);

  //Calcula o tempo gasto na medicao
  unsigned long time2 = millis() - time1;

  //Mostra no serial monitor o tempo da medicao, em milissegundos
  Serial.print("Tempo medicao (ms): ");
  Serial.println(time2);
}

Você confere a distância medida pelo sensor não só no display, mas também no serial monitor. Um outro dado apresentado neste último é o tempo que o sensor levou para fazer a medição.

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

5/5 - (1 voto)

Related posts

Como usar o módulo Joystick Arduino

by Arduino e Cia
11 anos ago

Como usar o sensor DS18B20 com Arduino

by Arduino e Cia
12 anos ago

Arduino Uno e Shield MP3 Player Sparkfun

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