Skip to main content

Python library for using the VL53-400 laser rangerfinder via serial port

Project description

vl53-400 Library

Python Library and CLI for the VL53-400 laser rangefinder with Serial interface

NOTE: This is still a bit underconstruction. The Functions here do seem to work, but not all capabilities of the chipset is handled yet. You should be able to do measurements though.

This is for the MJ-VL53-400 unit Sold by MengJie.

Its basically a STMicroelectronics VL53L0X with a UART so you can use it via a USB -> TTL Serial adapter and not deal with IIC or Modbus.

It seems to actually be a WitMotion Laser Distance Sensor WT-VL53L0 Distance Module UART Output repackaged by MengJie

Library Functions

Class device_access.SerialAccess contains all the methods for using it

Init

    def __init__(self, serial_port: str, baud_rate: int, timeout: int = 1) -> None:
        """
        This method initializes the class.
        Args:
            serial_port (str): The serial port to connect to.
            baud_rate (int): The baud rate to use.
            timeout (int): The timeout to use.
        """

Reset

    def reset(self) -> None:
        """
        This method resets the lidar.
        """

Set Sensor mode

    def set_sensor_mode(self, mode: str) -> None:
        """
        This method sets the sensor mode.
        Args:
            mode (str): The mode to set. (serial, modbus, iic)
                        Probably only want to use serial or modbus. modbus will stop the  serial updates
        """

Get Return Rate

    def get_return_rate(self) -> str:
        """
        Gets the return rate setting
        Returns:
            str: The return rate in Hz
        """

Set Return Rate

    def set_return_rate(self, rate: str) -> None:
        """
        Gets the return rate from the lidar
        Returns:
            str: The return rate
        """

Stream Data

Only prints the data to stdout

``` python
def stream_data(self, loop: bool = True) -> None:
    """
    This method streams data from the serial port.
    Args:
        loop (bool): Whether or not to loop forever.
           Defaults to True. Set to false to exit after one loop (for testing)
    """
```

Get Distance

This is the main workhorse function to use

    def get_distance(self) -> dict[str, str]:
        """
        This method reads data from the serial port and returns a dictionary.
        Returns:
            dict: A dictionary containing the `distance` and `units`,
                  as well as the `state` and `state_code`.
        """

Main.py has a CLI for exercising all functions

Install and run cli

git clone 
cd vl53_400_lib
poetry install

To run the cli:

> poetry run vl53 --help

Usage: vl53 [OPTIONS]

Options:
  --serial-port TEXT              The serial port to connect to.
  --baud-rate INTEGER             The baud rate to use.
  --timeout INTEGER               The timeout to use.
  --return-rate [0.1|0.2|0.5|1|2|5|10|20|50|100]
                                  Set Return Rate in Hz
  --mode [serial|modbus|iic]      Comm mode (modbus stops serial spew)
  --op [stream|get_return_rate|lstream|reset]
                                  The operation to perform.
  --debug                         Enable debug logging.
  --help                          Show this message and exit.

TODO:

  • Calibration
  • Publish to Pypi.org

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vl53_400_lib-0.1.0.tar.gz (5.8 kB view hashes)

Uploaded Source

Built Distribution

vl53_400_lib-0.1.0-py3-none-any.whl (7.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page