Cuprins:

Benewake TFmini - LiDAR ieftin cu Teensy 3.5: 3 Pași
Benewake TFmini - LiDAR ieftin cu Teensy 3.5: 3 Pași

Video: Benewake TFmini - LiDAR ieftin cu Teensy 3.5: 3 Pași

Video: Benewake TFmini - LiDAR ieftin cu Teensy 3.5: 3 Pași
Video: How to set an Automation Scenario with the WiFi Motion Sensor - TLL331121 2024, Noiembrie
Anonim
Benewake TFmini - LiDAR ieftin cu Teensy 3.5
Benewake TFmini - LiDAR ieftin cu Teensy 3.5

Unitatea Benewake TFmini LiDAR este un senzor LiDAR mic, foarte ușor, pentru aproximativ 50 dolari canadieni. Documentarea a fost bună, dar incompletă. Acesta a furnizat detalii despre primirea datelor de la senzor, dar a uitat să menționeze semnalul necesar pentru a pune senzorul în modul implicit, astfel încât să trimită efectiv datele. Din fericire, acest lucru se afla în documentul de depanare.

Deci, acest lucru a funcționat pentru mine și este cu adevărat un dispozitiv ușor de utilizat.

Am ales să folosesc un Teensy 3.5 deoarece are mai multe porturi Seriale HW, este mai mult decât rapid pentru a primi date și a le procesa fără a lăsa datele să se acumuleze. Doar pentru distracție, am folosit biblioteca Teensy Threading pentru a separa obținerea datelor de restul codului.

Pasul 1: Conectarea TFmini la Teensy 3.5 (similar pentru Arduino Mega)

Conectarea TFmini la Teensy 3.5 (similar pentru Arduino Mega)
Conectarea TFmini la Teensy 3.5 (similar pentru Arduino Mega)

Acest exemplu necesită două conexiuni seriale: una la TFmini și una pentru a afișa rezultatele pe computer. Din acest motiv și, din câte îmi dau seama, doar acest motiv, acest exemplu particular nu va funcționa pe nimic sub un Arduino Mega sau Teensy 3.x.

Acestea fiind spuse, pentru aplicațiile care nu necesită ieșire serială pentru a imprima pe ecranul computerului, același proiect ar trebui să fie adaptabil.

Utilizarea cablajului inclus:

1) conectați firul negru la Teensy GND (dacă utilizați sursa VDC diferențială, asigurați-vă că pământul merge și la GND pe Teensy)

2) conectați firul roșu la Teensy Vin (sau sursa de 5VDC)

3) conectați firul alb (TFmini RX) la pinul 1 de pe Teensy (Serial1 TX)

4) conectați firul verde (TFmini TX) la pinul 0 de pe Teensy (Serial RX)

Cablul de cabluri inclus era prea mic pentru a putea lucra pe o placă de pâine, așa că am tăiat capătul opus TFmini și am lipit firele pe o placă de pâine, am adăugat un conector JST la panou și am făcut un JST la jumperul masculin cablaj de sârmă.

Pasul 2: Cod pentru a-l rula

Utilizați următorul cod (pentru Teensy 3.5) sau descărcați fișierul atașat:

Pentru Arduino Mega, threading-ul probabil nu va funcționa. Mutați codul din funcția readLiDAR în bucla principală și eliminați orice este legat de threading.

#include #include "TeensyThreads.h"

// Utilizarea cablului furnizat:

// - Negru = GND (conectat la GND) // - Roșu = 5V (4,5 - 6,0V) (conectat la Vin pe Teensy 3.5, sau 5V pe Arduino) // - Alb = TFmini RX (aka. Conectare la microcontroler TX, pin1 pe Teensy 3.5) // - Verde = TFmini TX (aka. conectare la microcontroler RX, pin0 pe Teensy 3.5) // NOTĂ: pentru această schiță aveți nevoie de un microcontroler cu porturi seriale suplimentare dincolo de cel conectat la cablul USB / / Aceasta include Arduino MEGA (utilizați Serial1), Teensy (3.x) (utilizați una dintre conexiunile Seriale HW disponibile)

volatil int liDARval = 0;

void readLiDAR () {

// Format date pentru Benewake TFmini // ============================== // 9 octeți în total per mesaj: // 1) 0x59 // 2) 0x59 // 3) Dist_L (scăzut 8 biți) // 4) Dist_H (înalt 8 biți) // 5) Putere_L (scăzut 8 biți) // 6) Putere_H (înalt 8 biți) // 7) Octoviți rezervați // 8) Gradul original de calitate a semnalului // 9) Bit de paritate sumă de verificare (8 biți scăzut), sumă de verificare = Byte1 + Byte2 + … + Byte8. Acesta este doar un 8bit scăzut, deși în timp ce (1) {// Continuați pentru totdeauna (Serial1.available ()> = 9) // Când sunt disponibili cel puțin 9 octeți de date (numărul așteptat de octeți pentru 1 semnal), atunci citiți {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // octet 1 și octet 2 {unsigned int t1 = Serial1.read (); // octet 3 = Dist_L nesemnat int t2 = Serial1.read (); // octet 4 = Dist_H t2 << = 8; t2 + = t1; liDARval = t2; t1 = Serial1.read (); // octet 5 = Strength_L t2 = Serial1.read (); // octet 6 = Forța_H t2 << = 8; t2 + = t1; pentru (int i = 0; i <3; i ++) Serial1.read (); // octetul 7, 8, 9 sunt ignorate}}}}

configurare nulă ()

{Serial1.begin (115200); // Serial HW pentru TFmini Serial.begin (115200); // Ieșire serială prin întârziere USB către computer (100); // Acordați puțin timp pentru ca lucrurile să înceapă // Setați la modul de ieșire standard Serial1.write (0x42); Serial1.write (0x57); Serial1.write (0x02); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x01); Serial1.write (0x06); // Configurare fir pentru citirea intrării seriale din TFmini threads.addThread (readLiDAR); }

bucla nulă ()

{întârziere (10); // Nu vreau să citiți prea des ca eșantioane TFmini la 100Hz Serial.println (liDARval); }

Pasul 3: Utilizarea Arduino IDE Vizualizarea rezultatelor în Serial Plotter

Utilizarea Arduino IDE Vizualizare rezultate în plotter serial
Utilizarea Arduino IDE Vizualizare rezultate în plotter serial

Puteți utiliza orice metodă doriți, dar IDE-ul Arduino va arăta rezultatele frumos.

Conectați-vă la Teensy și deschideți Serial Monitor. Asigurați-vă că Baudrate este setat la 115200.

Recomandat: