Added plugin and backend for VL53L1X laser ranger/distance sensor
This commit is contained in:
parent
8462f474f7
commit
e60660b0e6
8 changed files with 115 additions and 0 deletions
|
@ -32,6 +32,7 @@ Backends
|
|||
platypush/backend/scard.rst
|
||||
platypush/backend/sensor.accelerometer.rst
|
||||
platypush/backend/sensor.bme280.rst
|
||||
platypush/backend/sensor.distance.vl53l1x.rst
|
||||
platypush/backend/sensor.envirophat.rst
|
||||
platypush/backend/sensor.ir.zeroborg.rst
|
||||
platypush/backend/sensor.leap.rst
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
``platypush.backend.sensor.distance.vl53l1x``
|
||||
=============================================
|
||||
|
||||
.. automodule:: platypush.backend.sensor.distance.vl53l1x
|
||||
:members:
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
``platypush.plugins.gpio.sensor.distance.vl53l1x``
|
||||
==================================================
|
||||
|
||||
.. automodule:: platypush.plugins.gpio.sensor.distance.vl53l1x
|
||||
:members:
|
||||
|
|
@ -27,6 +27,7 @@ Plugins
|
|||
platypush/plugins/gpio.sensor.accelerometer.rst
|
||||
platypush/plugins/gpio.sensor.bme280.rst
|
||||
platypush/plugins/gpio.sensor.distance.rst
|
||||
platypush/plugins/gpio.sensor.distance.vl53l1x.rst
|
||||
platypush/plugins/gpio.sensor.envirophat.rst
|
||||
platypush/plugins/gpio.sensor.ltr559.rst
|
||||
platypush/plugins/gpio.sensor.mcp3008.rst
|
||||
|
|
30
platypush/backend/sensor/distance/vl53l1x.py
Normal file
30
platypush/backend/sensor/distance/vl53l1x.py
Normal file
|
@ -0,0 +1,30 @@
|
|||
from platypush.backend.sensor import SensorBackend
|
||||
|
||||
|
||||
class SensorDistanceVl53l1xBackend(SensorBackend):
|
||||
"""
|
||||
Backend to poll an `VL53L1x <https://www.st.com/en/imaging-and-photonics-solutions/vl53l1x.html>`_
|
||||
laser ranger/distance sensor
|
||||
|
||||
Requires:
|
||||
|
||||
* ``smbus2`` (``pip install smbus2``)
|
||||
* ``vl53l1x`` (``pip install vl53l1x``)
|
||||
"""
|
||||
|
||||
def __init__(self, short=True, medium=True, long=True, **kwargs):
|
||||
"""
|
||||
:param short: Enable short range measurement (default: True)
|
||||
:param medium: Enable medium range measurement (default: True)
|
||||
:param long: Enable long range measurement (default: True)
|
||||
"""
|
||||
enabled_sensors = {
|
||||
'short': short,
|
||||
'medium': medium,
|
||||
'long': long,
|
||||
}
|
||||
|
||||
super().__init__(plugin='gpio.sensor.distance.vl53l1x', enabled_sensors=enabled_sensors, **kwargs)
|
||||
|
||||
|
||||
# vim:sw=4:ts=4:et:
|
67
platypush/plugins/gpio/sensor/distance/vl53l1x.py
Normal file
67
platypush/plugins/gpio/sensor/distance/vl53l1x.py
Normal file
|
@ -0,0 +1,67 @@
|
|||
from platypush.plugins import action
|
||||
from platypush.plugins.gpio.sensor import GpioSensorPlugin
|
||||
|
||||
|
||||
class GpioSensorDistanceVl53l1xPlugin(GpioSensorPlugin):
|
||||
"""
|
||||
Plugin to interact with an `VL53L1x <https://www.st.com/en/imaging-and-photonics-solutions/vl53l1x.html>`_
|
||||
laser ranger/distance sensor
|
||||
|
||||
Requires:
|
||||
|
||||
* ``smbus2`` (``pip install smbus2``)
|
||||
* ``vl53l1x`` (``pip install vl53l1x``)
|
||||
"""
|
||||
|
||||
def __init__(self, i2c_bus=1, i2c_address=0x29, **kwargs):
|
||||
"""
|
||||
:param i2c_bus: I2C bus number (default: 1)
|
||||
:param i2c_address: I2C address (default: 0x29)
|
||||
"""
|
||||
|
||||
super().__init__(**kwargs)
|
||||
|
||||
self.i2c_bus = i2c_bus
|
||||
self.i2c_address = i2c_address
|
||||
self._device = None
|
||||
|
||||
# noinspection PyUnresolvedReferences
|
||||
def _get_device(self):
|
||||
if self._device:
|
||||
return self._device
|
||||
|
||||
import VL53L1X
|
||||
self._device = VL53L1X(i2c_bus=self.i2c_bus, i2c_address=self.i2c_address)
|
||||
return self._device
|
||||
|
||||
@action
|
||||
def get_measurement(self, short=True, medium=True, long=True):
|
||||
"""
|
||||
:param short: Enable short range measurement (default: True)
|
||||
:param medium: Enable medium range measurement (default: True)
|
||||
:param long: Enable long range measurement (default: True)
|
||||
|
||||
:returns: dict. Example::
|
||||
|
||||
output = {
|
||||
"short": 83, # Short range measurement in mm
|
||||
"medium": 103, # Medium range measurement
|
||||
"long": 43, # Long range measurement
|
||||
}
|
||||
|
||||
"""
|
||||
|
||||
device = self._get_device()
|
||||
device.open()
|
||||
ret = {}
|
||||
|
||||
for i, r in enumerate(['short', 'medium', 'long']):
|
||||
if eval(r):
|
||||
device.start_ranging(i+1)
|
||||
ret[r] = device.get_distance()
|
||||
device.stop_ranging()
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
# vim:sw=4:ts=4:et:
|
|
@ -159,3 +159,6 @@ pyScss
|
|||
# Support for LTR559 light/proximity sensor
|
||||
# ltr559
|
||||
|
||||
# Support for VL53L1X laser ranger/distance sensor
|
||||
# smbus2
|
||||
# vl53l1x
|
||||
|
|
1
setup.py
1
setup.py
|
@ -175,6 +175,7 @@ setup(
|
|||
'Support for GPS': ['gps'],
|
||||
'Support for BME280 environment sensor': ['pimoroni-bme280'],
|
||||
'Support for LTR559 light/proximity sensor': ['ltr559'],
|
||||
'Support for VL53L1X laser ranger/distance sensor': ['smbus2','vl53l1x'],
|
||||
# 'Support for Leap Motion backend': ['git+ssh://git@github.com:BlackLight/leap-sdk-python3.git'],
|
||||
# 'Support for Flic buttons': ['git+https://@github.com/50ButtonsEach/fliclib-linux-hci.git']
|
||||
# 'Support for media subtitles': ['git+https://github.com/agonzalezro/python-opensubtitles#egg=python-opensubtitles']
|
||||
|
|
Loading…
Reference in a new issue