VL53L0X Time-of-Flight Laser Abstandssensor - Produktvorstellung - AZ-Delivery

Unser AZ-Delivery Time-of-Flight (ToF) Laser-Distanzsensor kann in vielen Anwendungen eingesetzt werden. Heute zeigen wir Ihnen eines der spannenden Projekte, in denen Sie ihn einsetzen können. Unser TOF-Sensor kann im Normalmodus Entfernungen von bis zu 1 m mit einer Auflösung von 1 mm messen. Im Langstreckenmodus kann der Sensor Entfernungen von bis zu 2 m melden, allerdings mit geringerer Genauigkeit. Wir haben den ToF-Sensor zusammen mit einem ESP32, einem OLED-Display und einem Buck-Converter in einem 3D-gedruckten Gehäuse untergebracht und erhalten ein praktisches Gadget, das uns die Entfernung auf seinem 0,91-Zoll-Bildschirm anzeigt.

! Achtung: Wenn das Video bei Ihnen nicht angezeigt wird, sollten Sie Ihre Cookie Einstellungen überprüfen. Sie müssen alle Cookies akzeptieren, damit das Video sichtbar ist!

Hier finden Sie den Abstandssensor:

VL53L0X Time-of-Flight (ToF) Laser Abstandssensor

Unter diesen Links finden Sie außerdem noch die Dateien für den 3D-Druck:
Case und Deckel

 

Verdrahtung:

 

Code:

 

/*
    ___ _____        ____       ___                      
   /   /__  /       / __ \___  / (_)   _____  _______  __
  / /| | / / ______/ / / / _ \/ / / | / / _ \/ ___/ / / /
 / ___ |/ /_/_____/ /_/ /  __/ / /| |/ /  __/ /  / /_/ / 
/_/  |_/____/    /_____/\___/_/_/ |___/\___/_/   \__, /  
                                                /____/   
  Produkt, Datenblatt und Pinout unter:
  https://www.az-delivery.de/

  Projekt:  DIY Abstandssensor mit ToF Sensor
  Datum:    11/2022

*/
#include <Arduino.h>
#include <Wire.h>             // for the ToF Sensor
#include <VL53L0X.h>          // for the ToF Sensor
#include <Adafruit_GFX.h>     // for the oled Display
#include <Adafruit_SSD1306.h> // for the oled Display

int btn = 16;

// FoT Sensor
VL53L0X sensor;
unsigned int measurement;

// Oled Display
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

void showMeasurement()
{
  measurement = sensor.readRangeSingleMillimeters();
  display.clearDisplay();

  if (measurement >= 10 && measurement < 100)
    display.setCursor(36, 0);

  else if (measurement >= 100 && measurement < 1000)
    display.setCursor(18, 0);

  else
    display.setCursor(0, 0);

  display.print(measurement);
  display.setCursor(92, 0);
  display.print("mm");
  display.display();
}

void setup()
{
  Serial.begin(115200);
  pinMode(btn, INPUT);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.setTextSize(3);
  display.setTextColor(WHITE);
  display.clearDisplay();
  display.display();
  Wire.begin();

  sensor.setTimeout(500);
  if (!sensor.init())
  {
    Serial.println("Failed to detect and initialize sensor!");
    while (1)
    {
    }
  }
  sensor.setMeasurementTimingBudget(200000); // increase timing budget to 200 ms for more accuracy
}

void loop()
{
  if (digitalRead(btn) == HIGH)
  {
    showMeasurement();
  }
}

5 Kommentare

Kurt K

Kurt K

Kannte den Sensor noch nicht und habe mir gleich ein paar davon geholt. Danke für die Projektidee, habe das Beispiel noch um ein paar weitere Funktionen ergänzt.

Rainer Hoffmann

Rainer Hoffmann

@Willem, @Tobias Peggau
Ich muss korrigieren. Merkwürdige Geschichte: wenn man in Cura 5.2.1 die stl-Dateien für den Drucker “Artillery Genius Pro” öffnet, dann werden die Modelle richtig dargestellt und Cura gibt die Meldung aus: “Automatische Skalierung des Modells auf 100000 %% der Originalgröße”. Öffnet man die Dateien in Cura für den Drucker “FLSUN Q5” sieht man nichts und man kann auch nichts manuell skalieren. Anscheinend ein bug in Cura.

Rainer Hoffmann

Rainer Hoffmann

@Willem, @Tobias Peggau
Die Druckvorlagen sind in der vorliegenden Form von Cura nicht zu verarbeiten. Vielleicht kann es ja ein anderer Slicer. Ich habe mal folgendes gemacht:
Datei in “Fusion 360” laden und dann “Als Netz speichern”, Format “STL (ASCII)” (Fusion wandelt die Daten von binär nach ASCII um).
Neu erstellte Datei laden, “3D-Drucken”, als Format “STL (ASCII)” wählen und Häkchen bei “An 3D-Druck-Dienstprogramm senden” setzen (nicht erneut speichern). Wenn das Dienstprogramm Cura ist wird ein Modell angezeigt, welches man dann noch mit dem Faktor 10 skalieren muss, um ein realistisches Modell zu erhalten. Man kann das Modell slicen und drucken. Ob die Maße dann allerdings stimmen habe ich nicht überprüft. Also alles ganz einfach ;-)

Willem

Willem

Ein sehr schönes Projekt, wo kann ich das 3D gedruckte Gehäuse finden. Ich kann keinen Link dazu finden

Danke im voraus

Robert Kranich

Robert Kranich

Ein ganz großartiges Projekt, danke!

Kommentar hinterlassen

Alle Kommentare werden von einem Moderator vor der Veröffentlichung überprüft

Empfohlene Blogbeiträge

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery