Лазерный дальномер

LastHopeMan
Offline
Зарегистрирован: 19.09.2016

Всем добра!

Есть такие дальномеры, которыми обычно расстояние между стенами измеряют в помещениях. Он пускает точку на противоположную стену и через пару сек дает результат. Как смастерить для ардуины похожую конструкцию? Особенно интересует, где достать и как называется датчик, т.к. найти никак не могу. А разбирать реальное новый аппарат ради него не хочется...

Araris
Offline
Зарегистрирован: 09.11.2012

Топикстартер прекрасен. ©

По сути : вот лазерный дальномер до двух метров с точностью до миллиметра - https://www.aliexpress.com/item/Free-Shipping-1pcs-GY-530-VL53L0X-World-smallest-Time-o-f-Flight-ToF-laser-ranging-sensor/32740077697.html?spm=2114.13010608.0.0.jd7EFL

Ко мне один такой как раз едет.

Всё, что меряет дальше, стоит изрядно дороже.

LastHopeMan
Offline
Зарегистрирован: 19.09.2016

Araris, а вы рисковый. Я редко беру что-то с нулем отзывов, когда поисковые системы ни строчки не знают о такой вещице =) Надеюсь, вам повезет.

 

А как эта штука работает? Я вижу там место под лазер, но не вижу места под приемник. Или принимать будет та штука черная, похожая на SMD транзистор?

Вообще методика расчета должна строиться на временной разнице между пуском луча и его оседанием на какой-либо поверхности, или для лазеров есть какой-то иной трюк?

 

upd:

нашел таки, где и что. VL53L0X  - это типа SMD элемент, в котором интегрирован и инфракрасный лазер и его приемник. Собственно, он на плате. А контакты, наверное, для визуального лазера - чтоб не было дискомфорта у юзера. Хотя фиг его знает. 

На алиэкспресс обычно есть голые чипы от всех их модулей, а тут только сами модули продаются, а VL53L0X отсутствует. А я-то уж думал купить oem =)

Araris
Offline
Зарегистрирован: 09.11.2012

LastHopeMan пишет:

Araris, а вы рисковый. Я редко беру что-то с нулем отзывов, когда поисковые системы ни строчки не знают о такой вещице =) Надеюсь, вам повезет.

Спасибо, думаю повезёт. Лично для меня (а опыт некоторый есть, на Алиэкспрессе я A3 level member) рейтинги и отзывы никак не влияют на выбор товара/продавца. Самое худшее, что случалось со мной на Али - недоезд(неотправка?) товара с последующим возвратом денег.

Мои поисковые системы знают много строчек о вещице (https://www.google.com.ua/?gws_rd=ssl#q=VL53L0X), вещица, кстати, достаточно свежая, примерно май 2016-го.

LastHopeMan
Offline
Зарегистрирован: 19.09.2016

Araris пишет:

Мои поисковые системы знают много строчек о вещице (https://www.google.com.ua/?gws_rd=ssl#q=VL53L0X), вещица, кстати, достаточно свежая, примерно май 2016-го.

Да я тоже всю инфу по ней нашел, когда GY убрал. Ох уж эти китайцы... и на брата от ST тоже посмотрел, но от до 10 см дальности. Ладно, я понял, нужно пока что угомониться и ждать технологий. Сейчас смысла нет перелетать на этот датчик, пока ко мне едет пачка ультразвуковых. Подожду, может ST и матрицу ToF изобретет доступную по цене... ))

MagicianT
Offline
Зарегистрирован: 03.10.2015

Araris пишет:

Топикстартер прекрасен. ©

По сути : вот лазерный дальномер до двух метров с точностью до миллиметра - https://www.aliexpress.com/item/Free-Shipping-1pcs-GY-530-VL53L0X-World-smallest-Time-o-f-Flight-ToF-laser-ranging-sensor/32740077697.html?spm=2114.13010608.0.0.jd7EFL

Ко мне один такой как раз едет.

Всё, что меряет дальше, стоит изрядно дороже.

 Ага, до миллиметра. Я уже глаза растопырил, думал свершилось, побежал кредитку искать. Потом ДШ посмотрел,

Table 12. Ranging accuracy Indoor (no infrared) Outdoor Target reflectance level (Full FOV) Distance 33ms 66ms Distance 33ms 66ms White Target (88%)

at 120cm 4% 3%

at 60cm 7% 6% Grey Target (17%)

