Der VL53L0X misst präzise Entfernungen bis zu zwei Metern. Das macht ihn zum passenden Kandidaten für RasPi-Projekte.
Mit einer Größe von 4,4 x 2,4 Millimetern lässt sich der VL53L0X nicht von Bastlern direkt auf eine Platine löten. Im Handel gibt es aber Module, auf denen der Sensor bereits mit allen nötigen Bausteinen für die Peripherie verlötet ist. Allerdings kommen solche Platinen bei Amazon nicht gerade günstig.
Direkt aus China, etwa über Alienxpress.com, beziehen Sie das Modul erheblich günstiger, wenn auch bei längerer Lieferzeit. Falls Sie diesen Weg wählen, achten Sie beim Bestellen auf einen Warenwert unter 22 Euro: So bleibt die Bestellung zoll- und steuerfrei.
Der Bereich der Betriebsspannung des VL53L0X reicht von 2,6 bis 3,5 Volt, seine Stromaufnahme liegt bei maximal 19 Milliampere. Im Standby-Modus benötigt der Sensor nur 5 Mikroampere. Das ermöglicht es, den Baustein am 3,3-Volt-Anschluss der GPIO zu betreiben, der eine Leistung bis maximal 50 Milliampere verträgt.
Die Reichweite des VL53L0X beträgt zwei Meter, bei einer Auflösung von einem Millimeter. Der Messbereich beginnt rund vier Zentimeter vor dem Sensor. Weiterführende Informationen finden Sie im Datenblatt des VL53L0X, das mit seinen 40 Seiten recht umfangreich und detailliert ausfällt.
Testaufbau
Für einen Testaufbau verbinden Sie den Sensor entsprechend der Tabelle “Verbindungen” mit dem Raspberry Pi. Um die Distanz zu einem Gegenstand zu messen, kam im Test für diesen Artikel ein Lineal zum Einsatz. Der Gegenstand sollte optimalerweise möglichst hell sein und gut reflektieren. Abbildung 1 zeigt den Aufbau.
Verbindungen
|
GPIO |
Pin |
VL53L0X-Modul |
|---|---|---|
|
1 |
+3,3 Volt |
VIN |
|
3 |
SDA |
SDA |
|
5 |
SCL |
SCL |
|
9 |
0 Volt |
GND |
Der Sensor weist eine gewisse Streuung auf. Wenn Sie ihn auf dem Tisch testen, kommt es vor, dass er die Distanz bis zur Tischplatte misst. Achten Sie daher darauf, dass er bei den Versuchen etwas nach oben zeigt.
Alternativ messen Sie als Test einfach die Distanz Richtung Decke und nehmen ein Stück Papier als Objekt auf dem Weg dazwischen. In Bezug auf die Software kommen die Programme aus Teil 18 dieser Reihe zum Einsatz.
Um zu prüfen, ob Sie alle Verbindungen korrekt hergestellt haben, verwenden Sie das Tool I2cdetect (Listing 1). Der Sensor sollte sich unter der Adresse 0x29 melden. Um sicherzustellen, dass das I2C-Interface des VL53L0X einwandfrei arbeitet, setzen Sie die Kommandos aus Listing 2 ab. Wenn Sie die dort gezeigten Antworten sehen, arbeitet der Sensor einwandfrei.
Listing 1
$ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- 29 -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Listing 2
$ i2cget -y 1 0x29 0xC0 0xee $ i2cget -y 1 0x29 0xC1 0xaa $ i2cget -y 1 0x29 0xC2 0x10
Programmierschnittstelle
Der Hersteller stellt für den VL53L0X eine API bereit. Das ist der Grund, warum sich im Datenblatt keinerlei Informationen über die internen Register des Sensors finden. Auf Github existiert eine Portierung der API für den Raspberry Pi [2]. Deren Verwendung setzt jedoch einige Vorarbeiten auf dem Mini-Rechner voraus.
Als Erstes laden Sie die Original-API vom Hersteller [3] herunter und speichern sie in ein Verzeichnis auf dem RasPi, im unserem Beispiel heißt es ~/VL53L0X/. Wechseln Sie in den Ordner und entpacken Sie den Download über die Eingabe von unzip en.STSW-IMG005.zip in einem Terminal.
Als Nächstes laden Sie die API-Portierung in dasselbe Verzeichnis herunter und entpacken sie. Nun wechseln Sie in den Unterordner mit dem Quellcode der API-Portierung und nutzen dort das Makefile zum Bauen der Software und der Programme, die als Beispiel dienen. Listing 3 fasst alle Kommandos für die oben genannten Schritte zusammen.







