Sisällysluettelo:

Benewake TFmini - Edullinen LiDAR, jossa Teensy 3.5: 3 askelta
Benewake TFmini - Edullinen LiDAR, jossa Teensy 3.5: 3 askelta

Video: Benewake TFmini - Edullinen LiDAR, jossa Teensy 3.5: 3 askelta

Video: Benewake TFmini - Edullinen LiDAR, jossa Teensy 3.5: 3 askelta
Video: Benewake TFmini-S — лазерный дальномер на 12 метров для Arduino и Raspberry. Железки Амперки 2024, Marraskuu
Anonim
Benewake TFmini - Edullinen LiDAR ja Teensy 3.5
Benewake TFmini - Edullinen LiDAR ja Teensy 3.5

Benewake TFmini LiDAR -yksikkö on pieni, erittäin kevyt LiDAR -anturi noin 50 dollarilla Kanadasta. Dokumentaatio oli hyvä, mutta epätäydellinen. Se antoi tietoja anturin vastaanottamisesta, mutta unohti mainita signaalin, joka tarvitaan anturin asettamiseen oletustilaan, jotta se todella lähettää tiedot. Onneksi se oli virheenkorjausasiakirjassa.

Joten tämä toimi minulle, ja se on todella helppo laite.

Päätin käyttää Teensy 3.5: tä, koska siinä on useita HW -sarjaportteja, se on enemmän kuin tarpeeksi nopea vastaanottamaan dataa ja käsittelemään sitä antamatta tietojen kasaantua. Vain huvin vuoksi käytin Teensy Threading -kirjastoa erottamaan tietojen saamisen muusta koodista.

Vaihe 1: TFminin yhdistäminen Teensy 3.5: een (samanlainen Arduino Megalle)

TFminin yhdistäminen Teensy 3.5: een (samanlainen Arduino Megalle)
TFminin yhdistäminen Teensy 3.5: een (samanlainen Arduino Megalle)

Tämä esimerkki vaatii kaksi sarjayhteyttä: toisen TFmini -laitteeseen ja toisen tulosten näyttämiseen tietokoneellasi. Tästä syystä ja sikäli kuin voin kertoa, vain tästä syystä, tämä esimerkki ei toimi millään Arduino Mega- tai Teensy 3.x -version alapuolella.

Tästä huolimatta sovellusten, jotka eivät vaadi sarjalähtöä tietokoneen näytölle tulostamiseen, saman projektin pitäisi olla mukautettavissa.

Mukana tulevan johdinsarjan käyttö:

1) liitä musta johto Teensy GND: hen (jos käytät eri VDC -lähdettä, varmista, että myös maa menee Teensyn GND: hen)

2) liitä punainen johto Teensy Viniin (tai 5 VDC: n lähteeseen)

3) liitä valkoinen johto (TFmini RX) nastaan 1 Teensy (Serial1 TX)

4) liitä vihreä johto (TFmini TX) nastaan 0 Teensy (Serial RX)

Mukana toimitettu johtosarja oli liian pieni, jotta voisin työskennellä leipälevyllä, joten leikkasin TFminin vastakkaisen pään irti ja juotin johdot leipälevylle, lisäsin JST -liittimen katkaisulautaan ja tein JST: n uroshyppyyn johtosarja.

Vaihe 2: Koodi sen suorittamiseen

Käytä seuraavaa koodia (Teensy 3.5) tai lataa liitteenä oleva tiedosto:

Arduino Megan langat eivät todennäköisesti toimi. Siirrä koodi readLiDAR -toiminnosta pääsilmukkaan ja poista kaikki kierteitykseen liittyvä.

#Sisällytä #Sisällytä "TeensyThreads.h"

// Käyttämällä mukana toimitettua kaapelia:

// - Musta = GND (kytketty GND: hen) // - Punainen = 5 V (4,5 - 6,0 V) (kytketty Viiniin Teensy 3,5: ssä tai 5 V Arduinossa) // - Valkoinen = TFmini RX (aka. Yhdistä mikrokontrolleriin TX, nasta 1 Teensy 3.5: ssä) // - Vihreä = TFmini TX (eli liitäntä mikrokontrolleriin RX, pin0 Teensy 3.5: ssä) // HUOMAUTUS: tätä luonnosta varten tarvitset mikro -ohjaimen, jossa on muita sarjaportteja kuin USB -kaapeliin liitetty / Tämä sisältää Arduino MEGA (käytä Serial1), Teensy (3.x) (käytä yhtä käytettävissä olevista HW -sarjaliitännöistä)

haihtuva int liDARval = 0;

void readLiDAR () {

// Benewake TFminin tietomuoto // =============================== // Yhteensä 9 tavua per viesti: // 1) 0x59 // 2) 0x59 // 3) Dist_L (matala 8bit) // 4) Dist_H (korkea 8bit) // 5) Strength_L (low 8bit) // 6) Strength_H (korkea 8bit) // 7) Varatut tavut // 8) Alkuperäinen signaalin laatu // 9) Tarkistussumman pariteettibitti (matala 8 -bittinen), Tarkistussumma = tavu1 +tavu2 +… +tavu8. Tämä on vain alhainen 8 -bittinen, vaikka (1) {// Jatka ikuisesti (Serial1.available ()> = 9) // Kun vähintään 9 tavua dataa on saatavilla (odotettu tavumäärä yhdelle signaalille), lue {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // tavu 1 ja tavu 2 {unsigned int t1 = Serial1.read (); // tavu 3 = Dist_L unsigned int t2 = Serial1.read (); // tavu 4 = Dist_H t2 << = 8; t2 += t1; liDARval = t2; t1 = Sarja1.luku (); // tavu 5 = Vahvuus_L t2 = Sarja1.luku (); // tavu 6 = Vahvuus_H t2 << = 8; t2 += t1; for (int i = 0; i <3; i ++) Serial1.read (); // tavu 7, 8, 9 ohitetaan}}}}

mitätön asennus ()

{Sarja1.alku (115200); // HW -sarja TFmini Serial.begin (115200); // Sarjalähtö USB: n kautta tietokoneeseen viive (100); // Anna vähän aikaa asioiden alkamiselle // Aseta Standard Output -tilaan Serial1.write (0x42); Serial1.write (0x57); Serial1.write (0x02); Sarja1. Kirjoita (0x00); Sarja1. Kirjoita (0x00); Sarja1. Kirjoita (0x00); Serial1.write (0x01); Serial1.write (0x06); // Asetuslanka sarjatulon lukemiseen TFmini -säikeistä. AddThread (readLiDAR); }

tyhjä silmukka ()

{viive (10); // En halua lukea liian usein TFmini -näytteinä 100 Hz: n sarjassa.println (liDARval); }

Vaihe 3: Arduino IDE: n käyttäminen Näytä tulokset sarjaplotterissa

Arduino IDE -näkymän käyttäminen Näytä tulokset sarjaplotterissa
Arduino IDE -näkymän käyttäminen Näytä tulokset sarjaplotterissa

Voit käyttää mitä tahansa haluamaasi menetelmää, mutta Arduinon IDE piirtää tulokset hienosti.

Muodosta yhteys Teensyyn ja avaa Serial Monitor. Varmista, että Baudrate on asetettu arvoon 115200.

Suositeltava: