VL53L1X & a Raspberry Pico
update: as you'll see here (reddit link) someone has ported the CircuitPython driver to MicroPython for some reason I never found it when I started this but his github driver can be found here: https://github.com/truckershitch/micropython-vl53l0x
I've had an idea for checking the height of a equipment during its movement for some time now and thought the small form factor of the pico + the VL53L1X sensor would be an ideal candidate. So after much searching and trial/error it seemed it wasnt possible until i stumbled across a few threads in the micro-python forum and the openmv github site and i now have a working setup;
The sensor is wired as follows;
| GP num | pin num | |
| SDA | GP4 | pin 6 |
| SCL | GP5 | pin 7 |
| GND | GND | pin 8 |
| +ve | 3v3out | pin 36 |
In order to get it working you'll need to copy the vl53l1x.py file from;
then edit it and replace
- search & replace all
pybwithmachine - search & replace all
delaywithlightsleep
Or you can download the version from my github page https://github.com/drakxtwo/vl53l1x_pico/tree/main
You can test to see if a device is found by;
from machine import I2C from vl53l1x import VL53L1X import time sda=machine.Pin(4) scl=machine.Pin(5) i2c=machine.I2C(0,sda=sda,scl=scl,freq=400000) print('scanning bus..') devices = i2c.scan() if len(devices) == 0: print("No i2c device !") else: print('i2c devices found:',len(devices)) for device in devices: print("Decimal address: ",device," | Hexa address: ",hex(device))
Assuming we can found a sensor then the code to read from it is;
from machine import I2C from vl53l1x import VL53L1X import time i2c = I2C(0) distance = VL53L1X(i2c) while True: print("range: mm ", distance.read()) time.sleep_ms(50)
with output as follows;
MicroPython v1.14 on 2021-02-05; Raspberry Pi Pico with RP2040 Type "help()" for more information. >>> %Run -c $EDITOR_CONTENT range: mm 174 range: mm 174 range: mm 172 range: mm 172 range: mm 172 range: mm 172
Thats as far as i have got, the original pimoroni library allowed for multiplexing the sensors, changing range etc i dont know if thats possible, i'm pleased i got this far!