Projeto com Sensor de Distância Vl53l0x e Arduino para Alta Precisão

Projeto com Sensor de Distância Vl53l0x Arduino para Alta Precisão é uma excelente aplicação para makers que buscam uma solução eficiente para aplicação em seus projetos de desenvolvimento robótico, apresentando resultados com alto grau de precisão quando comparado a modelos comuns.

A precisão em projetos de controle e automação é a chave para bons resultados. Tendo isso em vista, o módulo traz consigo uma incrível capacidade de fazer medidas minuciosas, aliado a um excelente custo/benefício.

 

Projeto com Sensor de Distância Vl53l0x e Arduino para Alta Precisão

Sensor de Distância Vl53l0x para Alta Precisão

 

Suas aplicações são inúmeras, desde simples medições com finalidades de detectar obstáculos, implementar triggers e fazer médias estatísticas até controlar precisamente atuadores em equipamentos. Também pode ser usado para projetos de Internet das Coisas devido ao seu baixo consumo de energia (aproximadamente 20 mW), tornando-o excelente para Green IoT.

Dentre suas principais características, podemos citar a tensão de 3 a 5v e uma distância de medição absoluta de 2m, além da comunicação por I2C que permite a ligação de mais módulos.

 

Biblioteca Vl53l0x

A biblioteca Vl53l0x a ser utilizada é fornecida pela Adafruit. Ela contem diversas funções já implementadas para acesso aos dados que são gerados no sensor.

Para instala-la na IDE do Arduino, basta acessar o menu Ferramentas > Gerenciar Bibliotecas, pesquisar por “VL53L0X” e instalar  a versão mais recente.

Biblioteca Vl53l0x

Biblioteca Vl53l0x

 

Esquemático Projeto com Sensor de Distância Vl53l0x

A comunicação com o Arduino é feita através de I2C. Além das conexões relativas a alimentação do módulo, em 5v, também devemos conectar o SDA (em amarelo)  e SCL (em verde) do módulo na placa do Arduino.

Esquemático Projeto com Sensor de Distância Vl53l0x e Arduino

Esquemático Projeto com Sensor de Distância Vl53l0x e Arduino

 

Além das portas já citadas, o módulo também disponibiliza duas portas adicionais:

  • GPIOI: este é um pino que é usado pelo sensor para indicar que os dados estão prontos.  A biblioteca que usamos (Adafruit) não faz uso deste pino, mas para usuários avançados pode vir a ser útil.
  • XSHUT: o pino de desligamento do sensor. Por padrão é definido como HIGH. Quando a tensão no pino é LOW, o sensor entra no modo de desligamento.

Importante lembrar que o módulo pode vir com uma película de proteção sobre o sensor. Você pode usar uma pinça para removê-la, conforme o gif abaixo. Nele, utilizei a YX-11ESD da Yaxun. Para que a leitura seja precisa, é necessário remover a película (VERIFIQUE SE O SEU SENSOR VEIO COM PELÍCULA).

Sensor de Distância Vl53l0x e Arduino para Alta Precisão

Sensor de Distância Vl53l0x – Retire a Película

 

 

Código Arduino Vl53l0x

A biblioteca utilizada abstrai diversos aspectos de leitura dos registro do sensor, simplificando muito a maneira de obter a medição realizada. Segue o código:

O início contém a rotina .begin do módulo, inicializando as funções internas necessárias do sensor e verificando se o mesmo está funcionando. Em seguida, criamos uma variável “measure”, declarada como um tipo intrínseco aquela classe, para armazenar o valor da leitura do registro do sensor. É por esse motivo que em seguida, na função .rangingTest, ela é passada com o símbolo &, pois está se apontando para o endereço de memória daquela variável, e não do valor em si da variável.

Na estrutura de controle if, a função RangeStatus retorna um valor diferente de 4 caso a leitura dos dados do sensor tenha sido concluída com sucesso. Na sequência, exibimos na Serial as informações obtidas.

 

 

Como podemos verificar, a distância retornada pela função  .RangeMilliMeter é data em milímetros. O delay também pode ser ajustado, porém o tempo de leitura do sensor não é controlado pela biblioteca da Adafruit.

Esse sensor proporciona um suporte consistente para montar diversos projetos, sensores de estacionamento, contador de passagem de pessoas, acionamento de servomotores, etc. No projeto abaixo, vamos integrar esse sensor junto a um display 16×2 através do I2C.

 

Projeto com Display 16×2 I2C

De forma a visualizar a distância do sensor, fora da IDE do Arduino,  iremos utilizar o display 16×2. Primeiramente, como a comunicação com ele é feita através de Módulo I2C, devemos soldar uma conexão de endereçamento para poder ligar ele junto com o VL53L0XV2.  Na figura abaixo, foi utilizado o A2 para alterar o endereço, tornando-o agora localizável no endereço 0x23.

Projeto VL53L0X com Display 16x2 I2C

Projeto VL53L0X com Display 16×2 I2C

 

Após ter soldado essa conexão, precisamos montar o circuito. Dessa vez conectando o SDA e SCL do Arduino juntamente com as respectivas conexões dos módulos, conforme diagrama abaixo.

Esquemático Projeto com Sensor de Distância Vl53l0x Arduino e Display 16x2 I2C

Esquemático Projeto com Sensor de Distância Vl53l0x Arduino e Display 16×2 I2C

 

Com essa configuração, o display estará no endereço 0x23, enquanto o sensor de distância estará no endereço 0x27. Em seguida, após terminar de montar o circuito, podemos integrar o código do display juntamente com o código anterior, do sensor.

A biblioteca LiquidCrystal_I2C pode ser instalada no menu de gerenciamento de bibliotecas.  A rotina do void loop é muito parecida com a que usamos anteriormente, diferenciando-se pela inclusão das funções de exibição de dados no display. Por fim, como o sensor retorna a distância em milímetros, basta dividirmos o valor por 10 de forma a obter a distância em centímetros.

Projeto com Sensor de Distância Vl53l0x Arduino e Display 16×2 I2C

 

Conclusão

Nesse artigo foram apresentadas as características do módulo VL53L0XV2, além da maneira de conectar ele ao Arduino e usar a biblioteca da Adafruit para realizar a leitura da distância. Além disso, integramos o sensor a um display utilizando a comunicação I2C. A partir disso, é possível embasar-se nesses códigos e então desenvolver outros projetos.

Conheça toda linha de produtos Arduino no site da UsinaInfo.

Categorias
ArduinoProjetos

Bacharel em Ciência da Computação pela URI – Campus de Santo Ângelo, com experiência no desenvolvimento de pesquisas em Robótica e prototipação de Sistemas Robóticos.
7 Número de Comentários
  • Humberto silva
    19 novembro 2019 at 16:44
    Deixe seu Comentário

    Olá,
    Gostaria de montar um projeto com esse Sensor de Distância Vl53l0x.
    O projeto seria para usar ele no meu Throttle(acelerador) do meu simulador de vôo.
    Tenho as seguintes placas Atmega 32 U4 5v 16MHZ e Teensy 2.0.
    Por favor busco orientação !
    Obrigado !
    Humberto

    • Matheus Gebert Straub
      21 novembro 2019 at 11:27
      Deixe seu Comentário

      Bom Dia Humberto! Caso opte por utilizar o Arduino Pro Micro ATmega32U4, que acredito ser o produto o qual se refere, você pode desenvolver este mesmo projeto de forma bem simples utilizando os pinos 2 e 3, observe apenas a distinção dos pinos SCL e SDA. Quanto ao código, deverá alterar os pinos de maneira compatível e realizar as devidas alterações, lembre também que na hora de compilar o código deve selecionar o módulo e a COM correspondentes.

  • Gabriel
    2 fevereiro 2020 at 18:08
    Deixe seu Comentário

    Boa Matheus!

    Estou utilizando um Arduino Pro Mico Atmega32U4 com o VL53L0X e estava tentando usar os pinos A2 e A3. Porém os pinos 2 e 3 se mostraram a solução!!

    Obrigado pelo insight.

  • galba Theodoro
    15 junho 2020 at 14:46
    Deixe seu Comentário

    Sabe de algum sensor que consigo medir uns 20 metros +ou- de distancia??

    • Matheus Gebert Straub
      16 junho 2020 at 10:25
      Deixe seu Comentário

      Bom Dia Galba! Infelizmente até o momento não trabalhei com nenhum sensor com tanta distância e desconheço algum sensor Arduino que poça lhe satisfazer.

  • Lucas Alebrante
    3 agosto 2020 at 20:16
    Deixe seu Comentário

    Gostaria de usar dois desses sensores em um projeto, você sabe me dizer como ficaria em relação ao endereço de memoria deles, tem alguma maneira de mudar? talvez usando um modulo i2c?

    • Matheus Gebert Straub
      11 agosto 2020 at 11:38
      Deixe seu Comentário

      Boa Tarde Lucas! Existem métodos de alterar o endereço destes dispositivos sem a necessidade de outro módulo ou dispositivo através do pino XSHUT, um pino para parâmetro de configuração via código.

    Deixe seu Comentário

    *

    *

    Sobre nós

    Hoje a Usinainfo é um dos maiores ecommerces de Ferramentas, Peças para Eletrônica, Componentes Eletrônicos, Sensores e Arduino do Brasil, contando com uma grande diversidade de produtos na linha de eletrônica.

    Sugestões

    Artigos Relacionados