Obsah:

Benewake TFmini - lacný LiDAR s nástrojom Teensy 3,5: 3 kroky
Benewake TFmini - lacný LiDAR s nástrojom Teensy 3,5: 3 kroky

Video: Benewake TFmini - lacný LiDAR s nástrojom Teensy 3,5: 3 kroky

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

Jednotka Benewake TFmini LiDAR je malý, veľmi ľahký snímač LiDAR za približne 50 dolárov v Kanade. Dokumentácia bola dobrá, ale neúplná. Poskytoval podrobnosti o príjme údajov zo senzora, ale zabudol spomenúť signál potrebný na uvedenie senzora do predvoleného režimu, aby skutočne odosielal údaje. Našťastie to bolo v ladiacom dokumente.

Takže toto sa mi osvedčilo a je to skutočne jednoduché zariadenie, s ktorým sa pracuje.

Rozhodol som sa použiť Teensy 3.5, pretože má viac sériových portov HW a je dostatočne rýchly na to, aby prijímal údaje a spracovával ich bez toho, aby sa hromadili. Len pre zaujímavosť, knižnicu Teensy Threading som použil na oddelenie získavania údajov od zvyšku kódu.

Krok 1: Pripojenie TFmini k Teensy 3.5 (podobné pre Arduino Mega)

Pripojenie TFmini k Teensy 3.5 (podobné pre Arduino Mega)
Pripojenie TFmini k Teensy 3.5 (podobné pre Arduino Mega)

Tento príklad vyžaduje dve sériové pripojenia: jedno k TFmini a druhé na zobrazenie výsledkov na vašom počítači. Z tohto dôvodu, a pokiaľ môžem povedať, iba z tohto dôvodu, tento konkrétny príklad nebude fungovať na ničom, čo je nižšie ako Arduino Mega alebo Teensy 3.x.

To znamená, že pre aplikácie, ktoré nevyžadujú sériový výstup na tlač na obrazovku počítača, by mal byť rovnaký projekt prispôsobiteľný.

Použitie priloženého káblového zväzku:

1) Pripojte čierny vodič k Teensy GND (ak používate rozdielny zdroj VDC, uistite sa, že uzemnenie ide aj na GND na Teensy)

2) Pripojte červený vodič k Teensy Vin (alebo zdroj 5 VDC)

3) Pripojte biely vodič (TFmini RX) k kolíku 1 na Teensy (Serial1 TX)

4) Pripojte zelený vodič (TFmini TX) k pinu 0 na Teensy (Serial RX)

Priložený káblový zväzok bol príliš malý na to, aby som s ním mohol pracovať na doske na chlieb, a tak som odrezal koniec oproti TFmini a spájkoval drôty na dosku, pridal som konektor JST na rozvádzač a urobil prepojku JST na mužskú prepojku. káblový zväzok.

Krok 2: Kód na jeho spustenie

Použite nasledujúci kód (pre Teensy 3.5) alebo si stiahnite priložený súbor:

V prípade Arduino Mega závitovanie pravdepodobne nebude fungovať. Presuňte kód z funkcie readLiDAR do hlavnej slučky a odstráňte všetko, čo súvisí s vytváraním vlákien.

#include #include "TeensyThreads.h"

// Použitím dodávaného kábla:

// - Čierny = GND (pripojený k GND) // - Červený = 5V (4,5 - 6,0V) (pripojený k Vin na Teensy 3,5 alebo 5V na Arduino) // - Biely = TFmini RX (aka. Pripojiť k mikrokontroléru TX, pin1 na Teensy 3.5) // - Zelený = TFmini TX (aka. pripojiť k mikrokontroléru RX, pin0 na Teensy 3.5) // POZNÁMKA: na tento náčrt potrebujete mikrokontrolér s ďalšími sériovými portami, než je ten, ktorý je pripojený k USB káblu / / To zahŕňa Arduino MEGA (použite Serial1), Teensy (3.x) (použite jedno z dostupných sériových pripojení HW)

volatile int liDARval = 0;

void readLiDAR () {

// Formát údajov pre Benewake TFmini // ==================================== // celkom 9 bajtov za správu: // 1) 0x59 // 2) 0x59 // 3) Dist_L (nízky 8bit) // 4) Dist_H (vysoký 8bit) // 5) Sila_L (nízky 8bit) // 6) Sila_H (vysoký 8bit) // 7) Rezervované bajty // 8) Pôvodný stupeň kvality signálu // 9) Paritný bit kontrolného súčtu (nízky 8 bitov), kontrolný súčet = Byte1 +Byte2 +… +Byte8. Toto je iba málo 8 bitov, zatiaľ čo (1) {// Pokračujte navždy, kým (Serial1.available ()> = 9) // Keď je k dispozícii najmenej 9 bajtov údajov (očakávaný počet bajtov pre 1 signál), potom čítať {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // byte 1 a byte 2 {unsigned int t1 = Serial1.read (); // byte 3 = Dist_L bez znamienka int t2 = Serial1.read (); // byte 4 = Dist_H t2 << = 8; t2 += t1; liDARval = t2; t1 = Serial1.read (); // byte 5 = Sila_L t2 = Serial1.read (); // byte 6 = Sila_H t2 << = 8; t2 += t1; pre (int i = 0; i <3; i ++) Serial1.read (); // bajty 7, 8, 9 sa ignorujú}}}}

neplatné nastavenie ()

{Serial1.begin (115200); // HW Serial pre TFmini Serial.begin (115200); // Sériový výstup cez USB do počítača oneskorenie (100); // Nechajte trochu času, aby sa veci mohli začať // Nastaviť na štandardný 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); // Nastaviť vlákno na čítanie sériového vstupu z vlákien TFmini.addThread (readLiDAR); }

prázdna slučka ()

{oneskorenie (10); // Nechcete čítať príliš často ako vzorky TFmini na 100 Hz Serial.println (liDARval); }

Krok 3: Použitie Arduino IDE Zobrazte výsledky v sériovom plotri

Použitie Arduino IDE Zobrazte výsledky v sériovom plotri
Použitie Arduino IDE Zobrazte výsledky v sériovom plotri

Môžete použiť akúkoľvek metódu, ktorú by ste chceli, ale IDE Arduina pekne vykreslí výsledky.

Pripojte sa k Teensy a otvorte Serial Monitor. Zaistite, aby bola prenosová rýchlosť nastavená na 115200.

Odporúča: