¿Qué Tan Lejos Está? Aprende a Medir Distancias con VL53L0X y Arduino

Introducción

Bienvenidos a una nueva entrada en nuestro blog. Hoy mostraremos cómo puedes construir tu propio medidor de distancia utilizando un Arduino y el sensor VL53L0X.

¿Qué es VL53L0X?

El VL53L0X es un sensor de distancia revolucionario que utiliza la tecnología Time of Flight (ToF) para medir la distancia entre el sensor y un objeto. Fue desarrollado por STMicroelectronics y es uno de los sensores más pequeños y más precisos disponibles en el mercado.

¿Cómo funciona el VL53L0X?

El funcionamiento del VL53L0X se basa en el principio del "tiempo de vuelo". Este sensor emite un pulso de luz infrarroja corto y entonces mide el tiempo que tarda esa luz en viajar hasta un objeto y volver. Dado que la velocidad de la luz es constante, se puede calcular la distancia al objeto dividiendo el tiempo de vuelo por dos (para tener en cuenta el viaje de ida y vuelta) y multiplicando por la velocidad de la luz.

Capacidades del VL53L0X

Las características y capacidades clave del VL53L0X incluyen:

  1. Rango: El VL53L0X puede medir distancias de hasta 2 metros con una precisión de hasta 2 mm en condiciones ideales. Sin embargo, hay varios factores que pueden afectar la precisión y el rango efectivo del sensor, entre ellos, el rango de medición y la superficie del objeto reflectante. Si necesitas mediciones precisas, es posible que debas realizar pruebas y ajustes para calibrar el sensor en función de las condiciones específicas de tu aplicación.

  2. Velocidad: Puede realizar hasta 50 mediciones por segundo, lo que lo hace adecuado para aplicaciones de alta velocidad.

  3. Tamaño: Es uno de los sensores ToF más pequeños disponibles, lo que facilita su incorporación en muchos proyectos diferentes.

  4. Fácil de usar: El VL53L0X se comunica a través de I2C, lo que lo hace compatible con la mayoría de las plataformas de microcontroladores, incluyendo Arduino y Raspberry Pi.

  5. Resistencia a la luz ambiental: El VL53L0X contiene un filtro para la luz ambiental, lo que significa que puede funcionar con la luz del día y otras fuentes de luz fuerte sin problemas.

  6. Inmunidad al color del objetivo: A diferencia de los sensores basados en luz reflejada, que pueden ser influenciados por el color y la reflectividad del objeto, el VL53L0X mide el tiempo que tarda la luz en regresar, por lo que no se ve afectado por estas características del objetivo.

Montaje del Circuito

Este dispositivo utiliza para comunicarse el protocolo I2C por lo que solo necesita dos pines (SDA y SCL) para comunicarse, en el Arduino uno SCL es A5 y SDA es A4.

VL530LX

Programación con Arduino

Después de montar el circuito, hay que importar la librería "Adafruit_VL53L0X.h". Desde el IDE de Arduino ve a Sketch -> Include Library -> Manage Libraries, luego busca "Adafruit_VL53L0X" en la barra de búsqueda y haz clic en "Install".

Si te pide que instales librerías dependientes adicionales hazlo.

 

 

Código

Primero se importa la biblioteca Adafruit_VL53L0X, que proporciona funciones para interactuar con el sensor VL53L0X.

#include "Adafruit_VL53L0X.h"

Se crea una instancia del sensor VL53L0X utilizando la clase Adafruit_VL53L0X. La instancia se llama 'lox'.

Adafruit_VL53L0X lox = Adafruit_VL53L0X();

En la función setup() se inicializa la comunicación serial a una velocidad de 9600 baudios y se inicia el sensor VL53L0X.

Serial.begin(9600);

lox.begin();

En la función loop se declara una variable 'measure' de tipo 'VL53L0X_RangingMeasurementData_t'. Esta es una estructura proporcionada por la biblioteca Adafruit_VL53L0X para almacenar los datos de medición del sensor VL53L0X.

VL53L0X_RangingMeasurementData_t measure;

Se llama al método rangingTest en el objeto lox para realizar una medición de la distancia. Los datos de medición se almacenan en la variable 'measure'.

lox.rangingTest(&measure, false);

Se imprime la cadena "Distancia en (mm): " y  la medición de la distancia (en milímetros) en el monitor serial.

Serial.print("Distancia en (mm): ");

Serial.println(measure.RangeMilliMeter);

Por último se agrega un retardo de 500 milisegundos.

El código completo queda de la siguiente forma:

Una vez subido el sketch se pueden ver los resultados por monitor serial, acerca y aleja un objeto para ver como cambian los valores. 

 Conclusión 

En este blog post, hemos cubierto los conceptos básicos para comenzar con el sensor de medición de distancia VL53L0X. Sin embargo, este es solo el principio. El sensor VL53L0X es extremadamente versátil y se puede utilizar en una variedad de aplicaciones más allá de las mediciones básicas de distancia. Aquí hay algunas posibilidades adicionales:

Robótica: Puedes usar el VL53L0X en un robot para evitar obstáculos. Al medir la distancia hasta los objetos cercanos, el robot puede determinar dónde está el camino libre y moverse en esa dirección.

Seguridad y Control de Acceso: El sensor puede ser utilizado para detectar si algo se acerca a una cierta distancia y tomar acciones correspondientes, como encender una luz, tomar una foto, sonar una alarma, etc.

Interfaz de Usuario Sin Contacto: Puedes desarrollar una interfaz de usuario que responda a los gestos de la mano, permitiendo a los usuarios interactuar con los dispositivos sin tocarlos físicamente.

Con un poco de creatividad y experimentación, podrías encontrar aún más formas de utilizar este potente y versátil sensor. ¡Así que no te detengas aquí, sigue explorando y aprendiendo! ¡Hasta la próxima!

ArduinoDistanciaVl53l0x

Deja un comentario