Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Устройство Benewake TFmini LiDAR - это небольшой, очень легкий датчик LiDAR, стоимость которого составляет около 50 канадских долларов. Документация хорошая, но неполная. Он предоставил подробную информацию о получении данных от датчика, но забыл упомянуть сигнал, необходимый для перевода датчика в режим по умолчанию, чтобы он действительно отправлял данные. К счастью, это было в отладочном документе.
Это то, что у меня сработало, и с этим устройством действительно легко работать.
Я решил использовать Teensy 3.5, так как он имеет несколько последовательных портов HW, этого более чем достаточно, чтобы получать данные и обрабатывать их, не допуская накопления данных. Ради интереса я использовал библиотеку Teensy Threading, чтобы отделить получение данных от остальной части кода.
Шаг 1. Подключение 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 Просмотр результатов в последовательном плоттере
Вы можете использовать любой метод, который захотите, но IDE Arduino будет хорошо отображать результаты.
Подключитесь к Teensy и откройте Serial Monitor. Убедитесь, что скорость передачи установлена на 115200.