Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Arduino Lektion #103: Laser Distanz Sensor VL53LXX-V2

Posted on 3. Februar 20207. März 2024 by Stefan Draeger

In diesem Beitrag möchte ich den Laser Distanz Sensor VL53LXX-V2 vorstellen. Dieser Sensor kann eine Distanz von bis zu 4 m messen und arbeitet dabei mit einer Abtastgeschwindigkeit von 50Hz.

Laser Distanz Sensor – VL53LXX-V2

  • Bezug
    • Lieferumfang
  • Technische Daten des VL53LXX-V2
  • Aufbau & Schaltung
    • Aufbau
    • Schaltung
  • Quellcode
    • Bibliothek
    • Beispiel – Ausgabe der Daten auf dem seriellen Monitor
    • Video
  • Vergleich mit einem Ultraschallsensor HC-SR04
  • Fazit

Bezug

Den Laser Distanz Sensor kann man über ebay.de für ca. 8 € inkl. Versandkosten* beziehen oder deutlich günstiger über aliexpress.com (4,19 $ inkl. Versandkosten).

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

Ich habe den Sensor über aliexpress.com bestellt und habe ca. 5 Wochen auf diesen Sensor warten dürfen. Dafür aber weniger als die Hälfte bezahlt.

Lieferumfang

Der Sensor wird in einer kleinen Antistatik Tüte geliefert und enthält neben dem Sensor noch eine Stiftleiste.

Lieferumfang - Laser Distanz Sensor VL53LXX-V2
Lieferumfang – Laser Distanz Sensor VL53LXX-V2

Technische Daten des VL53LXX-V2

  • Betriebsspannung 3.3V bis 5.5V
  • Messbereich
    • Minimal 40 mm
    • Maximal 4 m
    • Messbereichsgenauigkeit ±5 %
  • Wellenlänge des Lasers 940 nm
  • Betriebstemperatur -20 °C bis 80 °C
  • Abmessungen
    • ohne Löcher 15 mm x 10 mm
    • mit Löcher 25 mm x 10 mm
    • Durchmesser der Löcher 3 mm

Aufbau & Schaltung

Bevor der Sensor verwendet werden kann, muss dieser mit der Stiftleiste verbunden werden. Um die Stiftleiste korrekt (also im 90° Winkel) an den Sensor zu löten habe ich zusätzlich ein 170 Pin Breadboard und die überzähligen Stifte verwendet.

anlöten der Stiftleiste an den Laser Distanz Sensor
anlöten der Stiftleiste an den Laser Distanz Sensor

Aufbau

Der Sensor verfügt über 6 Pins welche wie folgt an den Arduino UNO angeschlossen werden.

VL53LXX-V2Arduino UNO
VIN5V
GNDGND
SCLanaloger Pin A5
SDAanaloger Pin A4
GPIO01 
XSHUT 

Die Pins GPIO01 & XSHUT werden in meinen Beispielen zunächst nicht verwendet.

Schaltung

Aufbau der Schaltung - Laser Distanz Sensor am Arduino UNO
Aufbau der Schaltung – Laser Distanz Sensor am Arduino UNO

Quellcode

Bibliothek

Bibliotheken erleichtern einem Programmierer die Arbeiten enorm, besonders wenn man wie wir mit Hardware arbeitet und so die einzelnen Adressen und Speicherbereiche be-/verarbeiten muss. Daher gibt es auch für diesen Sensor eine Bibliothek, welche wir uns in die Entwicklungsumgebung (in meinem Fall wie immer die Arduino IDE) einbinden.

Den Bibliotheksverwalter erreicht man über das Hauptmenü „Sketch“ > „Bibliothek einbinden“ > „Bibliotheken verwalten…“. In diesem Dialog wird zunächst nach der Bibiothek mit dem Suchbegriff „vl53l“ (1) gesucht. Ich verwende die Bibliothek von Sparkfun und wähle den zweiten Eintrag aus den Suchergebnissen (2) nach dem betätigen der Schaltfläche „Installieren“ kann (nach Abschluss) der Dialog geschlossen werden (3).

Installieren der Bibliothek für das verwenden des Laser Distanz Sensors
Installieren der Bibliothek für das verwenden des Laser Distanz Sensors

Beispiel – Ausgabe der Daten auf dem seriellen Monitor

Der Bibliothek liegt ein Beispiel bei, wie man diesen Sensor in der Arduino IDE programmiert. Das werde ich hier nutzen und etwas umschreiben und kommentieren.

#include "Adafruit_VL53L0X.h"

Adafruit_VL53L0X lox = Adafruit_VL53L0X();

//Um die Debug Ausgaben zu aktivieren
//muss dieser Wert auf "true" gesetzt werden.
#define debugSensor false

//Es werden 10 Messungen durchgeführt.
const int MAX_DATA = 10;
//der Index der aktuellen Messung
int readDataIndex = -1;
//das Array für die Daten
int data[MAX_DATA] = {};

//zählen der fehlerhaften Messungen
int failureMeasures = 0;

void setup() {
  //begin der seriellen Kommunikation mit 115200 baud
  Serial.begin(115200);

  //Warten auf den Seriellen Port
  while (! Serial) {
    delay(1);
  }

  //Wenn der Serielle Port bereit ist dann eine Ausgabe auf diesen tätigen 
  //und prüfen ob der Sensor korrekt angeschlossen ist (ob dieser Ansprechbar ist)
  Serial.println("GY-VL53L0X test");
  if (!lox.begin()) {
    Serial.println("Fehler beim lesen des Sensors!");
    while(1); //eine Endlos Schleife 
  }
}

void loop() {
  //instanziieren des Sensors zum empfangen von Daten
  VL53L0X_RangingMeasurementData_t measure;
  lox.rangingTest(&measure, debugSensor);

  //lesen des Sensor Status
  //der Sensor kann verschiedene Status annehmen, 
  //jedoch interessiert für uns nur der Wert "4"
  int sensorStatus = measure.RangeStatus;
  //Wenn Daten empfangen wurden dann...
  if (sensorStatus != VL53L0X_DEVICEERROR_MSRCNOTARGET) { 
    //den Zähler für das Array um eins erhöhen
    readDataIndex++;
    //zuweisen des Wertes in das Array
    data[readDataIndex] = measure.RangeMilliMeter;

    //Wenn das Array "fertig" befüllt ist, dann...
    if(readDataIndex == MAX_DATA){
      //eine Variable für die Berechnung des Durchschnittswertes
      int averageData = 0;
      //über das Array itereieren und die Daten zusammenzählen
      for(int i=0;i<MAX_DATA;i++){
        averageData = averageData+data[i];
      }
      //um den Durchschnittswert zu erhalten muss man die Zahl
      //durch die Anzahl der Werte teilen
      averageData = averageData / MAX_DATA;
      //Ausgeben des berechnenen Durchschnitts für die Distanz
      Serial.print("Distanz: ");
      Serial.print(averageData);  
      Serial.println("mm");  
      readDataIndex = -1;
      failureMeasures =0;
    }else if(debugSensor && readDataIndex % 2 == 0){
      Serial.print("X");
    }
  } else if(debugSensor && sensorStatus != VL53L0X_DEVICEERROR_NONE) {
    Serial.println(" Signal konnte nicht gelesen / verarbeitet werden! ");
  } else {
    if(debugSensor && ++failureMeasures % 2==0){
      Serial.print("-");
    }    
  }

  if(debugSensor && (failureMeasures + readDataIndex)> MAX_DATA){
      Serial.println("");
  }
  //eine Pause von 5ms einlegen
  delay(5);
}

Video

Test des Laser Distanzsensors GY-VL53L0XV2
Dieses Video auf YouTube ansehen.

Vergleich mit einem Ultraschallsensor HC-SR04

Den Ultraschallsensor HC-SR04 habe ich bereits im Beitrag Arduino Lektion 9: Ultraschall Modul HC-SR04 vorgestellt. Da beide Sensoren (GY-VL53L0XV2 & HC-SR04) den Abstand von Objekten messen können, möchte ich kurz beide Sensoren testen.

Man kann sehr gut erkennen, dass der Ultraschallsensor den Abstand nicht so genau misst wie der Laser Distanzsensor.

Fazit

Der Laser Distanzsensor GY-VL53L0XV2 ist günstig in der Anschaffung und durch das einfache Einbinden einer Bibliothek auch genauso einfach zu programmieren. Jedoch ist dieser nicht ganz so genau und hatte in meinem Test eine Abweichung von bis zu mehreren Zentimetern.

6 thoughts on “Arduino Lektion #103: Laser Distanz Sensor VL53LXX-V2”

  1. Frank Carius sagt:
    3. Oktober 2020 um 13:18 Uhr

    Netter Artikel. Habe den VL53lxx auch grade beim Stöbern entdeckt. Auch der vergleich zum HC-SR04 hilft. Aber könntest du den Test noch mal mit größeren Abständen machen? Der TOF-Sensor soll ja „bis zu 4m“ messen können.
    Ich denke da an Belegtanzeigen von Parkbuchten o.a. Was passiert, wenn das „Hindernis“ nicht genau im rechten Winkel zur Messtrecke steht. ist dann die Erkennung auch noch OK?
    Dann wäre der Blog-Artikel perfekt 🙂

    Antworten
  2. Allan Høiberg sagt:
    21. Juni 2021 um 18:00 Uhr

    Interessanter Artikel. Ich habe gerade ein Paar dieser Sensoren erhalten und will auch damit experimentieren.

    Als erstes bemerke ich jedoch das auf der Platine VL53LXX steht, und nicht L1X/L0X wie beim Verkäufer auf Aliexpress. Kann das wohl mit der Ungenauigkeit zu tun haben?

    Antworten
  3. Karsten sagt:
    24. August 2022 um 09:15 Uhr

    Ich habe Fragezeichen.
    Im Video ist zu sehen, wie weit die Pappwand weg ist und der Abstand zum Sensor stimmt doch. Dagegen ist die Ausgabe vom Ultraschallsensor doch falsch.
    Das passt nicht zueinander.

    Antworten
    1. Stefan Draeger sagt:
      24. August 2022 um 09:40 Uhr

      Hi Karsten,

      in einem anderen Beitrag habe ich das Problem mit dem Laserdistanzsensor gefunden, je nachdem wie hell bzw. dunkel die Oberfläche ist umso genauer ist dieser Sensor.

      Gruß,

      Stefan Draeger

      Antworten
  4. Herbert Bäumchen sagt:
    29. Februar 2024 um 11:45 Uhr

    Hallo Stefan,

    danke für Deinen lehrreichen Artikel.
    Ich habe mittlerweile zwei dieser Sensoren bei einem RC- Fahrzeug für die Hinderniserkennung vorn und hinten im Einsatz. In Abhängigkeit von der Hindernisentfernung wird ein entsprechender Ton ausgegeben.
    Ab und zu machen sich die Sensoren jedoch scheinbar ’selbständig‘, obwohl keine Änderung im ‚Sichtfeld‘ vorliegt: Dann gibt es einen kurzes Piepsen, obwohl kein Hindernis vorhanden ist.
    Hast Du eine Idee dazu, wie man das verhindern kann?
    Ich sag‘ schon mal DANKE!

    Antworten
  5. Pingback: Projekt: Fotobox - Technik Blog

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}