Código de Pesquisa

Usando um medidor de distância a laser VL53L0X com Arduino

Usando um medidor de distância a laser VL53L0X com Arduino

Neste tutorial, exploraremos como usar o medidor de distância a laser VL53L0X com um Arduino. Este dispositivo permite medir distâncias com precisão usando um laser, tornando-o ideal para várias aplicações, como robótica e automação. Ao final deste tutorial, você terá uma configuração funcional que pode medir distâncias e exibi-las no monitor serial.

VL53L0X 200cm range sensor-blue

Para o nosso projeto, usaremos a biblioteca Adafruit VL53L0X, que simplifica o processo de interface com o sensor. Essa biblioteca fornece as funções necessárias para inicializar o sensor, ler medições e lidar com quaisquer erros que possam surgir. Você pode consultar o vídeo para obter um guia visual sobre a configuração (no vídeo às 02:15).

Hardware explicado

Os principais componentes deste projeto incluem o medidor de distância a laser VL53L0X e a placa Arduino. O VL53L0X é um sensor de tempo de voo que usa um laser para medir distâncias de até 2 metros com alta precisão. Opera através do protocolo I2C, permitindo fácil comunicação com o Arduino.

A placa Arduino serve como microcontrolador que processa os dados do VL53L0X. Ele envia comandos para o sensor e recebe as medições de distância, que podem ser exibidas ou utilizadas em outras aplicações. A fiação adequada é crucial para garantir leituras precisas do sensor.

Detalhes da folha de dados

FabricanteSTMicroelectronics
Número da peçaVL53L0X
Tensão2,6 V a 3,5 V
Gama30 mm a 2000 mm
Exatidão±3% típico
InterfaceI2C
Faixa de temperatura-40 °C até +85 °C
Consumo atual<1 mA (em espera), 20 mA (ativo)
PacoteVFLGA-8

  • Certifique-se de que o sensor esteja alimentado corretamente (2.6 V a 3.5 V).
  • Mantenha as configurações corretas de endereço I2C para evitar conflitos.
  • Mantenha o sensor limpo para medições de distância precisas.
  • Use resistores pull-up apropriados nas linhas I2C, se necessário.
  • Evite a luz solar direta no sensor para leituras confiáveis.

Instruções de fiação

Arduino Wiring for VL53L0X
Arduino Wiring for VL53L0X

Para conectar o sensor VL53L0X ao Arduino, conecte o pino VCC do sensor ao pino de 5V no Arduino. O pino GND deve ser conectado ao aterramento (GND) do Arduino. Para a comunicação I2C, conecte o pino SDA do VL53L0X ao pino A4 no Arduino e conecte o pino SCL ao pino A5. Se você estiver usando um modelo Arduino diferente, consulte as atribuições de pinos SDA e SCL específicas para essa placa.

Por exemplo, no Arduino Mega, você conectaria SDA ao pino 20 e SCL ao pino 21. Certifique-se de que todas as conexões estejam seguras para evitar problemas de comunicação. Se o sensor não responder, verifique novamente a fiação e certifique-se de que o Arduino esteja ligado corretamente.

Exemplos de código e passo a passo

Abaixo está um trecho da função de configuração que inicializa o sensor VL53L0X:

void setup() {
  Serial.begin(9600);
  while (! Serial) {
    delay(1);
  }
  Serial.println("Robojax Test");
  if (!lox.begin()) {
    Serial.println(F("Failed to boot VL53L0X"));
    while(1);
  }
}

Esse código inicializa a comunicação serial e tenta iniciar o sensor VL53L0X. Se o sensor não inicializar, ele imprimirá uma mensagem de erro e interromperá o programa.

Em seguida, aqui está um trecho da função de loop que lê a medição de distância:

void loop() {
  VL53L0X_RangingMeasurementData_t measure;
  lox.rangingTest(&measure, false);
  if (measure.RangeStatus != 4) {
    Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter);
  } else {
    Serial.println(" out of range ");
  }
  delay(100);
}

Este bloco lê continuamente a medição de distância do sensor e a imprime no monitor serial. Se a medição estiver fora do intervalo, isso indica isso de acordo.

Demonstração / O Que Esperar

Ao executar o programa, você deve ver as medições de distância exibidas no monitor serial. As leituras devem ser atualizadas a cada 100 milissegundos. Se o sensor estiver apontando para um objeto, ele exibirá a distância em milímetros. Se o objeto estiver fora do alcance, isso também indicará isso. Certifique-se de testar o sensor dentro de sua faixa especificada para obter os melhores resultados (em vídeo às 10:00).

Carimbos de data/hora de vídeo

  • 00:00-Introdução
  • 02:15- Configuração da fiação
  • 05:30- Explicação do código
  • 10:00-Demonstração

Imagens