at 70cm 7% 6%

at 40cm 12% 9%

Ошибка 5 см на 1.2- метрах, или я не туда смотрю?

страница 27 таблица 12 http://www.st.com/content/ccc/resource/technical/document/datasheet/group3/b2/1e/33/77/c6/92/47/6b/DM00279086/files/DM00279086.pdf/jcr:content/translations/en.DM00279086.pdf

Araris
Offline
Зарегистрирован: 09.11.2012

MagicianT пишет:

Ошибка 5 см на 1.2- метрах, или я не туда смотрю?

страница 27 таблица 12 http://www.st.com/content/ccc/resource/technical/document/datasheet/group3/b2/1e/33/77/c6/92/47/6b/DM00279086/files/DM00279086.pdf/jcr:content/translations/en.DM00279086.pdf

Таки да, чуда опять не случилось. Впрочем, какие деньги, такая и точность...

LastHopeMan
Offline
Зарегистрирован: 19.09.2016

Там не совсем так. Даете 200мс времени - и она доводит точность до 3%. Короче, чем больше времени на один расчет, тем больше точность. Думаю, она много раз пытается измерить, а потом сводит результат. Правда я так и не понял, можно ли ей дать например больше, чем 200мс. Если так, то "контрольный выстрел" можно прицелиться.

MagicianT
Offline
Зарегистрирован: 03.10.2015

Всё равно фуфло, 3 или 4 процента, и это на 1.2м с хорошим отражением. На таком расстоянии я померяю плюс-минус 1 мм используя камеру. https://vimeo.com/44707148

Если к той камере добавить зум, то и до 10 метров потянет.

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Araris, наверное у нас схожие принципы подбора покупок (равно как и одинаковый уровеньнга Али), я, уведев ссылку, сразу заказал себе такой же. Правда, через несколько дней продавей СНАЧАЛА зарегистрировал отправку товаоа (кстати, с номером отслеживания), а ПОТОМ написал, что товара нет, с просьбой отменить заказ (что я уже, естественно, был сделать не в состоянии). К Вам по-прежнему едет, или тоже у продавца что-то апостериори случилось?

Сейчас посмотрел, минимальная цена на то, что я сумел найти на Али, уже минимум в 1.5 раза дороже.

Araris
Offline
Зарегистрирован: 09.11.2012

andriano пишет:

Araris, наверное у нас схожие принципы подбора покупок (равно как и одинаковый уровеньнга Али), я, уведев ссылку, сразу заказал себе такой же. Правда, через несколько дней продавей СНАЧАЛА зарегистрировал отправку товаоа (кстати, с номером отслеживания), а ПОТОМ написал, что товара нет, с просьбой отменить заказ (что я уже, естественно, был сделать не в состоянии). К Вам по-прежнему едет, или тоже у продавца что-то апостериори случилось?

Сейчас посмотрел, минимальная цена на то, что я сумел найти на Али, уже минимум в 1.5 раза дороже.

Мне тоже достаточно долго не отправлял, наконец вчера (10-го) пришло "Seller shipped your order", больше новостей пока нет. Ну да, цена уже не $6.68, а $10.58.

UPD: только что продавец прислал "HELLO , YOU NEED THIS item was out of store, pls cancel you order", та же история получается. Сейчас попробую открыть диспут.

UPD1: не тут-то было - "You can "Open Dispute" 10 days after the seller ships your item(s)." Подожду 10 дней...

Продавцу отписал "Hi, I can not cancel the order, because you are "sent" items. After ten days I will open the dispute."

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Угу.

Я, правда, не пытался сразу открывать спор, пусть сначала продавец над этим подумает, поэтому: Hello. I cannot cancel the order as the item is already sent. Tracking number is RM???CN.  I can open a dispute only.

В общем, подожду, что ответит.

LastHopeMan
Offline
Зарегистрирован: 19.09.2016

Да вы не ведитесь, это они просто поняли, что продешевили. У сего чипа закупка огого по цене. Когда я смотрел, была по цене модуля =)

Так что скорее всего они просто не хотели продавать по низкой цене, а придумали отмазы.

 

Меня тоже там один просил перезаказать, когда понял, что продает 10 к 1 =))))

Araris
Offline
Зарегистрирован: 09.11.2012

Итак, по прошествии десяти дней диспут открылся, продавец согласился, деньги вернулись, хэппиэндушки.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Аналогисно.

Я, правда, перестарховался и написал в примечаниях, что спор открыт по просьбе продавца. Но отреагировал он мгновенно - менее суток.

StrangerM
Offline
Зарегистрирован: 02.11.2013

Мне в этом году пару раз деньги не вернули. Т.е. все ОК - возвращаем деньги, а деньги так и не пришли на карточку.

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Araris пишет:

Топикстартер прекрасен. ©

По сути : вот лазерный дальномер до двух метров с точностью до миллиметра - https://www.aliexpress.com/item/Free-Shipping-1pcs-GY-530-VL53L0X-World-smallest-Time-o-f-Flight-ToF-laser-ranging-sensor/32740077697.html?spm=2114.13010608.0.0.jd7EFL

Ко мне один такой как раз едет.

Всё, что меряет дальше, стоит изрядно дороже.


Нашли адекватную библиотеку для него? Давно уже на него смотрю, всё не решусь заказать, жаба давит почти 10 баксов отдать, но любопытство берёт вверх.

Araris
Offline
Зарегистрирован: 09.11.2012

Дык не удалась покупка, деньги вернули, но повторно я не заказывал...

P.S. нехороший человек, ты razniepodelki.blogspot.com зачем бросил ?

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

Araris пишет:

Дык не удалась покупка, деньги вернули, но повторно я не заказывал...

P.S. нехороший человек, ты razniepodelki.blogspot.com зачем бросил ?


Кушать хочется, блогом сыт не будешь, нету времени на это всё.

Gomez
Offline
Зарегистрирован: 09.09.2017

Хотелось бы приподнять тему и спросить - так что, работал ли кто с VL53L0X?

В принципе, Adafruit - овская библиотека работает, сначала дальше 1200 мм вообще не хотела ничего показывать, поскольку в default mode он так и работает.

Потом нашел https://satoshinm.github.io/blog/171111_enabling_long_range_mode_on_a_vl53l0x_time_of_flight_sensor_in_arduino.html

Взял с Гитхаба библиотеку с этими изменениями и получил long range mode, по крайней мере на 1.6 метров видит.

Но все же хотелось бы использовать GPIO1 (работу по прерыванию), то есть не мерить дистанцию постоянно в цикле - мне этот сенсор нужен, как датчик присутствия, а не как измеритель расстояния.

Без программирования на этом GPIO1 всегда 3.3 вольта.

Никто не ковырялся? ;)

Perdimonocle
Offline
Зарегистрирован: 19.10.2012

Я приобрёл парочку лидаров VL53L0X.

Библиотека с гитхаба "легче" адафрутовской. Но и с адафруктовской, и с полулувской библиотеками точно измеряют расстояние до 1,2 метра, а дальше выводит 8190. Минимальный передел - 30 мм, даже если пальцем микруху ракрыть...

"Игрался" с настройками LONG_RANGE, HIGH_SPEED и HIGH_ACCURACY - дальности не добавило (да мне и не нужно), при увеличенной скорости точность измерений падает, а при раскоментированной строке #define HIGH_ACCURACY точность измерения расстояния до 1 мм.

С прерываниями этот VL53L0X не использовал, так как не было потребности, да у меня все пины с аппаратными прерываниями уже заняты другими сенсорами...

JonHappy1
Offline
Зарегистрирован: 11.06.2018

использую в качестве датчика положения - измерения в цикле loop. каждое измерение отпраляется по ws на сервер. порядка 10 измерений в сек. за абсолютную точность не ручаюсь , мне не требуется, но фильтровать данные надо, прямой линии на графике не выдаёт. к свету светодиодных ламп не чувствителен. но очень чуствителен к солнечному свету - показания начинают скакать. даже фильтрация по 8 точкам не спасает.

Arkadiy1
Offline
Зарегистрирован: 22.07.2018

Добрый день !

Чем декоративно закрыть VL53L0X ? 

Закрывал прозрачным глазком - заглушкой  чувствительность упала до 150 -200 мм

sadman41
Offline
Зарегистрирован: 19.10.2016

Он, вроде как в инфракрасном диапазоне работает, нужно что-то не ослабляющее такой сигнал. Может попробовать пластмассовую красную пластинку, которая закрывает инфракрасные приемники в бытовой электронике?

Logik
Offline
Зарегистрирован: 05.08.2014

А с какой либкой собирались?  Не https://github.com/pololu/vl53l0x-arduino часом?

