VL53L1X - recieving varying data in constant environment

Dear all,

I am using the VL53L1X sensor (later I want to use two of them) via i2c-Hub on a Raspberry Pi. I enabled i2c and installed the python-library by Pimoroni. Find my code attached below as well as the output. My test-environment is a constant light-situation and there is nothing closer that 20 cm near the sensor.
I did read the manuel carefully, but did not understand, wether I need to do a kind of calibration.
I don’t understand why the output varies so much and is sometimes even negativ…

import time

import VL53L1X

# Es wird die Klasse RPi.GPIO importiert, die die Ansteuerung
# der GPIO Pins des Raspberry Pi ermoeglicht.
import RPi.GPIO as io

io.setmode(io.BCM)
io.setwarnings(False)

# Hie wird ein Objekt tof angelegt mit dem der Zugriff via I2C Bus
# auf den ToF Sensor erfolgt.
tof = VL53L1X.VL53L1X(i2c_bus=1, i2c_address=0x29)

# Der Sensor wird mit dieser Funktion aktiv gesetzt. Dazu
# muss die GPIO Pin Nummer mit uebergeben werden.
def start_sensor(number):
    # Der XSHUT Pin wird HIGH gesetzt um den Sensor zu aktivieren.
    io.setup(number, io.OUT)
    io.output(number, True)
    time.sleep(0.2)

    # Hier erfolgt der Zugriff auf den ToF Sensor
    tof.open() # Initialise the i2c bus and configure the sensor
    # Die Messung am gewaehlten Sensor  wird gestartet.
    # Es gibt drei Modi fuer die Messung:
    # 1 = Short Range,
    # 2 = Medium Range,
    # 3 = Long Range
    tof.start_ranging(1)

# Deise Funktion haelt die Entfernungsmessung an. Die GPIO Pin
# Nummer muss mit uebergeben werden um den ToF Sensor inaktiv zu
# setzen.
def stop_sensor(number):
    # Die Messung am gewaehlten Sensor  wird angehalten.
    tof.stop_ranging()
    # Der XSHUT Pin wird LOW gesetzt um den Sensor zu deaktivieren.
    io.output(number, False)
# Der Sensor wird mit dieser Funktion aktiv gesetzt. Dazu
# muss die GPIO Pin Nummer mit uebergeben werden.
def start_sensor(number):
    # Der XSHUT Pin wird HIGH gesetzt um den Sensor zu aktivieren.
    io.setup(number, io.OUT)
    io.output(number, True)
    time.sleep(0.2)

    # Hier erfolgt der Zugriff auf den ToF Sensor
    tof.open() # Initialise the i2c bus and configure the sensor
    # Die Messung am gewaehlten Sensor  wird gestartet.
    # Es gibt drei Modi fuer die Messung:
    # 1 = Short Range,
    # 2 = Medium Range,
    # 3 = Long Range
    tof.start_ranging(1)

# Deise Funktion haelt die Entfernungsmessung an. Die GPIO Pin
# Nummer muss mit uebergeben werden um den ToF Sensor inaktiv zu
# setzen.
def stop_sensor(number):
    # Die Messung am gewaehlten Sensor  wird angehalten.
    tof.stop_ranging()
    # Der XSHUT Pin wird LOW gesetzt um den Sensor zu deaktivieren.
    io.output(number, False)

# Die Funktion liesst die gemessene Entfernung aus.
def get_distance():
    distance_in_mm = 0
    distance_in_mm = tof.get_distance()
    return distance_in_mm
# Programm Ende
![Tof_output|193x500](upload://whr3FBQDQI2miFxjtt4NzTf4Vez.jpeg) 
import time
import read_VL53L1X as dist


dist.start_sensor(23)

for x in range(30):
        dist_mm= dist.get_distance()
        dist_cm=(dist_mm)/10
        print ("ToF Sensor vorne - GPIO 23: ")
        print ("Entferung in mm:{}".format(dist_mm))

dist.stop_sensor(23)

Output:

pi@raspberrypi:~/Python/Auto $ python display_VL531X.py
VL53L1X Start Ranging Address 0x29

VL53L0X_GetDeviceInfo:
Device Name : VL53L1 cut1.1
Device Type : VL53L1
Device ID :
ProductRevisionMajor : 1
ProductRevisionMinor : 15
ToF Sensor vorne - GPIO 23:
Entferung in mm:0
ToF Sensor vorne - GPIO 23:
Entferung in mm:0
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
ToF Sensor vorne - GPIO 23:
Entferung in mm:-1185
pi@raspberrypi:~/Python/Auto $ python display_VL531X.py
VL53L1X Start Ranging Address 0x29

VL53L0X_GetDeviceInfo:
Device Name : VL53L1 cut1.0
Device Type : VL53L1
Device ID :
ProductRevisionMajor : 1
ProductRevisionMinor : 0
ToF Sensor vorne - GPIO 23:
Entferung in mm:1334
ToF Sensor vorne - GPIO 23:
Entferung in mm:889
ToF Sensor vorne - GPIO 23:
Entferung in mm:1037
ToF Sensor vorne - GPIO 23:
Entferung in mm:1083
ToF Sensor vorne - GPIO 23:
Entferung in mm:283
ToF Sensor vorne - GPIO 23:
Entferung in mm:1196
ToF Sensor vorne - GPIO 23:
Entferung in mm:1007
ToF Sensor vorne - GPIO 23:
Entferung in mm:1038
ToF Sensor vorne - GPIO 23:
Entferung in mm:1135
ToF Sensor vorne - GPIO 23:
Entferung in mm:767
ToF Sensor vorne - GPIO 23:
Entferung in mm:251
ToF Sensor vorne - GPIO 23:
Entferung in mm:1013
ToF Sensor vorne - GPIO 23:
Entferung in mm:1068
ToF Sensor vorne - GPIO 23:
Entferung in mm:56
ToF Sensor vorne - GPIO 23:
Entferung in mm:259
ToF Sensor vorne - GPIO 23:
Entferung in mm:1165
ToF Sensor vorne - GPIO 23:
Entferung in mm:34
ToF Sensor vorne - GPIO 23:
Entferung in mm:1084
ToF Sensor vorne - GPIO 23:
Entferung in mm:754
ToF Sensor vorne - GPIO 23:
Entferung in mm:1169
ToF Sensor vorne - GPIO 23:
Entferung in mm:8
ToF Sensor vorne - GPIO 23:
Entferung in mm:1083
ToF Sensor vorne - GPIO 23:
Entferung in mm:252
ToF Sensor vorne - GPIO 23:
Entferung in mm:1108
ToF Sensor vorne - GPIO 23:
Entferung in mm:322
ToF Sensor vorne - GPIO 23:
Entferung in mm:1076
ToF Sensor vorne - GPIO 23:
Entferung in mm:259
ToF Sensor vorne - GPIO 23:
Entferung in mm:1076
ToF Sensor vorne - GPIO 23:
Entferung in mm:267
ToF Sensor vorne - GPIO 23:
Entferung in mm:393
pi@raspberrypi:~/Python/Auto $

Hello.

We cannot offer you much help with your code, since we did not write the library you are using. However, if you’re using our VL53L1X Time-of-Flight Distance Sensor Carrier board, we can help you check your connections between the Raspberry Pi and VL53L1X sensor board. If you need further assistance with the VL53L1X Python module, you should consider contacting Pimoroni or posting on their forum.

- Amanda