Este documento dá indicações em como usar o sensor de distancia laser VL53L0X (com o endereço x29) usando o python no Banana Pi M1.
Ligações ao VL53L0X
Ligue o VL53L0X ao Banana Pi conforme os pinos exibidos na imagem abaixo e de acordo com esquema que se lhe segue:

- bpi 3.3V > vl53 VCC
- bpi GND > vl53 GND
- bpi SCL > vl53 SCL
- bpi SDA > vl53 SDA
Instalação dos pacotes necessários e eventuais configurações
Se o i2c não estiver configurado nem o pacote de ferramentas i2c estiver instalado então deve proceder à sua instalação e eventual configuração.
Verifique que existem bus i2c com o seguinte comando:
ls -lisa /dev/i2c*
Instale o pacote de ferramentas i2c
apt install i2c-tools
Verifique os bus i2c disponíveis com o comando:
i2cdetect -l
Seguidamente experimentar cada um dos bus disponíveis (indicados no ecran conforme imagem abaixo) e verificar se o endereço do VL53L0X é exibido com o seguinte comando (trocar o 2, pelo numero do bus a testar):
i2cdetect -y 2
Se o VL53L0X for detectado será exibido o endereço 29 na tabela gerada pelo comando (conforme imagem abaixo).
Na imagem acima também está exibido o endereço do giroscópio e acelerometro MPU6050, que também se encontra ligado no mesmo bus i2c.
Se existir algum problema e para maiores informações sobre esta parte da configuração do Banana Pi consultar o artigo I2C no Banana PI.
Instalação dos pacotes para exploração i2c em python e python3
A instalação dos pacotes necessários para a exploração do i2c em python no debian 9 é efectuada com os seguintes comandos:
apt install build-essential libssl-dev libffi-dev python3-dev python3-smbus apt install python-dev python-smbus
A instalação do Python3 Virtual Environment é opcional, e é efectuada com o seguinte comando:
apt install -y python3-venv
O ambiente virtual permite experimentar vários projectos usando diversas configurações do python.
Não consegui colocar a funcionar o exemplo de comunicação com o MPU6050 dentro de um ambiente virtual.
Programas de exploração do VL53L0X em Python
Os programas de exploração do VL53L0X em Python que encontrei na net e consegui por a funcionar com o banana pi estão disponíveis no github (primeiro endereço das fontes no rodapé).
Para colocar a funcionar é necessário modificar a linha que especifica o bus i2c a usar. No caso da minha configuração o 2.
Para o efeito é necessário modificar a linha 35 do ficheiro python/VL53L0X.py, de:
i2cbus = smbus.SMBus(1)
para:
i2cbus = smbus.SMBus(2)
Nota importante: os programas em python são exigentes com a indentação.
Conforme indicado no readme, a pasta python contem vários programas com exemplos de exploração do VL53L0X.
VL53L0X.py – é a biblioteca usada
VL53L0X_example.py – Exemplo da exploração de um único sensor, no seu endereço pré-definido.
VL53L0X_example_livegraph.py – Exemplo da exploração visual (plot das distancias) de um único sensor, no seu endereço pré-definido . Este exemplo requer a matplotlib. Caso necessário instalar com: pip install matplotlib.
VL53L0X_multi_example.py – Exemplo da exploração de dois sensores. Definindo para o primeiro o endereço 0x2B e para o segundo o 0x2D. Para o efeito é necessário usar os GPIO(rpi) 20 e 16, ligados aos pinos de shutdown para controlar a activação do sensor.
Existe ainda outro exemplo com a utilização de Multiplexer I2C: TCA9548A.
Apenas experimentei o exemplo para um unico vl53L0x, pois o gpio do Banana Pi não é exactamente igual ao do Raspberry Pi e de momento decidi não investigar mais o assunto.
VL53L0X Banana Pi Python – Programa 1
Exemplo de exploração de um unico VL53L0X em Python no Banana Pi
VL53L0X_example.py
Fontes:
https://github.com/johnbryanmoore/VL53L0X_rasp_python