А то я тут Adafruit_VL53L0X.h попробовал. Работает, но наипростейший скетч так:

Скетч использует 17108 байт (55%) памяти устройства. Всего доступно 30720 байт.

Глобальные переменные используют 1236 байт (60%) динамической памяти, оставляя 812 байт для локальных переменных.

Засранцы вобщем криворукие и безмозглые, притом хронические если их гомнокод под SSD1306 вспомнить.

Hamster
Offline
Зарегистрирован: 12.07.2015

Gomez пишет:

Но все же хотелось бы использовать GPIO1 (работу по прерыванию), то есть не мерить дистанцию постоянно в цикле - мне этот сенсор нужен, как датчик присутствия, а не как измеритель расстояния.

Без программирования на этом GPIO1 всегда 3.3 вольта.

Никто не ковырялся? ;)

Вот слегка модифицированный код от ESPшки:

/* This example shows how to use continuous mode to take
range measurements with the VL53L0X. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.

Basic sketch from Pololu version of ST Microelectronic's API
see: https://github.com/pololu/vl53l0x-arduino

Further modified by Kris Winer for the ESP32 and interrupt data ready, etc.

The range readings are in units of mm. */

#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;

// Uncomment this line to use long range mode. This
// increases the sensitivity of the sensor and extends its
// potential range, but increases the likelihood of getting
// an inaccurate reading because of reflections from objects
// other than the intended target. It works best in dark
// conditions.

#define LONG_RANGE


// Uncomment ONE of these two lines to get
// - higher speed at the cost of lower accuracy OR
// - higher accuracy at the cost of lower speed

#define HIGH_SPEED
//#define HIGH_ACCURACY

// Pin definitions
int myLed = 13;
int intPin = 2;

volatile bool newData = false;

uint32_t lastUpdate = 0;//, firstUpdate = 0; // used to calculate integration interval
uint32_t Now = 0;                         // used to calculate integration interval

void setup()
{
  Serial.begin(9600);
  delay(4000);
  
 Wire.begin();
 
// Set up the led indicator
  pinMode(myLed, OUTPUT);
  digitalWrite(myLed, LOW);
  pinMode(intPin, INPUT);

  sensor.init();
  sensor.setTimeout(500);

  #if defined LONG_RANGE
  // lower the return signal rate limit (default is 0.25 MCPS)
  sensor.setSignalRateLimit(0.1);
  // increase laser pulse periods (defaults are 14 and 10 PCLKs)
  sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodPreRange, 18);
  sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodFinalRange, 14);
  #endif

  #if defined HIGH_SPEED
  // reduce timing budget to 20 ms (default is about 33 ms)
  sensor.setMeasurementTimingBudget(20000);  // minimum timing budget 20 ms
  #elif defined HIGH_ACCURACY
  // increase timing budget to 200 ms
  sensor.setMeasurementTimingBudget(200000);
  #endif

  // Start continuous back-to-back mode (take readings as
  // fast as possible).  To use continuous timed mode
  // instead, provide a desired inter-measurement period in
  // ms (e.g. sensor.startContinuous(100)).
  sensor.startContinuous();

  attachInterrupt(0, myinthandler, CHANGE);  // define interrupt for GPI01 pin output of VL53L0X


  Serial.print("Start project!");
}

void loop()
{  
  if (newData) // wait for data ready interrupt
  {
     newData = false; // reset data ready flag
     Now = micros(); // capture interrupt time
     // calculate time between last interrupt and current one, convert to sample data rate, and print to serial monitor
     Serial.print("data rate = "); Serial.print(1000000./(Now - lastUpdate)); Serial.println(" Hz");

     Serial.print(sensor.readRangeContinuousMillimeters()); // prit range in mm to serial monitor
     if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }

     Serial.println();
  }
  lastUpdate = Now;
}

/****************************************************************************************************/
/* Useful functions*/
/****************************************************************************************************/
void myinthandler()
{
  newData = true; // set the new data ready flag to true on interrupt
}

НО! работает он не совсем так, как вы хотите - прерывание случается каждый раз как только данные об измерении готовы. вы можете влиять на период измерения функцией sensor.startContinuous.

Удачи!

Samid777
Offline
Зарегистрирован: 24.04.2019

Проще простого. Вот человек собрал, смастерил, заработало. 
https://habr.com/ru/post/213749/