Подключение LiDAR-датчика TFMini-S к Arduino

Подключение LiDAR-датчика TFMini-S к Arduino

Беспилотный автомобиль — это величайший подарок технологий цивилизации со времён появления Интернета. Лишь вопрос времени, когда эти автомобили заполнят дороги.

Чтобы беспилотный автомобиль мог успешно ориентироваться на дороге, он должен знать о физических объектах вокруг себя. Этому помогает вращающийся LiDAR-датчик, установленный на крыше, который создаёт трёхмерное представление дороги вокруг автомобиля.

LiDAR — не новинка, он существует уже давно; фактически, он был разработан вскоре после изобретения лазера. Первые работы по LiDAR были задокументированы в 1963 году. Высокая стоимость лазерного оборудования ограничивала использование LiDAR только государственными и военными ведомствами.

Однако недавнее снижение цен сделало LiDAR доступным для энтузиастов вроде нас, позволяя внедрять его в наши проекты. Одним из широко используемых недорогих, но точных LiDAR-датчиков является TFMini-S.

Это руководство покажет вам, как подключить модуль TFMini-S к Arduino для выполнения высокоточных измерений расстояния, но сначала — краткое введение в LiDAR.

Что такое LiDAR и как он работает?

LiDAR — это комбинация слов «Light» (свет) и «RADAR» или, если хотите, обратная аббревиатура от «Light Detection And Ranging» (обнаружение и определение дальности с помощью света). LiDAR похож на RADAR, только использует свет вместо радиоволн.

По сути, LiDAR работает путём направления лазерного луча на объект. Лазер отражается от объекта и возвращается к датчику. Измеряя время, необходимое для возвращения света к датчику, можно оценить расстояние до объекта. Измеренное расстояние может варьироваться в зависимости от окружающей среды и отражательной способности объекта.

Подключение LiDAR-датчика TFMini-S к Arduino

Путём сканирования или вращения LiDAR-датчика можно быстро построить 3D-карту местности. Обычно она представляется в виде «облака точек» для лучшего понимания того, что обнаруживает LiDAR.

Подключение LiDAR-датчика TFMini-S к Arduino

Courtesy: Dana Peters – Arduino-based LiDAR Scanner – http://youtu.be/xkut3yRL61U

Обзор оборудования TFMini-S

TFMini-S — это высокоточный одноточечный ToF (Time of Flight) LiDAR-датчик от компании Benewake (Beijing) Co. Ltd. Он идеально подходит для интеграции высокоточного лазерного измерения расстояний в любой робототехнический или интерактивный проект.

Подключение LiDAR-датчика TFMini-S к Arduino

Размером с USB-накопитель, TFMini-S позволяет интегрировать LiDAR в проекты, которые ранее были доступны только для более мелких датчиков, таких как инфракрасные дальномеры серии SHARP GP.

TFMini-S может измерять расстояние до объекта от 10 сантиметров до 12 метров.

Помимо низкой стоимости, компактных размеров и большой дальности, TFMini-S обладает высокой точностью измерения расстояния — ±6см до 6м и ±1% далее.

Следует отметить, что этот датчик не использует лазерный свет для измерения расстояний. Вместо этого он использует сфокусированный инфракрасный светодиод с длиной волны 850нм и оптику. Именно поэтому устройство относительно недорогое.

Эффективная дальность обнаружения

Как и у всех LiDAR-датчиков, эффективная дальность обнаружения зависит от условий освещения, погоды и отражательной способности целевого объекта.

На графике ниже показан рабочий диапазон TFMini-S в различных условиях.

Подключение LiDAR-датчика TFMini-S к Arduino
  • 0-10см — слепая зона TFMini-S; в этом диапазоне данные ненадёжны.

  • В экстремальных условиях рабочий диапазон TFMini-S составляет 0.1-3м. Экстремальные условия — это уличные блики (с интенсивностью освещения около 100клк на улице в полдень летом) и обнаружение чёрного объекта (с отражательной способностью 10%).

  • В обычных условиях солнечного освещения (с интенсивностью около 70клк) рабочий диапазон TFMini-S составляет 0.1-7м.

  • В помещении или при слабом окружающем освещении рабочий диапазон TFMini-S составляет 0.1-12м.

Интерфейсы связи

TFMini-S по умолчанию обменивается данными через интерфейс UART, с обычными выводами UART RX и TX, работающими на скорости 115200бит/с.

Вы также можете настроить датчик для обмена данными через I2C, отправив соответствующие команды.

Частота обнаружения

Согласно техническому описанию, TFMini-S может выполнять до 1000 измерений в секунду (по умолчанию — 100). Эту частоту можно изменить, отправив соответствующие команды.

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

Входное питание

Согласно техническому описанию, TFMini-S работает от 5В и потребляет около 140мА во время измерения. Максимальный потребляемый ток составляет около 200мА.

Однако при тестировании датчик потреблял около 70мА самостоятельно. Поэтому если вы используете Arduino 5В, преобразователь логических уровней и датчик, можно ожидать потребление около 100мА. Таким образом, для базовых тестов датчик можно питать от USB-порта (5В/500мА) без проблем.

Пожалуйста, имейте в виду, что TFMini-S не имеет защиты от перенапряжения, поэтому поддерживайте колебания напряжения питания в пределах 0.1В.

Логические уровни

Хотя TFMini-S может питаться от 5В, выводы ввода/вывода работают только на логическом уровне 3.3В. Поэтому при использовании датчика с 5В микроконтроллером рекомендуется использовать преобразователь логических уровней.

Однако, если вы хотите только считывать данные с TFMini-S (в режиме UART), преобразователь логических уровней не нужен, поскольку устройства на 3.3В выдают логические уровни, совместимые с устройствами на 5В.

Технические характеристики

Вот основные характеристики:

Дальность обнаружения

10см – 12м

Разрешение

1см

Точность измерения

±6см до 6м и ±1% далее

Входное напряжение

Напряжение UART TTL

3.3В

Потребляемый ток

140мА (тип.), 800мА (пик)

Частота обнаружения

от 1 до 1000 сканирований в секунду (настраивается)

Длина волны излучения

850нм

Угол обзора

2.3°

Интерфейсы связи

UART и I2C

Скорость передачи данных

115200

Для получения дополнительной информации о LiDAR-датчике TFMini-S обратитесь к техническому описанию ниже.

Распиновка TFMini-S

Теперь давайте рассмотрим распиновку. TFMini-S имеет четыре вывода.

Подключение LiDAR-датчика TFMini-S к Arduino

GND — вывод заземления.

VCC — вывод питания. Подключайте его только к источнику питания 5В.

RXD/SDA — вывод, который можно использовать для отправки данных на датчик (при обмене через UART) или для отправки/получения данных (при обмене через I2C). Работает на логическом уровне 3.3В.

TXD/SCL — вывод, который либо передаёт данные от датчика к микроконтроллеру (при обмене через UART), либо функционирует как тактовый сигнал (при обмене через I2C). Обратите внимание, что он также работает на логическом уровне 3.3В.

Подключение датчика TFMini-S к Arduino

Подключить датчик TFMini-S к Arduino очень просто. Нужно подключить всего четыре провода.

Начните с подключения красного провода (VCC) датчика TFMini-S к выходу 5V Arduino, а чёрного провода (GND) — к выводу GND Arduino.

Теперь подключите белый провод (RXD/SDA) датчика TFMini-S к цифровому пину 3 Arduino, а зелёный провод (TXD/SCL) — к цифровому пину 2 Arduino, поскольку мы будем использовать программный UART.

Изображение ниже показывает, как собрать схему.

Подключение LiDAR-датчика TFMini-S к Arduino

Пример кода для Arduino

Теперь, когда всё подключено, давайте запустим простой скетч для демонстрации возможностей датчика TFMini-S.

#include <SoftwareSerial.h>   //header file of software serial port
SoftwareSerial Serial1(2, 3); //define software serial port name as Serial1 and define pin2 as RX & pin3 as TX

int dist;                     //actual distance measurements of LiDAR
int strength;                 //signal strength of LiDAR
int check;                    //save check value
int i;
int uart[9];                   //save data measured by LiDAR
const int HEADER = 0x59;      //frame header of data package


void setup()
{
  Serial.begin(9600);         //set bit rate of serial port connecting Arduino with computer
  Serial1.begin(115200);      //set bit rate of serial port connecting LiDAR with Arduino
}


void loop() {
  if (Serial1.available())                //check if serial port has data input
  {
    if (Serial1.read() == HEADER)        //assess data package frame header 0x59
    {
      uart[0] = HEADER;
      if (Serial1.read() == HEADER)      //assess data package frame header 0x59
      {
        uart[1] = HEADER;
        for (i = 2; i < 9; i++)         //save data in array
        {
          uart[i] = Serial1.read();
        }
        check = uart[0] + uart[1] + uart[2] + uart[3] + uart[4] + uart[5] + uart[6] + uart[7];
        if (uart[8] == (check & 0xff))        //verify the received data as per protocol
        {
          dist = uart[2] + uart[3] * 256;     //calculate distance value
          strength = uart[4] + uart[5] * 256; //calculate signal strength value
          Serial.print("distance = ");
          Serial.print(dist);                 //output measure distance value of LiDAR
          Serial.print('\t');
          Serial.print("strength = ");
          Serial.print(strength);             //output signal strength value
          Serial.print('\n');
        }
      }
    }
  }
}

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

Попробуйте направить датчик на различные объекты вокруг вас. Вы должны увидеть, как начнут отображаться измеренные расстояния.

Подключение LiDAR-датчика TFMini-S к Arduino

Если информация не отображается, убедитесь, что TFMini-S правильно подключён; при включении красный свет должен быть виден внутри передающей линзы, если смотреть спереди.

Программное обеспечение TFMini

Программное обеспечение TFMini — это мощный инструмент для тестирования датчиков TFMini. Это бесплатная программа, но она работает только на платформе Windows.

Вы можете скачать эту программу с `официального сайта Benewake `_.

Подключение TFMini к программе

Для использования программного обеспечения TFMini подключите TFMini-S к ПК с помощью USB-TTL конвертера. Просто убедитесь, что вы подаёте 5В на VCC.

Подключение LiDAR-датчика TFMini-S к Arduino

Использование программного обеспечения TFMini

Сама программа поставляется в виде портативного RAR-архива. Скачайте его и распакуйте в папку по вашему выбору. Запустите WINCC_TF.exe.

Программа запустится, как показано ниже.

Подключение LiDAR-датчика TFMini-S к Arduino

Найдите раздел настроек и выберите TFMiniS в качестве типа продукта. Далее выберите COM-порт, к которому подключён TFMini-S. Наконец, нажмите кнопку Connect (Подключить).

Подключение LiDAR-датчика TFMini-S к Arduino

После подключения устройства программа начнёт отображать осциллограмму расстояния по времени в разделе «Time Line Chart». Ниже в разделе «Real Time Data» отображаются текущее расстояние (Dist), количество эффективных точек данных в секунду (Effective Points) и уровень сигнала (Strength).

Подключение LiDAR-датчика TFMini-S к Arduino