Съдържание:

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 стъпки
Видео: Benewake TFmini-S — лазерный дальномер на 12 метров для Arduino и Raspberry. Железки Амперки 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 (ако използвате различен VDC източник, уверете се, че земята също преминава към 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 (ниско 8bit) // 4) Dist_H (високо 8bit) // 5) Strength_L (ниско 8bit) // 6) Strength_H (високо 8bit) // 7) Запазени байтове // 8) Оригинална степен на качество на сигнала // 9) Бит за паритет на контролната сума (нисък 8 бит), Контролна сума = Байт1 +Байт2 +… +Байт8. Това е само ниските 8 бита, докато while (1) {// Продължавайте завинаги (Serial1.available ()> = 9) // Когато са налични поне 9 байта данни (очакван брой байтове за 1 сигнал), тогава прочетете {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 = Сила_H t2 << = 8; t2 += t1; for (int i = 0; i <3; i ++) Serial1.read (); // байт 7, 8, 9 се игнорира}}}}

void setup ()

{Serial1.begin (115200); // HW сериен за TFmini Serial.begin (115200); // Сериен изход през USB към компютър забавяне (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); }

void loop ()

{забавяне (10); // Не искам да чета твърде често като проби от TFmini при 100Hz Serial.println (liDARval); }

Стъпка 3: Използване на Arduino IDE Вижте резултатите в сериен плотер

Използване на Arduino IDE Вижте резултатите в сериен плотер
Използване на Arduino IDE Вижте резултатите в сериен плотер

Можете да използвате какъвто метод искате, но IDE на Arduino ще начертае резултатите добре.

Свържете се с Teensy и отворете Serial Monitor. Уверете се, че скоростта на предаване е зададена на 115200.

Препоръчано: