Kazalo:

Benewake TFmini - poceni LiDAR s Teensy 3,5: 3 koraki
Benewake TFmini - poceni LiDAR s Teensy 3,5: 3 koraki

Video: Benewake TFmini - poceni LiDAR s Teensy 3,5: 3 koraki

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

Enota Benewake TFmini LiDAR je majhen, zelo lahek senzor LiDAR za približno 50 USD v Kanadi. Dokumentacija je bila dobra, vendar nepopolna. Zagotovil je podrobnosti o prejemanju podatkov od senzorja, pozabil pa je omeniti signal, potreben za preklop senzorja v privzeti način, tako da dejansko pošilja podatke. Na srečo je bilo to v dokumentu za odpravljanje napak.

To je torej tisto, kar mi je uspelo, in z njim je zelo enostavno delati.

Odločil sem se za uporabo Teensyja 3.5, saj ima več zaporednih vrat HW, kar je več kot dovolj hitro za sprejemanje podatkov in njihovo obdelavo, ne da bi se podatki kopičili. Samo za zabavo sem uporabil knjižnico Teensy Threading za ločevanje pridobivanja podatkov od preostale kode.

1. korak: Priključitev TFmini na Teensy 3.5 (podobno za Arduino Mega)

Priključitev TFmini na Teensy 3.5 (podobno za Arduino Mega)
Priključitev TFmini na Teensy 3.5 (podobno za Arduino Mega)

Ta primer zahteva dve serijski povezavi: eno na TFmini in eno za prikaz rezultatov v računalniku. Zaradi tega in kolikor lahko razumem, samo tega razloga, ta poseben primer ne bo deloval na ničemer pod Arduino Mega ali Teensy 3.x.

Kot rečeno, za aplikacije, ki ne potrebujejo serijskega izhoda za tiskanje na računalniški zaslon, bi moral biti isti projekt prilagodljiv.

S priloženim žičnim kablom:

1) priključite črno žico na Teensy GND (če uporabljate drugačen vir VDC, zagotovite, da gre tudi na GND na Teensy)

2) rdečo žico priključite na Teensy Vin (ali vir 5VDC)

3) priključite belo žico (TFmini RX) na pin 1 na Teensyju (Serial1 TX)

4) zeleno žico (TFmini TX) priključite na pin 0 na Teensyju (serijski RX)

Vključeni kabelski snop je bil premajhen za delo na plošči za kruh, zato sem odrezal konec nasproti TFminija in žice spajkal na ploščo, dodal konektor JST na omarico in naredil JST na moški mostiček žični snop.

Korak: Koda za zagon

Uporabite naslednjo kodo (za Teensy 3.5) ali prenesite priloženo datoteko:

Za Arduino Mega nitanje verjetno ne bo delovalo. Premaknite kodo iz funkcije readLiDAR v glavno zanko in odstranite vse, kar je povezano z navojem.

#include #include "TeensyThreads.h"

// z uporabo priloženega kabla:

// - črna = GND (priključena na GND) // - rdeča = 5V (4.5 - 6.0V) (priključena na Vin na Teensy 3.5 ali 5V na Arduino) // - bela = TFmini RX (aka. Priključitev na mikrokrmilnik TX, pin1 na Teensy 3.5) // - Zelena = TFmini TX (aka. povežite se z mikrokrmilnikom RX, pin0 na Teensy 3.5) // OPOMBA: za to skico potrebujete mikrokrmilnik z dodatnimi zaporednimi vrati poleg tistega, ki je priključen na kabel USB / / To vključuje Arduino MEGA (uporabite Serial1), Teensy (3.x) (uporabite eno od razpoložljivih serijskih povezav HW)

hlapni int liDARval = 0;

void readLiDAR () {

// Podatkovna oblika za Benewake TFmini // =============================== // skupaj 9 bajtov na sporočilo: // 1) 0x59 // 2) 0x59 // 3) Dist_L (nizka 8bit) // 4) Dist_H (visoka 8bit) // 5) Strength_L (nizka 8bit) // 6) Strength_H (visoka 8bit) // 7) Rezervirani bajti // 8) Prvotna stopnja kakovosti signala // 9) Bit paritete kontrolne vsote (nizka 8bit), Kontrolna vsota = Byte1 +Byte2 +… +Byte8. To je le nizkih 8 bitov, medtem ko (1) {// Nadaljujte za vedno (Serial1.available ()> = 9) // Ko je na voljo vsaj 9 bajtov podatkov (pričakovano število bajtov za 1 signal), potem beri {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // bajt 1 in bajt 2 {unsigned int t1 = Serial1.read (); // bajt 3 = Dist_L brez podpisa int t2 = Serial1.read (); // bajt 4 = Dist_H t2 << = 8; t2 += t1; liDARval = t2; t1 = Serial1.read (); // bajt 5 = Strength_L t2 = Serial1.read (); // bajt 6 = Moč_H t2 << = 8; t2 += t1; for (int i = 0; i <3; i ++) Serial1.read (); // bajti 7, 8, 9 se prezrejo}}}}

void setup ()

{Serial1.begin (115200); // Serija HW za serijo TFmini.begin (115200); // Zakasnitev serijskega izhoda prek USB -ja v računalnik (100); // Dajte malo časa, da se stvari začnejo // Nastavite na standardni način izhoda Serial1.write (0x42); Serial1.write (0x57); Serial1.write (0x02); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x01); Serial1.write (0x06); // Nastavitvena nit za branje serijskega vnosa iz niti TFmini.addThread (readLiDAR); }

void loop ()

{zamuda (10); // Ne želim brati prepogosto kot vzorce TFmini pri 100Hz Serial.println (liDARval); }

3. korak: Uporaba Arduino IDE Oglejte si rezultate v serijskem ploterju

Uporaba Arduino IDE Oglejte si rezultate v serijskem ploterju
Uporaba Arduino IDE Oglejte si rezultate v serijskem ploterju

Uporabite lahko katero koli metodo, ki jo želite, vendar bo Arduinov IDE lepo prikazal rezultate.

Povežite se s sistemom Teensy in odprite Serial Monitor. Prepričajte se, da je hitrost prenosa 115200.

Priporočena: