Nota
¡Hola, bienvenido a la Comunidad de Entusiastas de Raspberry Pi, Arduino y ESP32 de SunFounder en Facebook! Profundiza en Raspberry Pi, Arduino y ESP32 con otros entusiastas.
¿Por qué unirte?
Soporte experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
Aprende y comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.
Preestrenos exclusivos: Accede anticipadamente a anuncios de nuevos productos y adelantos.
Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.
Promociones festivas y sorteos: Participa en sorteos y promociones de temporada.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [aquí] y únete hoy mismo!
Lección 21: Sensor de Distancia Micro-LIDAR Time of Flight (VL53L0X)
En esta lección, aprenderás a usar un Raspberry Pi para conectarte con un sensor de distancia Micro-LIDAR Time of Flight (VL53L0X). Te guiaremos en la configuración del sensor, la inicialización de la comunicación I2C y la medición de distancias en tiempo real. Este proyecto mejorará tu comprensión sobre cómo conectar hardware con el Raspberry Pi y utilizar Python para aplicaciones prácticas. Además, profundizarás en la forma de ajustar los parámetros de medición para satisfacer diversas necesidades de precisión y velocidad.
Componentes Requeridos
En este proyecto, necesitamos los siguientes componentes.
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
Nombre |
ARTÍCULOS EN ESTE KIT |
ENLACE |
|---|---|---|
Kit Universal Maker Sensor |
94 |
También puedes comprarlos por separado desde los enlaces a continuación.
Introducción del Componente |
Enlace de compra |
|---|---|
Raspberry Pi 5 |
|
Cableado
Instalar la Biblioteca
Nota
La biblioteca adafruit-circuitpython-vl53l0x depende de Blinka, por lo que asegúrate de que Blinka esté instalada. Para instalar bibliotecas, consulta: Instalar Adafruit_Blinka (CircuitPython) - Opcional.
Antes de instalar la biblioteca, asegúrate de que el entorno virtual de Python esté activado:
source ~/env/bin/activate
Instala la biblioteca adafruit-circuitpython-vl53l0x:
pip3 install adafruit-circuitpython-vl53l0x
Ejecutar el Código
Nota
Asegúrate de haber instalado la biblioteca de Python requerida para ejecutar el código según los pasos de «Instalar la Biblioteca».
Antes de ejecutar el código, asegúrate de haber activado el entorno virtual de Python con Blinka instalado. Puedes activar el entorno virtual usando un comando como este:
source ~/env/bin/activate
Encuentra el código para esta lección en el directorio
universal-maker-sensor-kit-main/pi/, o copia y pega directamente el código abajo. Ejecuta el código ejecutando los siguientes comandos en el terminal:python 21_vl53l0x_module.py
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
# Demo simple del sensor de distancia VL53L0X.
# Imprimirá el rango/distancia detectada cada segundo.
import time
import board
import busio
import adafruit_vl53l0x
# Inicializa el bus I2C y el sensor.
i2c = busio.I2C(board.SCL, board.SDA)
vl53 = adafruit_vl53l0x.VL53L0X(i2c)
# Opcionalmente, ajusta el tiempo de medición para cambiar la velocidad y precisión.
# Consulta el ejemplo aquí para más detalles:
# https://github.com/pololu/vl53l0x-arduino/blob/master/examples/Single/Single.ino
# Por ejemplo, un tiempo de medición de 20ms, más rápido pero menos preciso:
# vl53.measurement_timing_budget = 20000
# O un tiempo de medición de 200ms, más lento pero más preciso:
# vl53.measurement_timing_budget = 200000
# El tiempo de medición predeterminado es 33ms, un buen compromiso entre velocidad y precisión.
try:
# El bucle principal leerá el rango y lo imprimirá cada segundo.
while True:
print("Range: {0}mm".format(vl53.range))
time.sleep(1.0)
except KeyboardInterrupt:
print("Exit") # Salir con CTRL+C
Análisis del Código
Importando las bibliotecas
import time import board import busio import adafruit_vl53l0x
time: Utilizado para implementar retrasos.board: Proporciona acceso a los pines físicos del Raspberry Pi.busio: Gestiona la comunicación I2C entre el Pi y el sensor.adafruit_vl53l0x: La biblioteca específica para el sensor VL53L0X. Para más detalles sobre la bibliotecaadafruit_vl53l0x, consulta adafruit/Adafruit_CircuitPython_VL53L0X.
Inicializando el Sensor
# Inicializa el bus I2C y el sensor. i2c = busio.I2C(board.SCL, board.SDA) vl53 = adafruit_vl53l0x.VL53L0X(i2c)
Esto configura la comunicación I2C usando los pines SCL (línea de reloj) y SDA (línea de datos).
El sensor VL53L0X se inicializa con este bus I2C.
Configuración (Opcional)
# Opcionalmente ajusta el tiempo de medición... # vl53.measurement_timing_budget = 20000 # ...
Esta parte del código, que está comentada, permite ajustar el tiempo de medición del sensor, lo que afecta el balance entre velocidad y precisión.
Bucle Principal
try: while True: print("Range: {0}mm".format(vl53.range)) time.sleep(1.0) except KeyboardInterrupt: print("Exit")
En un bucle infinito, se lee el rango del sensor e imprime el valor cada segundo.
El bucle puede finalizar con una interrupción CTRL+C, que es gestionada por la excepción KeyboardInterrupt.