ESP32 a senzor vzdálenost VL53L0X

05.04.2025 Arduino #esp32 #lidar #vl53l0x

VL53L0X je pokročilý senzor vzdálenosti typu Time-of-Flight, který nabízí přesná laserová měření v rozsahu od 30 mm do 2 000 mm. Vyznačuje se nízkou spotřebou energie, kompaktními rozměry a rychlou dobou odezvy, díky čemuž je ideální pro integraci do různých aplikací IoT a robotiky. Komunikační protokol I2C zjednodušuje jeho použití s ​​mikrokontroléry a SBC jako Arduino a Raspberry Pi.


O snímači VL53L0X

Klíčové vlastnosti

  • Rozšířený rozsah měření – přesně detekuje vzdálenosti až do 2 metrů .
  • Laserová technologie Time-of-Flight Technology – Zajišťuje rychlé a přesné měření .
  • Komunikace I²C – Bezproblémová integrace s  ESP32 , Arduino a dalšími mikrokontroléry .
  • Nízká spotřeba a kompaktní design – Ideální pro přenosné a bateriově napájené aplikace .

Díky pokročilým schopnostem snímání a efektivnímu výkonu je VL53L0X vynikající volbou pro vestavěné systémy vyžadující přesné měření vzdálenosti.

Technické specifikace snímače VL53L0X

Níže si můžete prohlédnout technické specifikace snímače doby letu VL53L0X. Senzor je kompatibilní s ESP32 a pracuje v rozsahu napětí vhodném pro mikrokontroléry. Přesné podrobnosti o jeho funkcích, specifikacích a použití naleznete v datovém listu senzoru.

  • Typ : vzdálenost
  • Protokol : I2C
  • Rozsah měření : 30 mm až 2000 mm
  • Přesnost : ±3% za ideálních podmínekRozhraní : I2C
  • Provozní napětí : 2,6V až 5,5V (typické 3,3V nebo 5V)
  • Spotřeba energie : <20mA během provozu

Zapojení s ESP32 od LaskaKit

Programový kód

Platformio.ini

[env:esp32-s3-devkitc-1]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
monitor_speed = 115200
build_type = debug
lib_deps = 
	adafruit/Adafruit_VL53L0X@^1.2.4

main.cpp

#include <Wire.h>
#include "Adafruit_VL53L0X.h"

#define SDA_PIN 42
#define SCL_PIN 2

Adafruit_VL53L0X lox = Adafruit_VL53L0X();

void setup() {
  Serial.begin(115200);
  pinMode(4, OUTPUT);
  digitalWrite(4, HIGH);
  pinMode(47, OUTPUT);
  digitalWrite(47, HIGH);
  delay(1000);

  Wire.begin(SDA_PIN, SCL_PIN);

  // wait until serial port opens for native USB devices
  while (! Serial) {
    delay(1);
  }

  Serial.println("Adafruit VL53L0X test.");
  if (!lox.begin()) {
    Serial.println(F("Failed to boot VL53L0X"));
    while(1);
  }
  // power
  Serial.println(F("VL53L0X API Continuous Ranging example\n\n"));

  // start continuous ranging
  lox.startRangeContinuous();
}

void loop() {
  if (lox.isRangeComplete()) {
    Serial.print("Distance in mm: ");
    Serial.println(lox.readRange());
  }
}