[Решенная] библиотека для датчика VL530LOX LIDAR

Рауфджай
Чт 18 мая 2017 г. 2:00 утра
Привет,
Я попытался найти библиотеку датчиков VL530LOX для работы на Bluepill Board. Пока я не мог получить один. Немного работает хорошо с Arduino, но когда я попробовал, это дает некоторую ошибку в проводе.написать команду.
У меня недостаточно знаний в C ++ и ограниченных знаниях для C.
Любая помощь или руководство будут оценены.
Спасибо
Рауфджай

Ахулл
Чт 18 мая 2017 г. 10:33
Вам нужно будет предоставить гораздо больше информации, чем эта. : D Для начала....

Какую библиотеку вы используете?

Где ты скачал его с?

* Точно* что такое/это ошибка или ошибки, которые вы получаете?

У вас есть ссылка на таблицу данных для модуля VL530LOX?

ZMEMW16
Чт 18 мая 2017 г. 20:03
Google дает один результат
https: // github.com/pololu/vl53l0x-arduino
Библиотека VL53L0X для Arduino
Это библиотека для Arduino IDE, которая помогает взаимодействовать с ST VL53L0X Датчик расстояния времени полета. Библиотека простает настройка данных датчика и диапазона чтения через I -IF -.

https: // www.Пололу.com/продукт/2490 @ $ 13.95
техническая спецификация https: // www.Пололу.com/file/download/vl ... _id = 0J1187

Это не тот лидар, которого я ожидал, шахта вращается :ржу не могу:
Стивен

AG123
Пн 22 мая 2017 г., 3:43
Нашел таблицу данных, и интересно это от ST!
http: // www.ул.com/en/imaging-and-photon ... 53L0X.HTML
http: // www.ул.com/content/ccc/resource/ ... 279086.PDF
Но нет, я не думаю, что это работает как сканирующий лидар, скорее как детектор лазерного диапазона

Мартинп
Сб, 03 июня 2017 г. 9:58 утра
Я использовал этот датчик на других досках, чем Bluepill (или Maple Mini). Я как раз собираюсь пойти на прогулку, но я посмотрю на это позже!

Zoomx
Пт, 04 августа 2017 г., 19:51
Я проверил библиотеку Adafruit
https: // github.com/adafruit/adafruit_vl53l0x
и загрузил единственный пример: он компилирует.

Я использовал ядро, в котором есть несколько месяцев, 8 апреля 2017 года.

Rogerclark
Пт, 04 августа 2017 г., 21:32
У меня есть этот датчик, подключенный к Maple Mini на макете на данный момент.

Так что, если у меня будет время, я подтвержу, работает ли библиотека Adafruit

Примечание. Adafruit часто намеренно подключает конфигурации на устройствах I2C по альтернативному (не по умолчанию) подчиненному адресу, что означает единственную работу их библиотеки, если ящик «на их оборудовании», потому что изготовленные китайцы склонны использовать адрес по умолчанию по умолчанию.

В прошлом мне нужно было изменить их либера.

Zoomx
Сб 05 августа 2017 г., 6:28
Это случилось со мной, используя их библиотеку BME280, но затем я обнаружил, что функция Begin принимает адрес.
Может быть, эта библиотека тоже принимает адрес в качестве аргумента в начале.

Rogerclark
Солнце 06 августа 2017 12:05
Я попробовал 2 разные библиотеки для STM VL53L0X.

https: // github.com/adafruit/adafruit_vl53l0x
и
https: // github.com/pololu/vl53l0x-arduino

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

Библиотека Adafruit сообщает о «статусе диапазона», и пример проверяет это != 4

Однако, когда я включил отладку в Adafruit Lib, он сообщает о статусе диапазона 2 как «отказ сигнала»
И только значения со статусом диапазона == 0 показаны как «действительные»
Диапазон кажется только действительным, когда мера расстояния < 20 см

Это значение намного меньше, чем таблица данных St, который статус
Он может измерить абсолютные расстояния до 2м http: // www.ул.com/content/ccc/resource/ ... 279086.PDF

Я почти уверен, что проблема заключается в конфигурации библиотеки, но стыдно, что библиотека, по -видимому, сообщает о значениях, когда библиотека сообщает, что статус диапазона является «отказом от сигнала»

Библиотека Pololu дает очень похожие результаты на Adafruit, но в библиотеке Pololu был пример «единственного» чтения, у которого есть варианты для дальнего расстояния, и это, кажется, лучший режим, потому что библиотека Pololu сообщает диапазон 8190 Если расстояние его измерения проходит.

Но в конечном итоге я не так доволен ни одной библиотекой.

Я думал, что ST написал свой собственный «драйвер» для этого устройства, но я еще не могу его найти, и, глядя на форум сообщества ST, люди, похоже, не были довольны отсутствием документации на этом устройстве
эн.глин.
https: // Сообщество.ул.com/thread/7504

