VL53L0X Time-of-Flight Laser Abstandssensor - Produktvorstellung

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

 

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();
  }
}

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert