Medindo distância com um módulo laser VL53L0X de 6 pinos e LCD1602-I2C para Arduino
Neste tutorial, vamos aprender como medir distância usando o sensor laser VL53L0X e exibir os resultados em um LCD1602 com interface I2C. Este projeto permite obter medições de distância precisas em milímetros ou centímetros, tornando-o uma adição versátil a qualquer projeto baseado em Arduino. Ao final deste tutorial, você terá um sistema de medição de distância totalmente funcional que é fácil de configurar e usar.

Para isso, utilizaremos o sensor de distância a laser VL53L0X, que se comunica com o Arduino via I2C. O display LCD1602 fornecerá uma representação visual clara da distância medida. Para esclarecer o processo de codificação, consulte o vídeo em :00.
Hardware Explicado
Os principais componentes desta montagem são o sensor de distância a laser VL53L0X e o display LCD1602. O VL53L0X utiliza um laser para medir distâncias com precisão, tornando-o adequado para várias aplicações, incluindo robótica e automação. Ele opera usando comunicação I2C, o que permite fácil integração com o Arduino.
O LCD1602 é um display de caracteres compatível com I2C que pode exibir até 16 caracteres em duas linhas. Ele simplifica o processo de exibição de dados, pois requer menos pinos do que os LCDs tradicionais. Juntos, esses componentes criam um sistema de medição de distância poderoso e fácil de usar.
Detalhes da ficha técnica
| Fabricante | STMicroelectronics |
|---|---|
| Número da peça | VL53L0X |
| Tensão lógica/IO | 1.8 V a 2.8 V |
| Tensão de alimentação | 2.6 V a 3.5 V |
| Corrente de saída (por canal) | ... |
| Corrente de pico (por canal) | ... |
| Orientação sobre a frequência PWM | ... |
| limiares lógicos de entrada | ... |
| Queda de tensão / RDS(on)/ saturação | ... |
| Limites térmicos | ... |
| Pacote | ... |
| Notas / variantes | ... |
- Garanta a tensão de alimentação adequada (2,6 V a 3,5 V).
- Use resistores de pull-up nas linhas SDA e SCL, se necessário.
- Mantenha o sensor afastado de superfícies refletoras para evitar leituras incorretas.
- Verifique o endereço I2C (o padrão é 0x29 para o VL53L0X).
- Considere a dissipação de calor se for utilizado em ambientes de alta temperatura.
Instruções de fiação

Para ligar o sensor VL53L0X e o display LCD1602, comece conectando a alimentação e o terra. Conecte oVCCpino do VL53L0X para o5Vpino no Arduino e oGNDpino ao terra do Arduino. Para o LCD1602, conecte o seuVCCao mesmo5VeGNDpara aterrar também.
Em seguida, conecte as linhas de comunicação I2C. OSDAo pino do VL53L0X deve ser conectado aoA4pino no Arduino, e oSCLo pino deve ir paraA5. OXSHUTpino pode ser conectado aD12no Arduino, mas também pode ser deixado desconectado. Para o LCD1602, certifique-seSDAeSCLtambém estão conectados aos mesmos pinos do sensor VL53L0X.
Exemplos de código e guia passo a passo
VL53L0X sensor;
#include
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
Wire.begin();
sensor.init();
sensor.setTimeout(500);
sensor.startContinuous();
lcd.begin();
lcd.backlight();
}
Na função setup, inicializamos a comunicação serial e o barramento I2C. Osensor.init()inicializa o sensor VL53L0X, enquantolcd.begin()inicializa o visor LCD. A retroiluminação do visor é ativada, permitindo fácil visualização.
void loop() {
int distance = sensor.readRangeContinuousMillimeters();
Serial.print("Distance: ");
lcd.clear();
lcd.print("Robojax VL53L0X");
lcd.setCursor(0,1);
lcd.print("Dist.: ");
lcd.setCursor(7,1);
lcd.print(distance);
Serial.println();
delay(100);
}
Dentro do loop, lemos continuamente a distância usandosensor.readRangeContinuousMillimeters()e o imprime no monitor serial. O LCD é atualizado com a medição de distância, fornecendo feedback em tempo real. O atraso de 100 milissegundos garante que as leituras não sejam atualizadas com muita frequência, permitindo uma leitura fácil.
Demonstração / O que esperar
Ao ligar, o sistema medirá continuamente a distância e exibirá os resultados no LCD. Você poderá ver os valores de distância mudarem à medida que aproxima ou afasta objetos do sensor. Se houver algum problema com o sensor, como erros de tempo limite, mensagens apropriadas serão exibidas no monitor serial (no vídeo em 03:15).
/*
This is Arduino code to measure distance with VL53L0X and display it on LCD1602 with I2C module.
Distance is displayed in mm (millimeter) or cm (centimeter).
Original Laser Sensor source: https://github.com/adafruit/Adafruit_VL53L0X
Modified by Ahmad Shamshiri for RoboJax.com
Date modified: Jun 28, 2018 at 19:06 in Ajax, Ontario, Canada
Watch the video instruction for this code: https://youtu.be/t14ly7Y09oI
You can get this code from RoboJax.com.
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)
LCD1602 Pin
*/
#include <Wire.h>
#include <VL53L0X.h>
VL53L0X sensor;
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int type = 1;// 1=mm , 2= cm
String unit;// variable for unit, mm or cm
void setup()
{
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();
// initialize the LCD,
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
}
void loop()
{
int distance =sensor.readRangeContinuousMillimeters();
//int distance =sensor.startContinuous(100);
//distance = distance;
Serial.print("Distance: ");
//start of loop Robojax code for LCD with I2C
lcd.clear();
lcd.print("Robojax VL53L0X");
lcd.setCursor (0,1); // go to start of 2nd line
lcd.print("Dist.: ");
lcd.setCursor (7,1); // go to start of 2nd line
if(type ==2){
float distanceCM = (float) (distance/10.0);
unit ="cm";
lcd.print(distanceCM);
Serial.print(distanceCM);
Serial.print(unit);
}else{
unit ="mm";
lcd.print(distance);
Serial.print(distance);
Serial.print(unit);
}
lcd.print(unit);
if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
Serial.println();
delay(100);
}
Coisas que você pode precisar
-
AmazonasCompre o VL53L0X na Amazon.amzn.to
-
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 VL53l0x no eBayebay.us
-
Externofolha de dados VL53L0X (PDF)st.com
-
ExternoPágina de download da Adafruitlearn.adafruit.com
Arquivos📁
Arquivo Fritzing
-
VL53L0X_Sensor_de_distância_Quadrados
VL53L0X_Distance_sensor_Squares.fzpz0.02 MB
Outros arquivos
-
Biblioteca Adafruit VL53L0X da Robojax
robojax-VL52L0X_Adafruit_VL53L0X-master.zip -
Sensor de Distância VL53L0X roxo
VL53L0X_Distance_sensor_purple.fzpz0.01 MB