Medindo distância com o módulo laser VL53L0X de 6 pinos e o display TM1637 para Arduino
Neste tutorial, vamos aprender como medir a distância usando o sensor de distância a laser VL53L0X e exibir as leituras em um display de 7 segmentos TM1637. Este projeto combina ambos os componentes para criar uma ferramenta de medição de distância simples, porém eficaz. O VL53L0X usa tecnologia laser para fornecer leituras de distância precisas, enquanto o display TM1637 mostra essas leituras em um formato amigável ao usuário.


Vamos passar pelo hardware necessário, pelas instruções de fiação e pelo código para colocar tudo em funcionamento. Ao final deste tutorial, você terá um dispositivo de medição de distância funcional que pode ser usado em várias aplicações. Para um guia visual, não deixe de conferir o vídeo (no minuto 00:00).
Hardware Explicado
Os componentes principais deste projeto são o sensor de distância a laser VL53L0X e o módulo de display TM1637. O VL53L0X é um sensor de tempo de voo (ToF) que mede a distância até um objeto emitindo um feixe laser e calculando o tempo que a reflexão demora para retornar. Ele opera numa faixa de tensão de 2,6 V a 3,5 V, mas também pode funcionar com 5 V graças a um regulador de tensão integrado.
O TM1637 é um controlador de display que aciona um display LED de 7 segmentos. Ele se comunica por meio de uma interface simples de 2 fios (CLK e DIO), facilitando a conexão a um Arduino. O display pode mostrar valores numéricos e é perfeito para visualizar as medições de distância do sensor VL53L0X.
Detalhes da ficha técnica
| Fabricante | STMicroelectronics |
|---|---|
| Número da peça | VL53L0X |
| Tensão lógica/E/S | 2,6 V - 3,5 V |
| Tensão de alimentação | 2.6 V - 5 V |
| Temperatura de operação | de -20 °C a 70 °C |
| Faixa de medição | 30 mm a 2000 mm |
| Frequência I2C | 400 kHz |
| Configuração do tempo limite | 500 ms |
| Pacote | módulo de 6 pinos |
- Certifique-se de uma fonte de alimentação adequada (5V é aceitável).
- Conecte o pino XSHUT a um resistor pull-up para evitar fuga de corrente.
- Use I2C para comunicação; conecte SDA e SCL adequadamente.
- Trate timeouts no código para evitar comportamentos inesperados.
- Fique atento à faixa de temperatura de operação para garantir a precisão.
Instruções de fiação

Para ligar o VL53L0X e o display TM1637, comece conectando o pino VCC do VL53L0X ao pino 5V do Arduino e o pino GND a um pino de terra do Arduino. Em seguida, conecte o pino SDA do VL53L0X ao pino A4 do Arduino, que normalmente é usado para comunicação de dados I2C. O pino SCL deve ser conectado ao pino A5 do Arduino, usado para o sinal de clock.
Para o display TM1637, conecte o pino CLK ao pino digital 2 do Arduino e o pino DIO ao pino digital 3. Por fim, conecte o pino XSHUT do VL53L0X ao pino digital 12 do Arduino. Garanta que quaisquer pinos não utilizados, como o GPIO1 do VL53L0X, permaneçam desconectados. Essa configuração permitirá que o Arduino se comunique efetivamente com o sensor e com o display.
Exemplos de código e guia passo a passo
O código inicializa o sensor e o display, configura a comunicação I2C e lê continuamente as medições de distância. Abaixo está um trecho mostrando a função setup onde os pinos são configurados e o sensor é inicializado:
void setup() {
pinMode(12, INPUT_PULLUP); // set pin 12 for input
digitalWrite(12, HIGH); // set pin 12 high (5V)
Serial.begin(9600);
Wire.begin(); // I2C communication initialized
sensor.init(); // distance sensor is initialized
sensor.setTimeout(500); // time out is set
sensor.startContinuous(); // type of measurement is set
}Na função setup, o pino XSHUT é configurado como entrada com resistor de pull-up, e o sensor é inicializado para medição contínua de distância. O monitor serial também é configurado para exibir as leituras de distância.
Em seguida, o loop principal lê a distância e atualiza o display. Aqui está um trecho focado da função loop:
void loop() {
int distance = sensor.readRangeContinuousMillimeters(); // read the distance in mm
display.setSegments(clearLED); // remove previous value from LED display
display.showNumberDec(distance, false, 4, 0); // display the distance
Serial.print("Distance: ");
Serial.print(distance); // print distance on serial monitor
}Este loop lê continuamente a distância do sensor e atualiza o display TM1637 com a medição mais recente. Também imprime a distância no monitor serial para fins de depuração. Se quiser ver o código completo, ele será exibido abaixo do artigo.
Demonstração / O que esperar
Ao concluir a configuração e fazer o upload do código, você deverá ver a distância medida pelo VL53L0X exibida no TM1637. Ao aproximar ou afastar um objeto do sensor, o valor exibido mudará de acordo. Se você tiver leituras inesperadas, verifique se o sensor não está obstruído e se a superfície do objeto é adequada para a reflexão do laser (no vídeo em 09:30).
Erros comuns incluem fiação invertida ou não inicializar corretamente o sensor, o que pode levar a erros de tempo limite. Certifique-se de que os pinos corretos estão conectados e de que o sensor está alimentado adequadamente para medições de distância precisas.
Recursos e referências
Ainda não há recursos.
Arquivos📁
Folha de dados (pdf)
-
Datasheet TM1637
/download/datasheet/robojax_TM1637_datasheet.pdf0.67 MB
Arquivo Fritzing
-
TM1637 Seven Segment module
application/zip0.01 MB -
TM1637 4 digit seven segment display
application/zip0.01 MB
Manual do Usuário
-
Manual do Display TM1637
robojax-TM1637_display_manual.pdf0.31 MB
Outros arquivos
-
VL53L0X_Distance_sensor_purple
application/zip0.01 MB