Entfernung messen mit einem VL53L0X-Laser (6-poliges Modul) und TM1637-Display für Arduino

Entfernung messen mit einem VL53L0X-Laser (6-poliges Modul) und TM1637-Display für Arduino


In diesem Tutorial lernen wir, wie man Entfernungen mit dem VL53L0X-Laser-Entfernungssensor misst und die Messwerte auf einem TM1637-7-Segment-Display anzeigt. Dieses Projekt kombiniert beide Komponenten, um ein einfaches, aber effektives Entfernungsmessgerät zu erstellen. Der VL53L0X verwendet Lasertechnologie, um genaue Distanzmessungen zu liefern, während das TM1637-Display diese Messwerte in einem benutzerfreundlichen Format darstellt.

VL53L0X 200cm range sensor
TM1637 4 digit display module

Wir besprechen die benötigte Hardware, die Verdrahtungsanleitungen und den Code, die nötig sind, um alles zum Laufen zu bringen. Am Ende dieses Tutorials haben Sie ein funktionierendes Distanzmessgerät, das in verschiedenen Anwendungen eingesetzt werden kann. Für eine visuelle Anleitung sollten Sie sich das Video ansehen (im Video bei 00:00).

Hardware erklärt

Die Hauptkomponenten für dieses Projekt sind der VL53L0X-Laser-Entfernungssensor und das TM1637-Displaymodul. Der VL53L0X ist ein Time-of-Flight-Sensor, der die Entfernung zu einem Objekt misst, indem er einen Laserstrahl aussendet und die Zeit berechnet, die die Reflexion für die Rückkehr benötigt. Er arbeitet im Spannungsbereich von 2.6V bis 3.5V, kann aber dank eines integrierten Spannungsreglers auch mit 5V betrieben werden.

Der TM1637 ist ein Display-Treiber, der ein 7‑Segment‑LED‑Display steuert. Er kommuniziert über eine einfache 2‑Draht‑Schnittstelle (CLK und DIO), was die Verbindung zu einem Arduino erleichtert. Das Display kann numerische Werte anzeigen und eignet sich hervorragend zur Visualisierung der Entfernungsmessungen des VL53L0X‑Sensors.

Details zum Datenblatt

HerstellerSTMicroelectronics
TeilenummerVL53L0X
Logik-/I/O-Spannung2.6 V - 3.5 V
Versorgungsspannung2.6 V - 5 V
Betriebstemperatur-20 °C bis 70 °C
Messbereich30 mm bis 2000 mm
I2C-Frequenz400 kHz
Timeout-Einstellung500 ms
Paket6-poliges Modul

  • Sorgen Sie für eine ordnungsgemäße Stromversorgung (5V ist akzeptabel).
  • Schließen Sie den XSHUT-Pin über einen Pull-up-Widerstand an, um Leckströme zu vermeiden.
  • Verwenden Sie I2C für die Kommunikation; schließen Sie SDA und SCL entsprechend an.
  • Behandle Timeouts im Code, um unerwartetes Verhalten zu vermeiden.
  • Beachten Sie den Betriebstemperaturbereich, um die Genauigkeit sicherzustellen.

Verdrahtungsanleitung

Arduino wiring for VL53L0X with TM1637 4 digit dispaly
Arduino wiring for VL53L0X with TM1637 4 digit dispaly

Um das VL53L0X und das TM1637-Display zu verkabeln, schließen Sie zunächst den VCC-Pin des VL53L0X an den 5V-Pin des Arduino und den GND-Pin an einen GND-Pin des Arduino an. Verbinden Sie anschließend den SDA-Pin des VL53L0X mit dem A4-Pin des Arduino, der typischerweise für die I2C-Datenkommunikation verwendet wird. Der SCL-Pin sollte mit dem A5-Pin des Arduino verbunden werden, der für das Taktsignal verwendet wird.

Für das TM1637-Display verbinden Sie den CLK-Pin mit dem digitalen Pin 2 am Arduino und den DIO-Pin mit dem digitalen Pin 3. Verbinden Sie schließlich den XSHUT-Pin des VL53L0X mit dem digitalen Pin 12 am Arduino. Stellen Sie sicher, dass alle unbenutzten Pins, wie z. B. GPIO1 am VL53L0X, unverbunden bleiben. Mit dieser Konfiguration kann der Arduino effektiv sowohl mit dem Sensor als auch mit dem Display kommunizieren.

Codebeispiele und Schritt-für-Schritt-Anleitung

Der Code initialisiert den Sensor und das Display, richtet die I2C‑Kommunikation ein und liest kontinuierlich die Abstandsmessungen. Nachfolgend ein Ausschnitt, der die setup-Funktion zeigt, in der die Pins konfiguriert und der Sensor initialisiert werden:

void setup() {
  pinMode(12, INPUT_PULLUP); // set pin 12 for input
  digitalWrite(12, HIGH); // set pin 12 high (5V)
  Serial.begin(9600);
  Wire.begin(); // I2C communication initialized
  sensor.init(); // distance sensor is initialized
  sensor.setTimeout(500); // time out is set
  sensor.startContinuous(); // type of measurement is set
}

In dieser Setup-Funktion wird der Pin für XSHUT als Eingang mit einem Pull-up-Widerstand konfiguriert, und der Sensor wird für kontinuierliche Entfernungsmessungen initialisiert. Der serielle Monitor wird ebenfalls eingerichtet, um die Entfernungswerte anzuzeigen.

Als Nächstes liest die Hauptschleife die Entfernung und aktualisiert die Anzeige. Hier ist ein fokussierter Ausschnitt aus der loop-Funktion:

void loop() {
  int distance = sensor.readRangeContinuousMillimeters(); // read the distance in mm
  display.setSegments(clearLED); // remove previous value from LED display
  display.showNumberDec(distance, false, 4, 0); // display the distance
  Serial.print("Distance: ");
  Serial.print(distance); // print distance on serial monitor
}

Diese Schleife liest kontinuierlich die Entfernung vom Sensor und aktualisiert das TM1637-Display mit der neuesten Messung. Sie gibt die Entfernung außerdem zu Debugging-Zwecken auf dem seriellen Monitor aus. Wenn Sie den vollständigen Code sehen möchten, wird er weiter unten im Artikel geladen.

Demonstration / Was Sie erwartet

Nachdem Sie die Einrichtung abgeschlossen und den Code hochgeladen haben, sollten Sie die vom VL53L0X gemessene Entfernung auf dem TM1637 sehen. Wenn Sie ein Objekt näher an den Sensor heran- oder weiter wegbewegen, ändert sich der angezeigte Wert entsprechend. Falls Sie unerwartete Messwerte erhalten, stellen Sie sicher, dass der Sensor nicht blockiert ist und die Oberfläche des Objekts für die Laserreflexion geeignet ist (im Video bei 09:30).

Häufige Fallstricke sind vertauschte Verdrahtung oder das nicht ordnungsgemäße Initialisieren des Sensors, was zu Timeout-Fehlern führen kann. Stellen Sie sicher, dass die richtigen Pins angeschlossen sind und der Sensor ausreichend mit Strom versorgt wird, um genaue Distanzmessungen zu gewährleisten.

Bilder

VL53L0X 200cm range sensor
VL53L0X 200cm range sensor
TM1637 4 digit display module
TM1637 4 digit display module
Arduino wiring for VL53L0X with TM1637 4 digit dispaly
Arduino wiring for VL53L0X with TM1637 4 digit dispaly
104-Measure distance with a Laser VL53L0X 6-pin module and a TM1637 LED display for Arduino
Sprache: C++
Kopiert!

Ressourcen & Referenzen

Noch keine Ressourcen vorhanden.

Dateien📁

Datenblatt (pdf)

Fritzing-Datei

|||Benutzerhandbuch

Andere Dateien