Medindo a distância com um módulo a laser VL53L0X de 6 pinos para Arduino

Medindo a distância com um módulo a laser VL53L0X de 6 pinos para Arduino

Neste tutorial, aprenderemos como medir distância usando o sensor de distância a laser VL53L0X com um módulo de 6 pinos. Este pequeno, porém poderoso, sensor utiliza tecnologia de tempo de voo para fornecer medições de distância precisas de até 200 cm. Seguindo este guia, você será capaz de configurar o sensor com um Arduino e ler valores de distância diretamente no monitor serial.

VL53L0X 200cm range sensor

Para este projeto, usaremos o sensor VL53L0X, que é compacto e fácil de integrar em várias aplicações. O sensor comunica-se via I2C, tornando simples conectá-lo a uma placa Arduino. No vídeo, você encontrará explicações adicionais e demonstrações do processo de configuração (em 04:00).

Hardware explicado

O VL53L0X é um sensor de distância por tempo de voo que emite um feixe de laser e mede o tempo que a luz leva para retornar depois de atingir um objeto. Isso permite que ele calcule com precisão a distância até o objeto. O sensor opera com uma tensão entre 2.6 V e 3.5 V, mas pode ser alimentado com 5 V graças a um regulador de tensão interno.

O módulo possui seis pinos: VCC, GND, SDA (linha de dados), SCL (linha de clock), GPIO1 (pino de E/S de uso geral) e XSHUT (pino de desligamento). O pino GPIO1 não é usado nesta configuração, mas pode ser deixado desconectado. O pino XSHUT permite desligar o sensor para economizar energia quando não estiver em uso.

Detalhes da ficha técnica

FabricanteSTMicroelectronics
Número da peçaVL53L0X
Tensão lógica/E/S2.6 V a 3.5 V (5 V com regulador)
Temperatura de operação-20 °C a 70 °C
Faixa de medição30 mm a 2000 mm
Frequência de comunicação I2C400 kHz
Tamanho4.4 mm x 2.4 mm x 1 mm

  • Garanta uma fonte de alimentação adequada (5 V recomendada).
  • Conecte SDA e SCL aos pinos I2C apropriados do Arduino.
  • Use resistores de pull-up nas linhas I2C, se necessário.
  • Não deixe GPIO1 desconectado; ele pode ficar flutuando.
  • Mantenha o pino XSHUT em nível alto durante a operação.
  • Meça distâncias em um ambiente bem iluminado para maior precisão.
  • Calibre o sensor para medições precisas.
  • Teste o alcance do sensor colocando objetos a várias distâncias.
  • Monitore a saída serial em busca de leituras de distância e mensagens de tempo limite.

Instruções de fiação

Arduino wiring VL53L0X laser distance sensor
Arduino wiring VL53L0X laser distance sensor

Para ligar o sensor VL53L0X ao seu Arduino, comece conectando o pino VCC do sensor ao pino 5V do Arduino. Em seguida, conecte o pino GND ao pino GND do Arduino. O pino SDA do sensor deve ser conectado ao pino A4 do Arduino (ou ao pino SDA se sua placa tiver pinos I2C dedicados). Da mesma forma, conecte o pino SCL do sensor ao pino A5 (ou ao pino SCL). Deixe o pino GPIO1 sem conexão, pois não é necessário para este projeto.

Finalmente, conecte o pino XSHUT ao pino digital 12 no Arduino. Esse pino será usado para controlar o estado de desligamento do sensor. Certifique-se de que todas as conexões estejam firmes para evitar quaisquer problemas de comunicação.

Exemplos de código e tutorial passo a passo

No código, começamos incluindo as bibliotecas necessárias e inicializando o sensor VL53L0X. A função setup configura o sensor e inicia medições contínuas de distância. Aqui está um trecho da função setup:

void setup() {
  pinMode(12, INPUT_PULLUP);
  digitalWrite(12, HIGH);
  Serial.begin(9600);
  Wire.begin();
  sensor.init();
  sensor.setTimeout(500);
  sensor.startContinuous();
}

Neste trecho, configuramos o pino 12 como entrada com resistor de pull-up e inicializamos a comunicação serial a 9600 baud. Também inicializamos o sensor e definimos um tempo limite para as leituras, garantindo que ele funcione continuamente.

Em seguida, lemos a distância na função loop, onde o valor medido é impresso no monitor serial:

void loop() {
  int distance = sensor.readRangeContinuousMillimeters();
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.print("mm");
  if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
  Serial.println();
  delay(100);
}

Este código lê a distância em milímetros e a imprime no monitor serial. Se ocorrer um tempo limite, isso indica que o sensor não recebeu uma leitura válida.

Demonstração / O que esperar

Quando você executar o programa, deve começar a ver medições de distância no monitor serial. A saída vai oscilar conforme você aproxima ou afasta objetos do sensor. Você pode notar mensagens de timeout ocasionais se o sensor não conseguir obter uma leitura (no vídeo às 10:30). Para melhorar a precisão, considere fazer a média de várias leituras.

Imagens

VL53L0X 200cm range sensor
VL53L0X 200cm range sensor
Arduino wiring VL53L0X laser distance sensor
Arduino wiring VL53L0X laser distance sensor
103-Measureing distance using VL53L0X TOF range sensor
Idioma: C++
Copiado!

Coisas que você pode precisar

Recursos e referências

Arquivos📁

Arquivo Fritzing

Outros arquivos