Sadržaj:

Benewake TFmini - jeftin LiDAR sa Teensy 3,5: 3 koraka
Benewake TFmini - jeftin LiDAR sa Teensy 3,5: 3 koraka

Video: Benewake TFmini - jeftin LiDAR sa Teensy 3,5: 3 koraka

Video: Benewake TFmini - jeftin LiDAR sa Teensy 3,5: 3 koraka
Video: Демонстрация продукта: TFMini Plus 2024, Juli
Anonim
Benewake TFmini - Jeftin LiDAR sa Teensy 3.5
Benewake TFmini - Jeftin LiDAR sa Teensy 3.5

Benewake TFmini LiDAR jedinica je mali, vrlo lagani LiDAR senzor za kanadskih približno 50 USD. Dokumentacija je bila dobra, ali nepotpuna. Pružao je detalje o primanju podataka sa senzora, ali je zaboravio spomenuti signal potreban za stavljanje senzora u zadani način rada tako da on zapravo šalje podatke. Srećom, to je bilo u dokumentu za otklanjanje grešaka.

To je ono što mi je uspjelo i zaista je jednostavan uređaj za rad.

Odlučio sam se za korištenje Teensy 3.5 jer ima više HW serijskih portova, više je nego dovoljno brz za primanje podataka i njihovu obradu bez dopuštanja gomilanja podataka. Iz zabave sam upotrijebio biblioteku Teensy Threading za odvajanje dobijanja podataka od ostatka koda.

Korak 1: Spajanje TFmini na Teensy 3.5 (slično za Arduino Mega)

Spajanje TFminija na Teensy 3.5 (slično za Arduino Mega)
Spajanje TFminija na Teensy 3.5 (slično za Arduino Mega)

Ovaj primjer zahtijeva dvije serijske veze: jednu na TFmini i jednu za prikaz rezultata na računaru. Iz ovog razloga, i koliko mogu reći, samo iz ovog razloga, ovaj primjer neće raditi na ničemu ispod Arduino Mega ili Teensy 3.x.

S obzirom na to, za aplikacije kojima nije potreban serijski izlaz za štampanje na ekranu računara, isti projekat bi trebao biti prilagodljiv.

Koristeći uključeni žičani kabelski svežanj:

1) spojite crnu žicu na Teensy GND (ako koristite različiti VDC izvor, pobrinite se da uzemljenje ide i na GND na Teensyju)

2) spojite crvenu žicu na Teensy Vin (ili 5VDC izvor)

3) spojite bijelu žicu (TFmini RX) na pin 1 na Teensyju (Serial1 TX)

4) spojite zelenu žicu (TFmini TX) na pin 0 na Teensyju (serijski RX)

Uključeni kabelski svežanj bio je premalen za rad na ploči za kruh, pa sam odrezao kraj nasuprot TFminija, i lemio žice na ploču, dodao JST konektor na ploču i napravio JST na muškom kratkospojniku žičani kabelski svežanj.

Korak 2: Kod za pokretanje

Koristite sljedeći kôd (za Teensy 3.5) ili preuzmite priloženu datoteku:

Za Arduino Mega, threading vjerojatno neće uspjeti. Premjestite kôd iz funkcije readLiDAR u glavnu petlju i uklonite sve što je povezano s navojem niti.

#include #include "TeensyThreads.h"

// Koristeći isporučeni kabel:

// - Crno = GND (spojeno na GND) // - Crveno = 5V (4.5 - 6.0V) (spojeno na Vin na Teensy 3.5 ili 5V na Arduinu) // - Bijelo = TFmini RX (poznato i kao povezivanje na mikrokontroler TX, pin1 na Teensy 3.5) // - Zeleno = TFmini TX (poznato i kao povezivanje s mikrokontrolerom RX, pin0 na Teensy 3.5) // NAPOMENA: za ovu skicu potreban vam je mikrokontroler s dodatnim serijskim priključcima osim onog spojenog na USB kabel / / Ovo uključuje Arduino MEGA (koristite Serial1), Teensy (3.x) (koristite jednu od dostupnih serijskih veza HW)

isparljiv int liDARval = 0;

void readLiDAR () {

// Format podataka za Benewake TFmini // =============================== // ukupno 9 bajtova po poruci: // 1) 0x59 // 2) 0x59 // 3) Dist_L (nisko 8bit) // 4) Dist_H (visoko 8bit) // 5) Snaga_L (nisko 8bit) // 6) Snaga_H (visoko 8bit) // 7) Rezervisani bajtovi // 8) Izvorni stupanj kvalitete signala // 9) Bit pariteta kontrolne sume (niskih 8 bita), Kontrolna suma = Byte1 +Byte2 +… +Byte8. Ovo je ipak samo niskih 8 bita while (1) {// Nastavite trajati zauvijek (Serial1.available ()> = 9) // Kada je dostupno najmanje 9 bajtova podataka (očekivani broj bajtova za 1 signal), tada read {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // bajt 1 i bajt 2 {unsigned int t1 = Serial1.read (); // bajt 3 = Dist_L bez znaka int t2 = Serial1.read (); // bajt 4 = Dist_H t2 << = 8; t2 += t1; liDARval = t2; t1 = Serial1.read (); // bajt 5 = Snaga_L t2 = Serial1.read (); // bajt 6 = Snaga_H t2 << = 8; t2 += t1; for (int i = 0; i <3; i ++) Serial1.read (); // bajtovi 7, 8, 9 se zanemaruju}}}}

void setup ()

{Serial1.begin (115200); // HW serijski broj za TFmini Serial.begin (115200); // Serijski izlaz preko USB -a na kašnjenje računara (100); // Dajte malo vremena da se stvari počnu // Postavite na standardni način izlaza Serial1.write (0x42); Serial1.write (0x57); Serial1.write (0x02); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x01); Serial1.write (0x06); // Nit za postavljanje za čitanje serijskog unosa iz TFmini niti.addThread (readLiDAR); }

void loop ()

{kašnjenje (10); // Ne želim čitati prečesto kao TFmini uzorke na 100Hz Serial.println (liDARval); }

Korak 3: Korištenje Arduino IDE -a Pogledajte rezultate u serijskom ploteru

Korištenje Arduino IDE -a Pogledajte rezultate u serijskom ploteru
Korištenje Arduino IDE -a Pogledajte rezultate u serijskom ploteru

Možete koristiti bilo koju metodu koju želite, ali Arduino IDE će lijepo iscrtati rezultate.

Povežite se na Teensy i otvorite Serial Monitor. Uvjerite se da je brzina prijenosa postavljena na 115200.

Preporučuje se: