Датчик расстояния GY-530 VL53L0X (ToF)

Полное руководство по лазерному дальномеру GY-530 VL53L0X: технические характеристики, распиновка, схемы подключения, примеры кода для Arduino и MicroPython, калибровка и устранение ошибок.

Расстояние I2C

Где купить

Приобретите Датчик расстояния GY-530 VL53L0X (ToF)

Обзор

GY-530 — это компактный модуль на базе лазерного дальномера VL53L0X от STMicroelectronics. В отличие от ультразвуковых датчиков, он использует технологию Time-of-Flight (ToF), измеряя время полета фотонов. Это позволяет достичь высокой точности независимо от цвета и отражающей способности объекта.

GY-530 (VL53L0X) — это «золотой стандарт» бюджетных лазерных дальномеров. Он работает на безопасной для глаз длине волны 940 нм и способен измерять расстояние до 2000 мм с миллиметровой точностью в помещении.

GY-530 VL53L0X Sensor

Сравнение в линейке ToF

ПараметрVL6180XVL53L0X (GY-530)VL53L1X
Дистанциядо 60 смдо 200 смдо 400 см
ТехнологияToF + ОсвещенностьToF (Standard)ToF (Multi-zone)
Угол обзора (FoV)42°25°27° (настраиваемый)
ПрименениеЖесты, малая дистанцияУниверсальный дальномерДлинные дистанции

Где купить

Маркетплейсы

Средняя цена: ~$4.00

Мы являемся участником программы Amazon Services LLC Associates. При совершении покупок по нашим ссылкам мы можем получать небольшую комиссию.


Спецификации устройства

Характеристики GY-530 (VL53L0X)

Интерфейс

I2C (Fast Mode)

До 400 кГц, адрес 0x29

Точность

± 3% — 10%

Зависит от режима и освещения

Диапазон

30 – 2000 мм

Лазер 940нм (Class 1)

Питание

2.6В – 5.5В

Ток: 10мА (тип) / 20мА (макс)

Скачать Datasheet VL53L0X (PDF)
Распиновка модуля

Распиновка GY-530

VIN
Питание 2.6-5.5В
GND
Земля (0В)
SCL
I2C Clock
SDA
I2C Data
XSHUT
Выключение (Active Low)
GPIO1
Выход прерывания (Int)

Важно про XSHUT

Этот пин используется для сброса адреса I2C. Если вы используете несколько датчиков, XSHUT позволяет активировать их по очереди для назначения уникальных адресов.

Встроенный регулятор

На плате GY-530 обычно установлен регулятор на 2.8В. Пин **VDD** на модуле — это выход этого регулятора, не подключайте к нему внешнее питание 5В!

Таблица назначения пинов
Пин Название Тип Описание
1VINPowerВход питания (2.6В - 5.5В)
2GNDGroundОбщий провод (Земля)
3SCLI2CТактовая линия шины I2C
4SDAI2CЛиния данных шины I2C
5XSHUTInputПин выключения (низкий уровень = OFF)
6GPIO1OutputПрерывание при завершении замера

Подключение к контроллеру

Подключение GY-530

Схема соединений (Arduino Uno)

Схема подключения GY-530
Pin Mapping
GY-530 Pin Arduino Pin ESP32 Pin
VIN5V / 3.3V3.3V
GNDGNDGND
SCLA5GPIO 22
SDAA4GPIO 21
i
Адрес I2C
0x29

Можно изменить программно через XSHUT.

Статус шины
Pull-up 10k OK 3.3V Logic Safe

Решение проблем

Устранение неполадок GY-530

!
Датчик выдает значение 8190
Ошибка: Out of Range

Это означает, что отраженный сигнал слишком слабый или объект находится дальше 2 метров. Также проверьте:

  • Чистоту линзы датчика (удалите защитную пленку!).
  • Наличие яркого солнечного света (ИК-излучение мешает ToF).
  • Напряжение питания (должно быть не ниже 2.8В).
?
Заниженные показания за стеклом
Crosstalk (Перекрестные помехи)

Стекло или пластик перед датчиком отражают часть ИК-луча обратно. Для исправления:

  1. Установите черную резиновую прокладку между датчиком и стеклом.
  2. Выполните процедуру калибровки Crosstalk (см. документацию библиотеки Adafruit или ST).

Примеры программирования

Примеры кода GY-530

Arduino / ESP32
Библиотека Adafruit_VL53L0X
C++
#include "Adafruit_VL53L0X.h"

Adafruit_VL53L0X lox = Adafruit_VL53L0X();

void setup() {
  Serial.begin(115200);
  
  if (!lox.begin()) {
    Serial.println(F("Ошибка инициализации VL53L0X!"));
    while(1);
  }
}

void loop() {
  VL53L0X_RangingMeasurementData_t measure;
  
  lox.rangingTest(&measure, false); // передайте true для отладки

  if (measure.RangeStatus != 4) {  // фаза 4 = успех
    Serial.print("Расстояние (мм): "); 
    Serial.println(measure.RangeMilliMeter);
  } else {
    Serial.println(" Вне диапазона ");
  }
  
  delay(100);
}
MicroPython
Использование модуля vl53l0x
PYTHON
from machine import Pin, I2C
import vl53l0x

i2c = I2C(0, sda=Pin(21), scl=Pin(22))
sensor = vl53l0x.VL53L0X(i2c)

while True:
    print("Расстояние: {} мм".format(sensor.read()))

Итоги

Рекомендуется для:

  • Роботов (избегание препятствий)
  • Бесконтактных выключателей
  • Датчиков парковки

Ограничения:

Не подходит для работы под прямым солнечным светом. Для дистанций свыше 2 метров используйте VL53L1X. Не допускайте загрязнения линзы!

Готовы к разработке?

Изучите примеры кода и скачайте документацию для быстрого старта вашего проекта.