INHOUDSOPGAWE:

Benewake TFmini - Goedkoop LiDAR met Teensy 3.5: 3 -stappe
Benewake TFmini - Goedkoop LiDAR met Teensy 3.5: 3 -stappe

Video: Benewake TFmini - Goedkoop LiDAR met Teensy 3.5: 3 -stappe

Video: Benewake TFmini - Goedkoop LiDAR met Teensy 3.5: 3 -stappe
Video: LoRaWAN LWHD-WM420 Long-Distance Wireless Inclinometer Accuracy 0.05° 2024, Julie
Anonim
Benewake TFmini - goedkoop LiDAR met Teensy 3.5
Benewake TFmini - goedkoop LiDAR met Teensy 3.5

Die Benewake TFmini LiDAR -eenheid is 'n klein, baie ligte LiDAR -sensor vir ongeveer $ 50 Kanadese. Dokumentasie was goed, maar onvolledig. Dit het besonderhede verskaf oor die ontvangs van data van die sensor, maar het vergeet om die sein te noem wat nodig is om die sensor in die standaardmodus te plaas sodat dit die data eintlik stuur. Dit was gelukkig in die ontfoutingsdokument.

Dit is dus wat vir my gewerk het, en dit is regtig 'n maklike toestel om mee te werk.

Ek het gekies om 'n Teensy 3.5 te gebruik, aangesien dit verskeie HW Serial -poorte het, dit is meer as vinnig genoeg om data te ontvang en te verwerk sonder dat data ophoop. Net vir die plesier gebruik ek die Teensy Threading -biblioteek om die data van die res van die kode te skei.

Stap 1: Koppel TFmini aan Teensy 3.5 (soortgelyk aan Arduino Mega)

Koppel TFmini aan Teensy 3.5 (soortgelyk aan Arduino Mega)
Koppel TFmini aan Teensy 3.5 (soortgelyk aan Arduino Mega)

Hierdie voorbeeld vereis twee seriële verbindings: een na die TFmini en een om resultate op u rekenaar te vertoon. Om hierdie rede, en sover ek kan weet, slegs hierdie rede, werk hierdie spesifieke voorbeeld nie op iets onder 'n Arduino Mega of Teensy 3.x.

Dit gesê, dieselfde programme moet aanpasbaar wees vir toepassings wat nie 'n seriële uitset benodig om na die rekenaarskerm te druk nie.

Gebruik die ingeslote draadkabel:

1) verbind swart draad met Teensy GND (as u 'n verskil -VDC -bron gebruik, maak seker dat die grond ook na GND op Teensy gaan)

2) koppel die rooi draad aan Teensy Vin (of 5VDC bron)

3) verbind wit draad (TFmini RX) aan pen 1 op Teensy (Serial1 TX)

4) koppel groen draad (TFmini TX) aan pen 0 op Teensy (Serial RX)

Die meegeleverde gordel was te klein vir my om op 'n broodbord mee te werk, so ek sny die punt oorkant die TFmini af en soldeer die drade aan 'n broodbord, voeg 'n JST -aansluiting by die breekbord en maak 'n JST aan manlike trui draad harnas.

Stap 2: Kode om dit uit te voer

Gebruik die volgende kode (vir Teensy 3.5) of laai die aangehegte lêer af:

Vir Arduino Mega sal draadwerk waarskynlik nie werk nie. Beweeg kode van readLiDAR -funksie na hooflus, en verwyder alles wat verband hou met threading.

#include #include "TeensyThreads.h"

// Gebruik die meegeleverde kabel:

// - Swart = GND (gekoppel aan GND) // - Rooi = 5V (4.5 - 6.0V) (gekoppel aan Vin op Teensy 3.5, of 5V op Arduino) // - Wit = TFmini RX (ook gekoppel aan mikrobeheerder TX, pin1 op Teensy 3.5) // - Groen = TFmini TX (ook gekoppel aan mikrokontroller RX, pin0 op Teensy 3.5) // OPMERKING: vir hierdie skets benodig u 'n mikrobeheerder met ekstra seriële poorte buite die een wat aan die USB -kabel gekoppel is / / Dit sluit Arduino MEGA (gebruik Serial1), Teensy (3.x) in (gebruik een van die beskikbare HW Serial -verbindings)

vlugtige int liDARval = 0;

leegte readLiDAR () {

// Dataformaat vir Benewake TFmini // ================================ 9 grepe totaal per boodskap: // 1) 0x59 // 2) 0x59 // 3) Dist_L (laag 8bit) // 4) Dist_H (hoog 8bit) // 5) Sterkte_L (laag 8bit) // 6) Sterkte_H (hoog 8bit) // 7) Gereserveerde grepe // 8) Oorspronklike seinkwaliteitgraad // 9) Kontrolesumpariteitsbit (lae 8bit), Checksum = Byte1 +Byte2 +… +Byte8. Dit is slegs 'n lae 8 -bits, terwyl (1) {// Hou aan vir ewig (Serial1.available ()> = 9) // Wanneer ten minste 9 grepe data beskikbaar is (verwagte aantal grepe vir 1 sein), dan lees {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // byte 1 en byte 2 {unsigned int t1 = Serial1.read (); // byte 3 = Dist_L unsigned int t2 = Serial1.read (); // greep 4 = Dist_H t2 << = 8; t2 += t1; liDARval = t2; t1 = Reeks1.lees (); // greep 5 = Sterkte_L t2 = Reeks1.lees (); // greep 6 = Sterkte_H t2 << = 8; t2 += t1; vir (int i = 0; i <3; i ++) Serial1.read (); // greep 7, 8, 9 word geïgnoreer}}}}

leemte opstelling ()

{Serial1.begin (115200); // HW Serial vir TFmini Serial.begin (115200); // Seriële uitset via USB na rekenaar vertraging (100); // Gee 'n bietjie tyd om te begin // Stel in op Standard Output -modus Serial1.write (0x42); Reeks1.skryf (0x57); Reeks1.skryf (0x02); Reeks1.skryf (0x00); Reeks1.skryf (0x00); Reeks1.skryf (0x00); Reeks1.skryf (0x01); Reeks1.skryf (0x06); // Stel draad op om seriële invoer van TFmini -drade te lees. AddThread (readLiDAR); }

leemte lus ()

{vertraging (10); // Wil nie te gereeld as TFmini -monsters by 100Hz Serial.println (liDARval) lees nie; }

Stap 3: Die gebruik van Arduino IDE Kyk na die resultate in die serieplotter

Deur Arduino IDE te gebruik, kyk na die resultate in die serieplotter
Deur Arduino IDE te gebruik, kyk na die resultate in die serieplotter

U kan die metode gebruik wat u wil, maar Arduino's IDE sal die resultate mooi uiteensit.

Koppel aan die Teensy en maak Serial Monitor oop. Maak seker dat Baudrate ingestel is op 115200.

Aanbeveel: