Obsah:

Benewake TFmini - levný LiDAR s kroky Teensy 3,5: 3
Benewake TFmini - levný LiDAR s kroky Teensy 3,5: 3

Video: Benewake TFmini - levný LiDAR s kroky Teensy 3,5: 3

Video: Benewake TFmini - levný LiDAR s kroky Teensy 3,5: 3
Video: Benewake TFmini-S — лазерный дальномер на 12 метров для Arduino и Raspberry. Железки Амперки 2024, Červenec
Anonim
Benewake TFmini - levný LiDAR s Teensy 3.5
Benewake TFmini - levný LiDAR s Teensy 3.5

Jednotka Benewake TFmini LiDAR je malý, velmi lehký snímač LiDAR za přibližně 50 USD v Kanadě. Dokumentace byla dobrá, ale neúplná. Poskytoval podrobnosti o příjmu dat ze senzoru, ale zapomněl zmínit signál potřebný k uvedení senzoru do výchozího režimu, aby data skutečně odeslal. Naštěstí to bylo v ladicím dokumentu.

Takže to je to, co pro mě fungovalo a je to opravdu snadné zařízení, se kterým se pracuje.

Rozhodl jsem se použít Teensy 3.5, protože má více sériových portů HW, je dostatečně rychlý na to, aby přijímal data a zpracovával je, aniž by je nechal hromadit. Jen pro zajímavost jsem použil knihovnu Teensy Threading k oddělení získávání dat od zbytku kódu.

Krok 1: Připojení TFmini k Teensy 3.5 (podobné pro Arduino Mega)

Připojení TFmini k Teensy 3.5 (podobné pro Arduino Mega)
Připojení TFmini k Teensy 3.5 (podobné pro Arduino Mega)

Tento příklad vyžaduje dvě sériová připojení: jedno k TFmini a jedno k zobrazení výsledků na vašem počítači. Z tohoto důvodu, a pokud mohu říci, pouze z tohoto důvodu, tento konkrétní příklad nebude fungovat na ničem pod Arduino Mega nebo Teensy 3.x.

Jak již bylo řečeno, pro aplikace, které nevyžadují sériový výstup k tisku na obrazovku počítače, by měl být stejný projekt přizpůsobitelný.

Použití přiloženého kabelového svazku:

1) připojte černý vodič k Teensy GND (pokud používáte rozdílový zdroj VDC, zajistěte, aby uzemnění také směřovalo k GND na Teensy)

2) připojte červený vodič k Teensy Vin (nebo zdroj 5VDC)

3) Připojte bílý vodič (TFmini RX) ke kolíku 1 na Teensy (Serial1 TX)

4) Připojte zelený vodič (TFmini TX) ke kolíku 0 na Teensy (Serial RX)

Přiložený kabelový svazek byl příliš malý na to, abych s ním mohl pracovat na desce s chlebem, a tak jsem odřízl konec naproti TFmini a připájel jsem vodiče k prkénku, přidal konektor JST do rozvaděče a vytvořil propojku JST na muže kabelový svazek.

Krok 2: Kód pro jeho spuštění

Použijte následující kód (pro Teensy 3.5) nebo si stáhněte přiložený soubor:

U Arduino Mega nebude závitování pravděpodobně fungovat. Přesuňte kód z funkce readLiDAR do hlavní smyčky a odeberte vše, co souvisí s navlékáním vláken.

#include #include "TeensyThreads.h"

// Pomocí dodávaného kabelu:

// - Black = GND (připojeno k GND) // - Red = 5V (4,5 - 6,0V) (připojeno k Vin na Teensy 3,5 nebo 5V na Arduino) // - White = TFmini RX (aka. Připojit k mikrokontroléru TX, pin1 na Teensy 3.5) // - Zelená = TFmini TX (aka. připojit k mikrokontroléru RX, pin0 na Teensy 3.5) // POZNÁMKA: pro tuto skicu potřebujete mikrokontrolér s dalšími sériovými porty za hranicí jednoho připojeného ke kabelu USB / / To zahrnuje Arduino MEGA (použijte Serial1), Teensy (3.x) (použijte jedno z dostupných HW sériových připojení)

volatile int liDARval = 0;

void readLiDAR () {

// Formát dat pro Benewake TFmini // =================================== // Celkem 9 bajtů na zprávu: // 1) 0x59 // 2) 0x59 // 3) Dist_L (low 8bit) // 4) Dist_H (high 8bit) // 5) Strength_L (low 8bit) // 6) Strength_H (high 8bit) // 7) Reserved bytes // 8) Původní stupeň kvality signálu // 9) Parita kontrolního součtu (nízký 8bit), kontrolní součet = Byte1 +Byte2 +… +Byte8. Toto je pouze nízkých 8 bitů, zatímco (1) {// Pokračujte navždy, zatímco (Serial1.available ()> = 9) // Když je k dispozici alespoň 9 bajtů dat (očekávaný počet bajtů pro 1 signál), pak read {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // byte 1 and byte 2 {unsigned int t1 = Serial1.read (); // byte 3 = Dist_L unsigned int t2 = Serial1.read (); // byte 4 = Dist_H t2 << = 8; t2 += t1; liDARval = t2; t1 = Serial1.read (); // byte 5 = Síla_L t2 = Serial1.read (); // byte 6 = Síla_H t2 << = 8; t2 += t1; pro (int i = 0; i <3; i ++) Serial1.read (); // byte 7, 8, 9 jsou ignorovány}}}}

neplatné nastavení ()

{Serial1.begin (115200); // HW Serial pro TFmini Serial.begin (115200); // Zpoždění sériového výstupu přes USB do počítače (100); // Dejte trochu času na spuštění // Nastavit na standardní výstupní režim Serial1.write (0x42); Serial1.write (0x57); Serial1.write (0x02); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x01); Serial1.write (0x06); // Instalační vlákno pro čtení sériového vstupu z vláken TFmini.addThread (readLiDAR); }

prázdná smyčka ()

{zpoždění (10); // Nechcete příliš často číst jako vzorky TFmini na 100 Hz Serial.println (liDARval); }

Krok 3: Použití Arduino IDE Zobrazit výsledky v sériovém plotru

Pomocí Arduino IDE zobrazte výsledky v sériovém plotru
Pomocí Arduino IDE zobrazte výsledky v sériovém plotru

Můžete použít jakoukoli metodu, kterou byste chtěli, ale IDE Arduina pěkně vykreslí výsledky.

Připojte se k Teensy a otevřete Serial Monitor. Ujistěte se, že je přenosová rychlost nastavena na 115200.

Doporučuje: