Este proyecto proporciona una interfaz Python simplificada en Raspberry Pi para la API ST VL53L0X (ST Microelectronics).
Siguiendo el modelo del repositorio cassou/VL53L0X_rasp (https://github.com/cassou/VL53L0X_rasp.git)
Para poder compartir el bus i2c con otro código Python que utiliza el bus i2c, esta biblioteca implementa las funciones i2c específicas de la plataforma VL53L0X a través de devoluciones de llamada a la interfaz smbus de Python.
Versión 1.0.2:
Agregue soporte para el multiplexor I2C TCA9548A. Probado con https://www.adafruit.com/products/2717 breakout. (johnbryanmoore)
Agregue un ejemplo de Python utilizando la compatibilidad con multiplexor TCA9548A (johnbryanmoore)
Agregar soporte de instalación de pip (grantramsay)
Agregar soporte para smbus2 (grantramsay)
Actualizar soporte de instalación de pip python2/3 (naisy)
Actualización de soporte para smbus/smbus2 (naisy)
Agregue gcc -fPIC CFLAGS para compilar en Ubuntu (naisy)
Agregar soporte para cambio de dirección I2C (naisy)
Versión 1.0.1:
Simplificar el proceso de construcción (svanimisetti)
Agregue un ejemplo de Python que grafica la salida del sensor (svanimisetti)
Actualice las instrucciones de compilación (svanimisetti, johnbryanmoore)
Versión 1.0.0:
Agregue soporte para múltiples sensores en el mismo bus utilizando la llamada ST API para cambiar la dirección del dispositivo.
Agregue soporte para una verificación de errores mejorada, como la detección de errores de E/S en el acceso I2C.
Versión 0.0.9:
Versión inicial y solo admite 1 sensor con verificación de errores limitada.
Notas sobre la compatibilidad con múltiples sensores:
Para tener múltiples sensores en el mismo bus, debe tener el pin de apagado de cada sensor vinculado a GPIO individuales para que puedan habilitarse individualmente y configurar las direcciones.
Tanto la placa Adafruit como la Pololu para VL53L0X tienen pull-ups I2C en la placa. Debido a esto, la cantidad de tablas que se pueden agregar se limitará a solo 5 o 6 antes de que el pull-up se vuelva demasiado fuerte.
Los cambios en la plataforma y el código python_lib c permiten hasta 16 sensores.
Los cambios de dirección son volátiles, por lo que configurar el pin de apagado en un nivel bajo o quitar la energía cambiará la dirección nuevamente al valor predeterminado 0x29.
Notas sobre el uso del multiplexor I2C TCA9548A:
Si se necesitan GPIO limitados para configurar nuevas direcciones para cada sensor, usar un multiplexor I2C TCA9548A es una buena opción, ya que permite usar hasta 8 sensores sin usar GPIO.
El TCA9548A también es una buena opción si se utilizan varias placas en el mismo bus I2C y el total de todos los pullups I2C combinados provocaría que el bus no funcione.
En teoría, puede conectar varios multiplexores TCA9548A, cada uno con hasta 8 sensores, siempre que cada TCA9548A tenga una dirección diferente. Esto no se ha probado pero debería funcionar en teoría.
(Tenga en cuenta que, si bien el autor es un ingeniero de software integrado, este es un primer intento de extender Python y el autor no es de ninguna manera un experto en Python, por lo que se agradece cualquier sugerencia de mejora).
# Python2pip2 instala git+https://github.com/pimoroni/VL53L0X-python.git# Python3pip3 instala git+https://github.com/pimoroni/VL53L0X-python.git
Para construir sobre raspberry pi, primero asegúrese de tener las herramientas y bibliotecas de desarrollo adecuadas:
sudo apt-get install build-essential python-dev
Luego use los siguientes comandos para clonar el repositorio y compilarlo:
cd tu_directorio_git clon de git https://github.com/pimoroni/VL53L0X_rasp_python.gitcd VL53L0X-python hacer
En el directorio de Python se encuentran los siguientes archivos de Python:
VL53L0X.py: contiene la interfaz de Python ctypes para la biblioteca ST.
VL53L0X_example.py: este ejemplo accede a un único sensor con la dirección predeterminada.
VL53L0X_example_livegraph.py: este ejemplo traza los datos de distancia de un solo sensor en un gráfico en vivo. Este ejemplo requiere matplotlib. Utilice sudo pip install matplotlib
para instalar matplotlib.
VL53L0X_multi_example.py: este ejemplo accede a 2 sensores, configurando el primero para la dirección 0x2B y el segundo para la dirección 0x2D. Utiliza GPIO 20 y 16 conectados a los pines de apagado de los 2 sensores para controlar la activación del sensor.
VL53L0X_TCA9548A_example.py: este ejemplo accede a 2 sensores a través de un multiplexor I2C TCA9548A con el primero conectado al bus 1 y el segundo al bus 2 en el TCA9548A.