Rogerclark
Солнце 06 августа 2017 12:13
Просто быстрое продолжение моего последнего поста.

Похоже, библиотека Adafruit содержит исходный код, написанный ST и опубликован через MBBE.

Библиотека полюлу, по -видимому, была написана ими с нуля и содержит большие блоки написания кода произвольные значения для регистров в VL53Lox E.глин.
writeReg(0xFF, 0x01); writeReg(0x00, 0x00); writeReg(0xFF, 0x00); writeReg(0x09, 0x00); writeReg(0x10, 0x00); writeReg(0x11, 0x00); writeReg(0x24, 0x01); writeReg(0x25, 0xFF); writeReg(0x75, 0x00);

Zoomx
Солнце 06 августа 2017 13:50
[Rogerclark - Солнце 06 августа 2017 12:05] - Я думал, что ST написал свой собственный «драйвер» для этого устройства, но я еще не могу его найти, и, глядя на форум сообщества ST, люди, похоже, не были довольны отсутствием документации на этом устройстве
ST Software здесь
http: // www.ул.com/en/encedded-software/stsw-img005.HTML
Но требуется бесплатная регистрация.

Я использовал этот датчик с библиотекой Arduino и Pololu только один раз. Я подумал использовать этот датчик с дешевым роботизированным автомобилем Sinche The Ultrasonic дешевого датчика работаю в 3.3В.

Rogerclark
Солнце 06 августа 2017 22:20
@zoomx

Спасибо за ссылку. Я уже зарегистрируюсь у ST ;-) Так что это не будет проблемой.

Я заинтересован в его использовании для разнообразных вещей, и для тестирования я собирался попробовать это на роботизированном автомобиле.

Мне также необходимо перенести его, чтобы использовать его на MCU серии NRIC NRF51, но это выглядит более сложным, чем я себе представлял, так как настройка множества регистров требует много кода.
Я могу просто перенести версию Pololu, так как для изменения меньше кода, и, похоже, она работает OK, особенно в режиме на большие расход в их библиотеке.

В идеале я хотел бы посмотреть, смогу ли я протестировать на более длинных диапазонах, для работы ночью !

Мэнни
Пн 14 августа 2017 г. 9:56 утра
Я получил пару VL530LOX, и я собирался использовать их, чтобы записать свои поездки на грязные велосипеды, поэтому я посмотрел на библиотеки и обнаружил, что только двое любили ранее Adafruit и Pololu.

Adafruit компилирует и работает из коробки, единственная проблема заключается в том, что иногда датчик не будет работать без переключения велосипедного. Иногда немного расстраивает.

Библиотека Пололу не компилировалась без небольших изменений, но лучше во всех других аспектах IMHO.

Впечатлен точностью и скоростью VL530LOX.

Rogerclark
Пн 14 августа 2017 г. 10:22 утра
Я не помнил, чтобы мне было что -то изменить, чтобы сделать библиотеку Пололу, но, возможно, я сделал.

Я согласен, что Lib Pololu, кажется, работает хорошо, и, кажется, лучше, чем Adafruit Lib.

Adafruit Lib, кажется, использует файлы STM, но настройка этих устройств - это сложный бит, и настройка Pololu кажется лучше

Я нашел режим одного выстрела более полезным, чем непрерывный, но я хотел измерить на большие расстояния я.E более 1м.

Мэнни
Пн 14 августа 2017 г., 17:43
[Rogerclark - Пн 14 августа 2017 г. 10:22] - Я не помнил, чтобы мне было что -то изменить, чтобы сделать библиотеку Пололу, но, возможно, я сделал.
Я получал Ошибка: вызов перегруженного «записать (длинный без знака Int)» неоднозначно с writereg32bit () Я изменил это на следующее, которое избавится от него...Не уверен, что это лучший способ :) // Write a 32-bit register void VL53L0X::writeReg32Bit(uint8_t reg, uint32_t value) { Wire.beginTransmission(address); Wire.write(reg); Wire.write((byte)(value >> 24) & 0xFF); // value highest byte Wire.write(((byte)value >> 16) & 0xFF); Wire.write(((byte)value >> 8) & 0xFF); Wire.write( (byte)value & 0xFF); // value lowest byte last_status = Wire.endTransmission(); }

Rogerclark
Пн 14 августа 2017 г., 21:31
Ах.

да. Я ценно помню это...

Я посмотрю, что я сделал, чтобы исправить это.

Rogerclark
Пт 25 августа 2017 г. 8:38
Я думаю, что я изменил LIB на использование uint8_t вместо uint8

Как ни странно, библиотека проводов использует uint8 в качестве типа для write (), поэтому «uint8» должен быть где -то определен, но не является частью пути включения этой библиотеки

Я думаю, что это то, что, вероятно, нужно исправить в ядре