fwalsh
Automirador de dedo.
Quiero comenzar este post aclarando que todo lo aquí vertido es simplemente una prueba que realice con un sensor que me llamó la atención para algo puntual y sin vistas a ser demasiado preciso o extenderlo a otras locuras.
Con eso en mente, el sensor es el VL53L0X de la firma ST cuya hoja de datos adjunto conjuntamente con el Manual de Usuario, para aquellos que deseen obtener el conjunto de funciones API le dejo este vínculo en donde se registran y lo descargan; que contiene?, lo desconozco ya que no me dedico a la programación en lenguaje C ( en realidad podría decirse con más exactitud que no me dedico a la programación
)
Podríamos decir que el VL53L0X es un sensor de distancia que opera por láser infrarrojo de clase 1 para medir distancias de 50mm a 2000 mm, también opera con elevada luz ambiental infrarroja e incorpora un sistema de compensación de la medición que le permite funcionar incluso detrás de un cristal protector. ( Incluyo un vínculo a un video de ST Labs en donde pueden ver sus características y su funcionamiento aún en entornos con elevados contaminantes )
Mi idea fué sensar el volumen remanente de un tanque de agua, utilizándolo aún cuando sospechaba que su longitud de onda ( 940nm ) podría atravesar el líquido y no medir nada o en el mejor de los casos sin precision, el resultado fue que midió con bastante precisión a pesar de lo antedicho.
Todavía queda por ver si no se produce condensación de agua en el sensor que perturbe la medición como pasaba con el sensor de ultrasonido que tenía colocado previamente; si bien era hermético, la condesación generaba gotas de agua que el sensor interpretaba como "pared" y devolvia error de medicion dado que estaba fuera del rango permitido.
Este es el dispositivo VL53L0X montado en la placa TOF200C junto al ESP-01 que utilicé para las pruebas y su integración con el Home Assistant.

En ESPHome este sensor está soportado y se encuentra aquí, para quienes deseen utilizarlo con Arduino, hay una librería desarrollada por Adafruit "Adafruit_VL53L0X.h"
Su conexionado es más que evidente
VIN - 3.3V
GND - GND
SDA - GPIO2 del ESP-01
SCL - GPIO0 del ESP-01
INT - NC
SHUT ( o XSHUT ) - NC
En ESPHome hay que declarar primero la configuración I2C para que el sensor funcione, por ejemplo en YAML sería:
y luego el sensor
en caso de utilizar mas de un sensor en el bus I2C en ESPHome, hay que definir las diferentes GPIO que corresponderán a cada sensor en el ESPXX y, en este caso, conectarlas a cada SHUT o X-SHUT correspondiente ( ver página 13 del datasheet ). Esto no lo he probado.
Si alguien quiere aportar algo mas al tema, como siempre bienvenido!
Con eso en mente, el sensor es el VL53L0X de la firma ST cuya hoja de datos adjunto conjuntamente con el Manual de Usuario, para aquellos que deseen obtener el conjunto de funciones API le dejo este vínculo en donde se registran y lo descargan; que contiene?, lo desconozco ya que no me dedico a la programación en lenguaje C ( en realidad podría decirse con más exactitud que no me dedico a la programación
Podríamos decir que el VL53L0X es un sensor de distancia que opera por láser infrarrojo de clase 1 para medir distancias de 50mm a 2000 mm, también opera con elevada luz ambiental infrarroja e incorpora un sistema de compensación de la medición que le permite funcionar incluso detrás de un cristal protector. ( Incluyo un vínculo a un video de ST Labs en donde pueden ver sus características y su funcionamiento aún en entornos con elevados contaminantes )
Mi idea fué sensar el volumen remanente de un tanque de agua, utilizándolo aún cuando sospechaba que su longitud de onda ( 940nm ) podría atravesar el líquido y no medir nada o en el mejor de los casos sin precision, el resultado fue que midió con bastante precisión a pesar de lo antedicho.
Todavía queda por ver si no se produce condensación de agua en el sensor que perturbe la medición como pasaba con el sensor de ultrasonido que tenía colocado previamente; si bien era hermético, la condesación generaba gotas de agua que el sensor interpretaba como "pared" y devolvia error de medicion dado que estaba fuera del rango permitido.
Este es el dispositivo VL53L0X montado en la placa TOF200C junto al ESP-01 que utilicé para las pruebas y su integración con el Home Assistant.

En ESPHome este sensor está soportado y se encuentra aquí, para quienes deseen utilizarlo con Arduino, hay una librería desarrollada por Adafruit "Adafruit_VL53L0X.h"
Su conexionado es más que evidente
VIN - 3.3V
GND - GND
SDA - GPIO2 del ESP-01
SCL - GPIO0 del ESP-01
INT - NC
SHUT ( o XSHUT ) - NC
En ESPHome hay que declarar primero la configuración I2C para que el sensor funcione, por ejemplo en YAML sería:
YAML:
i2c:
sda: GPIO2
scl: GPIO0
scan: true
id: bus_a
y luego el sensor
YAML:
sensor:
- platform: vl53l0x
name: "VL53L0x Distance"
address: 0x29
update_interval: 60s
long_range: true
en caso de utilizar mas de un sensor en el bus I2C en ESPHome, hay que definir las diferentes GPIO que corresponderán a cada sensor en el ESPXX y, en este caso, conectarlas a cada SHUT o X-SHUT correspondiente ( ver página 13 del datasheet ). Esto no lo he probado.
YAML:
sensor:
- platform: vl53l0x
name: "distancia1"
id: distancia1
address: 0x41
enable_pin: GPIOXX
timeout: 200us
update_interval: 500ms
unit_of_measurement: "m"
- platform: vl53l0x
name: "distancia2"
id: distancia2
address: 0x42
enable_pin: GPIOXX
timeout: 200us
update_interval: 500ms
unit_of_measurement: "m"
Si alguien quiere aportar algo mas al tema, como siempre bienvenido!