VL53L0X 200cm range sensor-blue
VL53L0X 200cm range sensor-blue
Arduino Wiring for VL53L0X
Arduino Wiring for VL53L0X
15-Using a VL53L0X laser distance meter in Arduino
Idioma: C++
/*
 * Este exemplo mostra como usar o modo contínuo para fazer medições de distância com o VL53L0X. 
 * 
 * Obtenha este código e outros códigos Arduino do Robojax.com
 * Aprenda Arduino passo a passo em um curso estruturado com todo o material, diagramas de fiação e bibliotecas, tudo em um só lugar.
 * 
 * Se você achou este tutorial útil, por favor, me apoie para que eu possa continuar criando conteúdo como este.
 * 
 * ou faça uma doação usando PayPal http://robojax.com/L/?id=64
 * 
 * Este código é "COMO ESTÁ", sem garantia ou responsabilidade. Livre para ser utilizado desde que você mantenha esta nota intacta.*
 * Este código foi baixado do Robojax.com
 * Este programa é um software livre: você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU conforme publicada pela Free Software Foundation, seja a versão 3 da Licença, ou (a seu critério) qualquer versão posterior.
 * 
 * Este programa é distribuído na esperança de que seja útil, mas SEM QUALQUER GARANTIA; sem mesmo a garantia implícita de COMERCIABILIDADE ou ADEQUAÇÃO A UM PROPÓSITO ESPECÍFICO. Veja a Licença Pública Geral GNU para mais detalhes.
 * 
 * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa. Se não, veja <https://www.gnu.org/licenses/>.
 * 
 * Copyright (c) 2015, Majenko Technologies
 * Todos os direitos reservados.
 * 
 * A redistribuição e o uso em formas de código-fonte e binárias, com ou sem modificação, são permitidos desde que as seguintes condições sejam atendidas:
 * 
 * Redistribuições do código-fonte devem manter o aviso de copyright acima, esta lista de condições e a seguinte isenção de responsabilidade.
 * 
 * Redistribuições em forma binária devem reproduzir o aviso de copyright acima, esta lista de condições e a seguinte isenção de responsabilidade na documentação e/ou outros materiais fornecidos com a distribuição.
 * 
 * Nem o nome da Majenko Technologies nem os nomes de seus colaboradores podem ser usados para endossar ou promover produtos derivados deste software sem permissão específica por escrito.
 * 
 * ESTE SOFTWARE É FORNECIDO PELOS DETENTORES DE DIREITOS AUTORAIS E COLABORADORES "COMO ESTÁ" E QUAISQUER GARANTIAS EXPRESSAS OU IMPLÍCITAS, INCLUINDO, MAS NÃO SE LIMITANDO A, GARANTIAS IMPLÍCITAS DE COMERCIABILIDADE E ADEQUAÇÃO A UM PROPÓSITO ESPECÍFICO SÃO ISENTAS. EM NENHUM CASO O DETENTOR DOS DIREITOS AUTORAIS OU COLABORADORES SERÃO RESPONSÁVEIS POR QUAISQUER DANOS DIRETOS, INDIRETOS, ACIDENTAIS, ESPECIAIS, EXEMPLARES OU CONSEQUENTES (INCLUINDO, MAS NÃO SE LIMITANDO A, AQUISIÇÃO DE BENS OU SERVIÇOS SUBSTITUTOS; PERDA DE USO, DADOS OU LUCROS; OU INTERRUPÇÃO DE NEGÓCIOS) CAUSADOS EM QUALQUER TEORIA DE RESPONSABILIDADE, SEJA EM CONTRATO, RESPONSABILIDADE RESTRITA, OU DELITO (INCLUINDO NEGLIGÊNCIA OU OUTRAS), DECORRENTES DE QUALQUER MANEIRA DO USO DESTE SOFTWARE, MESMO QUE AVISADO DA POSSIBILIDADE DE TAIS DANOS.
 */
#include "Adafruit_VL53L0X.h"

Adafruit_VL53L0X lox = Adafruit_VL53L0X();

void setup() {
  Serial.begin(9600);

 // aguarde até que a porta serial abra para dispositivos USB nativos
  while (! Serial) {
    delay(1);
  }

  Serial.println("Robojax Test");
  if (!lox.begin()) {
    Serial.println(F("Failed to boot VL53L0X"));
    while(1);
  }
 // poder
  Serial.println(F("VL53L0X API Simple Ranging example\n\n"));
}


void loop() {
  VL53L0X_RangingMeasurementData_t measure;

  Serial.print("Reading a measurement... ");
  lox.rangingTest(&measure, false); // passar 'true' para obter a impressão dos dados de depuração!

  if (measure.RangeStatus != 4) { // falhas de fase têm dados incorretos
    Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter);
  } else {
    Serial.println(" out of range ");
  }

  delay(100);
}

Recursos e referências

Arquivos📁

Nenhum arquivo disponível.