Dieses Projekt stellt eine vereinfachte Python-Schnittstelle auf Raspberry Pi für die ST VL53L0X API (ST Microelectronics) bereit.
Nach dem Muster des cassou/VL53L0X_rasp-Repositorys (https://github.com/cassou/VL53L0X_rasp.git)
Um den i2c-Bus mit anderem Python-Code teilen zu können, der den i2c-Bus verwendet, implementiert diese Bibliothek die VL53L0X-plattformspezifischen i2c-Funktionen durch Rückrufe an die Python-SMBUS-Schnittstelle.
Version 1.0.2:
Unterstützung für den I2C-Multiplexer TCA9548A hinzufügen. Getestet mit https://www.adafruit.com/products/2717 Breakout. (johnbryanmoore)
Python-Beispiel mit TCA9548A-Multiplexer-Unterstützung hinzufügen (Johnbryanmoore)
Pip-Installationsunterstützung hinzufügen (grantramsay)
SMBUS2-Unterstützung hinzufügen (grantramsay)
Pip-Installationsunterstützung für Python2/3 aktualisieren (naisy)
Unterstützung für smbus/smbus2 aktualisieren (naisy)
gcc -fPIC CFLAGS für Build auf Ubuntu hinzufügen (naisy)
Unterstützung für I2C-Adressänderungen hinzufügen (naisy)
Version 1.0.1:
Vereinfachen Sie den Build-Prozess (svanimisetti)
Python-Beispiel hinzufügen, das die Sensorausgabe grafisch darstellt (svanimisetti)
Aktualisieren Sie die Bauanweisungen (svanimisetti, johnbryanmoore)
Version 1.0.0:
Fügen Sie Unterstützung für mehrere Sensoren am selben Bus hinzu, indem Sie den ST-API-Aufruf verwenden, um die Adresse des Geräts zu ändern.
Fügen Sie Unterstützung für eine verbesserte Fehlerprüfung hinzu, z. B. die Erkennung von E/A-Fehlern beim I2C-Zugriff.
Version 0.0.9:
Erstversion und unterstützt nur 1 Sensor mit eingeschränkter Fehlerprüfung.
Hinweise zur Unterstützung mehrerer Sensoren:
Um mehrere Sensoren am selben Bus zu haben, müssen Sie den Shutdown-Pin jedes Sensors mit einzelnen GPIOs verbinden, damit sie einzeln aktiviert und die Adressen eingestellt werden können.
Sowohl die Adafruit- als auch die Pololu-Platine für VL53L0X verfügen über I2C-Pullups auf der Platine. Aus diesem Grund ist die Anzahl der Bretter, die hinzugefügt werden können, auf nur etwa 5 oder 6 begrenzt, bevor der Klimmzug zu stark wird.
Änderungen an der Plattform und dem python_lib-C-Code ermöglichen bis zu 16 Sensoren.
Adressänderungen sind flüchtig. Wenn Sie also den Shutdown-Pin auf einen niedrigen Wert setzen oder die Stromversorgung unterbrechen, wird die Adresse wieder auf den Standardwert 0x29 zurückgesetzt.
Hinweise zur Verwendung des I2C-Multiplexers TCA9548A:
Wenn Sie sich auf GPIOs beschränken, die zum Festlegen einer neuen Adresse für jeden Sensor erforderlich wären, ist die Verwendung eines TCA9548A I2C-Multiplexers eine gute Option, da er die Verwendung von bis zu 8 Sensoren ohne Verwendung von GPIOs ermöglicht.
Der TCA9548A ist auch eine gute Option, wenn mehrere Boards am selben I2C-Bus verwendet werden und die Summe aller I2C-Pullups dazu führen würde, dass der Bus nicht funktioniert.
Theoretisch können Sie mehrere TCA9548A-Multiplexer mit jeweils bis zu 8 Sensoren anschließen, solange jeder TCA9548A eine andere Adresse hat. Dies wurde nicht getestet, sollte aber theoretisch funktionieren.
(Bitte beachten Sie, dass der Autor zwar ein Embedded-Software-Ingenieur ist, dies jedoch ein erster Versuch zur Erweiterung von Python ist und der Autor keineswegs ein Python-Experte ist, daher sind wir für Verbesserungsvorschläge dankbar.)
# Python2pip2 install git+https://github.com/pimoroni/VL53L0X-python.git# Python3pip3 install git+https://github.com/pimoroni/VL53L0X-python.git
Um auf Raspberry Pi zu bauen, stellen Sie zunächst sicher, dass Sie über die richtigen Tools und Entwicklungsbibliotheken verfügen:
sudo apt-get install build-essential python-dev
Verwenden Sie dann die folgenden Befehle, um das Repository zu klonen und zu kompilieren:
cd your_git_directory Git-Klon https://github.com/pimoroni/VL53L0X_rasp_python.gitcd VL53L0X-python machen
Im Python-Verzeichnis befinden sich die folgenden Python-Dateien:
VL53L0X.py – Enthält die Python-Ctypes-Schnittstelle zur ST-Bibliothek
VL53L0X_example.py – Dieses Beispiel greift auf einen einzelnen Sensor mit der Standardadresse zu.
VL53L0X_example_livegraph.py – In diesem Beispiel werden die Entfernungsdaten eines einzelnen Sensors in einem Live-Diagramm dargestellt. Für dieses Beispiel ist matplotlib erforderlich. Verwenden Sie sudo pip install matplotlib
um matplotlib zu installieren.
VL53L0X_multi_example.py – In diesem Beispiel wird auf zwei Sensoren zugegriffen, wobei der erste auf die Adresse 0x2B und der zweite auf die Adresse 0x2D eingestellt wird. Zur Steuerung der Sensoraktivierung werden die GPIOs 20 und 16 verwendet, die mit den Shutdown-Pins der beiden Sensoren verbunden sind.
VL53L0X_TCA9548A_example.py – In diesem Beispiel wird über einen TCA9548A I2C-Multiplexer auf zwei Sensoren zugegriffen, wobei der erste an Bus 1 und der zweite an Bus 2 des TCA9548A angeschlossen ist.