VL53L1X – это времяпролётный (ToF) лазерный дальномер, способный измерять расстояния до четырёх метров с частотой измерений 50Гц. Его особенностью является наличие приёмной матрицы SPAD , благодаря которой возможно запрограммировать размер области интереса на приемном массиве, что позволяет уменьшить поле зрения датчика.
Датчик установлен на отладочной плате GY-53-L1X. По умолчанию дальномер подключен к микроконтроллеру, установленному на обратной стороне платы. Микроконтроллер анализирует расстояние, полученное от дальномера, и меняет скважность импульсов на PWM выходе, а также отправляет полученные данные в последовательный порт.
Для того чтобы напрямую взаимодействовать с датчиком по I 2 C , необходимо вывод PS замкнуть на землю, что приведёт к отключению микроконтроллера, установленного на плате, и он больше никак не будет влиять на измерения.
Компания STM выпустила две версии API для работы с данным датчиком: STSW-IMG007 – VL53L1X Full API и STSW-IMG009 – VL53L1X ULD API. Первый пакет предоставляет полный пакет функций для работы с дальномером и, соответственно, занимает больше памяти. Второй пакет – ультралёгкий, работать с ним легко и удобно, содержит в себе всего лишь четыре файла.
Кроме самой библиотеки в проект необходимо добавить фалы vl53l1_platform.c и vl53l1_platform.h в которых необходимо переопределить (реализовать) функции для работы с I2C .
Так как дальномер мы будем подключать к микроконтроллерам компании STM, то код реализации файлов vl53l1_platform возьмём из примеров на сайте. Скачаем и распакуем файл STSW-IMG010 – пример кода для подсчёта людей. Из этого проекта и возьмём саму библиотеку и готовые файлы vl53l1_platform.
Библиотека лежит по пути:
C:\...\en.STSW-IMG010\Drivers\BSP\Components\vl53l1x_uld.
Файлы сопряжения с контроллером: C:\...\en.STSW-IMG010\Inc и C:\...\en.STSW-IMG010\ Src соответственно.
Создаём проект в STM32CubeMX и включаем I 2 C . Также настраиваем одну ножку на выход для управления XSHUT микросхемы. Добавляем, указанные выше, файлы библиотеки в проект. В файле vl53l1_platform.c заменяем include "stm32xxx_hal.h" на include "stm32f4xx_hal.h" , так как используем контроллер серии F4. Собираем проект.
Библиотека включает в себя обязательные и опциональные функции. К обязательным функциям относятся функции инициализации и получения данных измерения, к дополнительным, например, функции калибровки.
Минимум функций для измерения расстояния:
Объявление переменных:
Сброс, инициализация, запуск измерений:
Получение данных и сброс флага прерывания в датчике:
Минимальный проект измерения расстояния.
Портированный проект подсчёта людей.
Проект подсчёта людей на STM32F746-DISCO с выводом информации на дисплей.