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
Class device_access.SerialAccess
contains all the methods for using it
RangeFinder(serial_port: str, baud_rate: int, timeout: int, debug: bool)
Need to supply all of these for now
serial_port: str
- The serial port the RangeFinder is connected too such as/dev/tty.usbserial-910
baud_rate: int
- Baud Rate. Should be115200
timeout: int
- Timeout. Should use1
return_rate: float
- Should be one of"0.1", "0.2", "0.5", "1", "2", "5", "10", "20", "50", "100"
debug: bool
- SetTrue
to enable debugging, otherwiseFalse
from vl53_400_lib import RangeFinder
range_finder = RangeFinder("/dev/tty.usbserial-910", 115200, 1, 10, False)
This method resets the Rangefinder.
range_finder.reset()
This method sets the sensor mode between serial (default), modbus and iic.
mode: str
- The mode to set. (serial
,modbus
,iic
) Probably only want to use serial or modbus. modbus will stop the serial updates
range_finder.set_sensor_mode("modbus")
Gets the return rate setting
str
: The return rate in Hz
rate = range_finder.get_return_rate()
rate: str
- One of "0.1", "0.2", "0.5", "1", "2", "5", "10", "20", "50", "100"
range_finder.set_return_rate("0.5")
Only prints the data to stdout
This method streams data from the serial port to stdout. It does not return anything and will block until interrupted if loop is True.
loop: bool
- Whether or not to loop forever.
Defaults to True.
Set to false to exit after one loop (for testing)
range_finder.stream_data(True)
This is the main workhorse function to use. It will fetch the distance data from the Rangefinder Reads data from the serial port and returns a dictionary.
data: dict
- A dictionary containing the distance
and units
,
as well as the state
and state_code
.
data = range_finder.get_distance()
git clone
cd vl53_400_lib
poetry install
> 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.
- Make initialization key/values with defaults
- Calibration