VL53L0X láser (I²C)
Mide distancia con un láser infrarrojo por tiempo de vuelo: milímetros de resolución hasta 2 metros, sin que importe el color o el ángulo como en un ultrasonido. Breakout de 4 pines (VIN · GND · SCL · SDA), con regulador de 3,3 V a bordo para usarlo directo a 5 V.
- Manual en español
- Código de ejemplo
- Soporte técnico
Un telémetro láser en 25 milímetros
El VL53L0X de STMicroelectronics es un sensor Time-of-Flight: emite un pulso láser infrarrojo de 940 nm (clase 1, seguro para la vista) y mide cuánto tarda en volver. El resultado es una distancia real en milímetros, independiente del color y la reflectividad del objeto dentro de su rango, y con un haz angosto que no rebota en cualquier cosa como el ultrasonido.
Este breakout deja el chip conectado directo por I²C, con un regulador de 3,3 V y pull-ups a bordo: lo alimentás a 5 V o 3,3 V y lo enganchás a cualquier microcontrolador con SDA/SCL, sin electrónica extra.
Distancia precisa sin contacto, en interiores
Donde el ultrasonido (HC-SR04) es impreciso o ruidoso, este sensor da lecturas estables y rápidas.
- Nivel de líquido o de sólidos en tanques, silos y depósitos (apuntando a la superficie desde arriba).
- Detección de presencia y conteo de personas u objetos.
- Robots: evitar obstáculos, seguir paredes, detectar el borde de una mesa.
- Gestos y control sin contacto (mano cerca / lejos).
- Medición de espesores, posición de un carro o una puerta.
Láser vs. ultrasonido
Elegilo si
- Necesitás precisión de milímetros entre 3 cm y 1,2 m (hasta 2 m en modo largo alcance).
- Es en interiores o con luz controlada.
- Querés un haz angosto que apunte a un solo objeto.
- Necesitás lecturas rápidas (hasta ~50 por segundo).
Mirá otra cosa si
- Es a pleno sol: el infrarrojo ambiente reduce mucho el alcance → ultrasonido.
- El objetivo es transparente, espejado o negro mate: el láser rebota mal.
- Necesitás más de 2 m → VL53L1X (4 m) o ultrasonido (consultanos).
Ejemplo mínimo
Librería Adafruit_VL53L0X desde Arduino IDE. En un ESP32 NodeMCU: SDA a GPIO 21, SCL a GPIO 22.
#include <Wire.h> #include <Adafruit_VL53L0X.h> Adafruit_VL53L0X lox; void setup() { Serial.begin(115200); Wire.begin(21, 22); // SDA, SCL if (!lox.begin()) { Serial.println("No se detecta el VL53L0X"); while (1); } } void loop() { VL53L0X_RangingMeasurementData_t m; lox.rangingTest(&m, false); if (m.RangeStatus != 4) Serial.printf("%d mm\n", m.RangeMilliMeter); else Serial.println("Fuera de rango"); delay(100); }
En la guía: modo largo alcance, calibración de offset y filtrado de lecturas.
Lo que más consultan
- "No se detecta el sensor" (0x29 no responde): revisá que SDA/SCL no estén invertidos y que el módulo tenga alimentación (LED encendido, si trae).
- Lecturas de 8190 mm o "fuera de rango": el objetivo está demasiado lejos, es muy oscuro, o hay luz solar directa. Probá con un objeto claro a 20 cm para validar el sensor.
- Mide de más: el sensor mide desde el chip, y a veces queda una película protectora sobre el emisor. Sacala. Para más precisión, la guía explica la calibración de offset.
- Lectura inestable: subí el tiempo de medición (timing budget) o promediá 5 lecturas. Está en el ejemplo completo.