Código de Pesquisa

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

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

Este tutorial demonstra como usar o medidor de distância a laser CJMCU VL53L0X com um Arduino. Este módulo, equipado com um sensor time-of-flight VL53L0X da Texas Instruments e um conversor de nível bidirecional TXS0108E (no vídeo em 00:06), oferece medição de distância precisa de até 2 metros (no vídeo em 00:52). Sua compatibilidade com vários níveis lógicos (3.3V, 1.8V, 5V) simplifica a integração com diferentes microcontroladores (no vídeo em 00:21). Este projeto abre uma ampla gama de possibilidades.

Ideias para projetos:

  • Robótica: Implementar a evitação de obstáculos em robôs.
  • Automação: Controle de máquinas com base na proximidade.
  • Casa inteligente: Crie iluminação automática com base na distância.
  • Segurança: Desenvolver um sistema de alarme baseado em proximidade.

Hardware/Componentes

Para construir este projeto, você precisará dos seguintes componentes:

  • Placa Arduino (qualquer modelo serve)
  • Módulo Medidor de Distância a Laser CJMCU VL53L0X
  • Fios jumper

Guia de fiação

O módulo VL53L0X conecta-se ao Arduino da seguinte forma:

Conecte o pino VCC do módulo ao pino 5V do Arduino. O regulador interno do módulo fornece os 3.3V necessários para o sensor. (no vídeo em 01:50)

Conecte o pino GND do módulo ao pino GND do Arduino.

Conecte o pino SDA do módulo ao pino A4 do Arduino.

Conecte o pino SCL do módulo ao pino A5 do Arduino.

Deixe o pino XSHUT desconectado, a menos que precise usá-lo para controle de desligamento. (no vídeo em 03:50)

Explicação do código

O código fornecido utiliza a biblioteca VL53L0X. Aqui está uma explicação das principais partes configuráveis:


#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;

void setup()
{
  Serial.begin(9600);
  // ... other setup code ...
  sensor.setTimeout(500); // Set timeout to 500ms (in video at 06:40)
  sensor.startContinuous(); // Start continuous measurement mode (in video at 06:50)
}

void loop()
{
  Serial.print(sensor.readRangeContinuousMillimeters()); // Read distance in mm (in video at 07:01)
  // ... other loop code ...
}

Osensor.setTimeout(500)Esta linha define o tempo limite para medições de distância para 500 milissegundos. Ajuste este valor se necessário para sua aplicação (no vídeo em 06:40). Osensor.startContinuous()A função inicia a medição contínua da distância, fornecendo leituras de distância o mais rápido possível (no vídeo em 06:50). Asensor.readRangeContinuousMillimeters()A função retorna a distância medida em milímetros (no vídeo em 07:01).

Projeto/Demonstração ao vivo

O vídeo demonstra o funcionamento do sensor, mostrando como as leituras de distância mudam à medida que a distância do sensor ao alvo varia. As leituras são precisas dentro de poucos milímetros, especialmente em distâncias maiores que 10mm (no vídeo em 08:20). Em alcances muito próximos (menos de 10mm), a precisão diminui (no vídeo em 09:50). A demonstração também mostra que superfícies reflexivas podem afetar as leituras, especialmente se o laser não estiver perpendicular à superfície (no vídeo em 10:32).

Capítulos

  • [00:00] Introdução e visão geral do projeto
  • [00:48] Detalhes do sensor VL53L0X
  • [01:41] Visão geral e especificações do módulo
  • [02:55] Aplicações e Padrões
  • [03:35] Pinagem e Conexões
  • [05:29] Explicação do código
  • [07:45] Fiação e Conexões
  • [08:18] Demonstração ao vivo
136-Source code for the VL523L0X distance measurement module for Arduino
Idioma: C++
/* This example shows how to use continuous mode to take
range measurements with the VL53L0X. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.

The range readings are in units of mm. 
Updated by Ahmad Shamshiri for Robojax.com on July 23, 2018 in Ajax, Ontario, Canada.
Watch video instructions for this code: https://youtu.be/0PnAyt51IU4
Download the library and get other resources for this code at http://robojax.com
*/

#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;

void setup()
{
  Serial.begin(9600);
  Serial.println("Robojax CJMCU VL523L0X laser distance test");
  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()
{
  Serial.print(sensor.readRangeContinuousMillimeters());// print distance

  if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }

  Serial.println();
}

Recursos e referências

Arquivos📁

Nenhum arquivo disponível.