Sadržaj:

Benewake TFmini - jeftin LiDAR s tinejdžerskim koracima 3,5: 3
Benewake TFmini - jeftin LiDAR s tinejdžerskim koracima 3,5: 3

Video: Benewake TFmini - jeftin LiDAR s tinejdžerskim koracima 3,5: 3

Video: Benewake TFmini - jeftin LiDAR s tinejdžerskim koracima 3,5: 3
Video: Benewake TFmini-S — лазерный дальномер на 12 метров для Arduino и Raspberry. Железки Амперки 2024, Studeni
Anonim
Benewake TFmini - jeftin LiDAR s tinejdžerima 3.5
Benewake TFmini - jeftin LiDAR s tinejdžerima 3.5

Benewake TFmini LiDAR jedinica je mali, vrlo lagani LiDAR senzor za kanadskih oko 50 USD. Dokumentacija je bila dobra, ali nepotpuna. Pružao je pojedinosti 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 pogrešaka.

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

Odlučio sam se za korištenje Teensyja 3.5 jer ima više serijskih priključaka HW, 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 dobivanja podataka od ostatka koda.

Korak 1: Spajanje TFminija 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, a drugu za prikaz rezultata na vašem računalu. Iz tog 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 koje ne zahtijevaju serijski izlaz za ispis na ekranu računala, isti bi projekt trebao biti prilagodljiv.

Pomoću uključenog žičanog pojasa:

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 mi je premalen za rad na ploči za kruh, pa sam odrezao kraj nasuprot TFminija, i lemio žice na ploču, dodao JST priključak na ploču i napravio JST na muški kratkospojnik žičani kabelski svežanj.

Korak 2: Kôd za pokretanje

Upotrijebite 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) // - Zeleni = TFmini TX (poznat i kao spajanje na mikrokontroler 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)

hlapljivi 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) Rezervirani bajtovi // 8) Izvorni stupanj kvalitete signala // 9) Bit parnosti kontrolne sume (niskih 8 bita), Kontrolna suma = Byte1 +Byte2 +… +Byte8. Ipak, ovo je samo niskih 8 bita (1) {// Nastavite trajati zauvijek (Serial1.available ()> = 9) // Kad 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 = Serijski1.čitaj (); // bajt 5 = Snaga_L t2 = Serijski1.čitaj (); // 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 Serija za TFmini Serial.begin (115200); // Kašnjenje serijskog izlaza putem USB -a na računalo (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 uzorke TFmini 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.

Spojite se na Teensy i otvorite Serial Monitor. Provjerite je li brzina prijenosa postavljena na 115200.

Preporučeni: