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.

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
| Fabricante | STMicroelectronics |
|---|---|
| Número da peça | VL53L0X |
| Tensão lógica/E/S | 2.6 V a 3.5 V (5 V com regulador) |
| Temperatura de operação | -20 °C a 70 °C |
| Faixa de medição | 30 mm a 2000 mm |
| Frequência de comunicação I2C | 400 kHz |
| Tamanho | 4.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

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.
/* This example shows how to use continuous mode to take
range measurements with the 6-pin VL53L0X module. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.
The range readings are in units of mm.
Original source: https://github.com/adafruit/Adafruit_VL53L0X
Modified by Ahmad Shamshiri for RoboJax.com/RJT83
Date modified: May 31, 2018 at 19:25 in Ajax, Ontario, Canada
Watch the instruction video for this code https://youtu.be/S2jaAQEv3Yo
Pin connection
VL53L0X Pin Arduino Pin
VCC 5V
GND GND
SDA A4 or SDA if available
SCL A5 or SCL if available
GPIO1 leave it unconnected
XSHUT D12 (digital 12 or pin 12)
*/
#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
void setup()
{
pinMode(12,INPUT_PULLUP);
digitalWrite(12,HIGH);
Serial.begin(9600);
Wire.begin();
sensor.init();
sensor.setTimeout(500);
// Start continuous back-to-back mode (take readings as
// fast as possible). To use continuous timed mode
// instead, provide a desired inter-measurement period in
// ms (e.g. sensor.startContinuous(100)).
sensor.startContinuous();
}
void loop()
{
int distance =sensor.readRangeContinuousMillimeters();
//int distance =sensor.startContinuous(100);
//distance = distance;
Serial.print("Distance: ");
Serial.print(distance);
Serial.print("mm");
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
Serial.println();
delay(100);
}
Coisas que você pode precisar
-
eBayCompre VL53l0x no eBayebay.us
-
AliExpressCompre de 1 a 10 peças de VL53L0X no AliExpress.s.click.aliexpress.com
-
BanggoodCompre de 1 a 10 unidades de VL53L0X na Banggood.banggood.com
Recursos e referências
-
ExternoCompre de 1 a 10 peças de VL53L0X no AliExpress.s.click.aliexpress.com
-
ExternoCompre de 1 a 10 unidades de VL53L0X na Banggood.banggood.com
-
ExternoCompre o VL53L0X na Amazonamzn.to
-
ExternoCompre VL53l0x no eBayebay.us
Arquivos📁
Arquivo Fritzing
-
VL53L0X_Sensor_de_distância_Quadrados
VL53L0X_Distance_sensor_Squares.fzpz0.02 MB
Outros arquivos
-
Sensor de Distância VL53L0X roxo
VL53L0X_Distance_sensor_purple.fzpz0.01 MB