Оглавление:

Benewake TFmini - недорогой LiDAR с Teensy 3.5: 3 шага
Benewake TFmini - недорогой LiDAR с Teensy 3.5: 3 шага

Видео: Benewake TFmini - недорогой LiDAR с Teensy 3.5: 3 шага

Видео: Benewake TFmini - недорогой LiDAR с Teensy 3.5: 3 шага
Видео: ЧТО ТАКОЕ ЛИДАР?! ОБЗОР, ТЕСТ, РАЗБОРКА 2024, Июль
Anonim
Benewake TFmini - Недорогой LiDAR с Teensy 3.5
Benewake TFmini - Недорогой LiDAR с Teensy 3.5

Устройство Benewake TFmini LiDAR - это небольшой, очень легкий датчик LiDAR, стоимость которого составляет около 50 канадских долларов. Документация хорошая, но неполная. Он предоставил подробную информацию о получении данных от датчика, но забыл упомянуть сигнал, необходимый для перевода датчика в режим по умолчанию, чтобы он действительно отправлял данные. К счастью, это было в отладочном документе.

Это то, что у меня сработало, и с этим устройством действительно легко работать.

Я решил использовать Teensy 3.5, так как он имеет несколько последовательных портов HW, этого более чем достаточно, чтобы получать данные и обрабатывать их, не допуская накопления данных. Ради интереса я использовал библиотеку Teensy Threading, чтобы отделить получение данных от остальной части кода.

Шаг 1. Подключение TFmini к Teensy 3.5 (аналогично для Arduino Mega)

Подключение TFmini к Teensy 3.5 (аналогично Arduino Mega)
Подключение TFmini к Teensy 3.5 (аналогично Arduino Mega)

В этом примере требуются два последовательных подключения: одно к TFmini и одно для отображения результатов на вашем компьютере. По этой причине и, насколько я могу судить, только по этой причине, этот конкретный пример не будет работать ни с чем ниже Arduino Mega или Teensy 3.x.

При этом для приложений, не требующих последовательного вывода для печати на экране компьютера, тот же проект должен быть адаптируемым.

Использование прилагаемого жгута проводов:

1) подключите черный провод к Teensy GND (при использовании разностного источника постоянного тока убедитесь, что земля также идет на GND на Teensy)

2) подключите красный провод к Teensy Vin (или источнику 5VDC)

3) подключите белый провод (TFmini RX) к контакту 1 на Teensy (Serial1 TX)

4) подключите зеленый провод (TFmini TX) к контакту 0 на Teensy (Serial RX)

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

Шаг 2. Код для его запуска

Используйте следующий код (для Teensy 3.5) или загрузите прикрепленный файл:

Для Arduino Mega многопоточность, скорее всего, не будет работать. Переместите код из функции readLiDAR в основной цикл и удалите все, что связано с потоками.

#include #include "TeensyThreads.h"

// Используя прилагаемый кабель:

// - Черный = GND (подключен к GND) // - Красный = 5V (4.5 - 6.0V) (подключен к Vin на Teensy 3.5 или 5V на Arduino) // - Белый = TFmini RX (он же подключается к микроконтроллеру TX, pin1 на Teensy 3.5) // - Зеленый = TFmini TX (также известный как подключение к микроконтроллеру RX, pin0 на Teensy 3.5) // ПРИМЕЧАНИЕ: для этого скетча вам понадобится микроконтроллер с дополнительными последовательными портами помимо того, который подключен к USB-кабелю / / Это включает Arduino MEGA (используйте Serial1), Teensy (3.x) (используйте одно из доступных последовательных подключений HW)

изменчивый int liDARval = 0;

void readLiDAR () {

// Формат данных для Benewake TFmini // =============================== // Всего 9 байт на сообщение: // 1) 0x59 // 2) 0x59 // 3) Dist_L (младшие 8 бит) // 4) Dist_H (старшие 8 бит) // 5) Strength_L (младшие 8 бит) // 6) Strength_H (старшие 8 бит) // 7) Зарезервированные байты // 8) Исходная степень качества сигнала // 9) Бит четности контрольной суммы (младшие 8 бит), контрольная сумма = Byte1 + Byte2 +… + Byte8. Это всего лишь младшие 8 бит. read {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // байты 1 и 2 {unsigned int t1 = Serial1.read (); // байт 3 = Dist_L без знака int t2 = Serial1.read (); // байт 4 = Dist_H t2 << = 8; t2 + = t1; liDARval = t2; t1 = Serial1.read (); // байт 5 = Strength_L t2 = Serial1.read (); // байт 6 = Strength_H t2 << = 8; t2 + = t1; для (int я = 0; я <3; я ++) Serial1.read (); // байты 7, 8, 9 игнорируются}}}}

установка void ()

{Serial1.begin (115200); // HW Serial для TFmini Serial.begin (115200); // Последовательный вывод через USB на компьютер delay (100); // Даем немного времени для начала // Установите стандартный режим вывода Serial1.write (0x42); Serial1.write (0x57); Serial1.write (0x02); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x01); Serial1.write (0x06); // Настраиваем поток для чтения последовательного ввода из TFmini threads.addThread (readLiDAR); }

пустой цикл ()

{задержка (10); // Не хочу слишком часто читать образцы TFmini на 100 Гц Serial.println (liDARval); }

Шаг 3. Использование Arduino IDE Просмотр результатов в последовательном плоттере

Использование Arduino IDE Просмотр результатов на последовательном плоттере
Использование Arduino IDE Просмотр результатов на последовательном плоттере

Вы можете использовать любой метод, который захотите, но IDE Arduino будет хорошо отображать результаты.

Подключитесь к Teensy и откройте Serial Monitor. Убедитесь, что скорость передачи установлена на 115200.

Рекомендуемые: