Medindo distância com o módulo laser VL53L0X de 6 pinos e o display TM1637 para Arduino

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.

VL53L0X 200cm range sensor
TM1637 4 digit display module

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

FabricanteSTMicroelectronics
Número da peçaVL53L0X
Tensão lógica/E/S2,6 V - 3,5 V
Tensão de alimentação2.6 V - 5 V
Temperatura de operaçãode -20 °C a 70 °C
Faixa de medição30 mm a 2000 mm
Frequência I2C400 kHz
Configuração do tempo limite500 ms
Pacotemó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

Arduino wiring for VL53L0X with TM1637 4 digit dispaly
Arduino wiring for VL53L0X with TM1637 4 digit dispaly

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.

Imagens

VL53L0X 200cm range sensor
VL53L0X 200cm range sensor
TM1637 4 digit display module
TM1637 4 digit display module
Arduino wiring for VL53L0X with TM1637 4 digit dispaly
Arduino wiring for VL53L0X with TM1637 4 digit dispaly
104-Measure distance with a Laser VL53L0X 6-pin module and a TM1637 LED display for Arduino
Idioma: C++
Copiado!

Recursos e referências

Ainda não há recursos.

Arquivos📁

Folha de dados (pdf)

Arquivo Fritzing

Manual do Usuário

Outros arquivos