Inhaltsverzeichnis:

Benewake TFmini - Günstiger LiDAR mit Teensy 3.5 - Gunook
Benewake TFmini - Günstiger LiDAR mit Teensy 3.5 - Gunook

Video: Benewake TFmini - Günstiger LiDAR mit Teensy 3.5 - Gunook

Video: Benewake TFmini - Günstiger LiDAR mit Teensy 3.5 - Gunook
Video: Optical Flow Test : Benewake vs Lidar Lite V3HP 2024, Juli
Anonim
Benewake TFmini - Preiswertes LiDAR mit Teensy 3.5
Benewake TFmini - Preiswertes LiDAR mit Teensy 3.5

Die Benewake TFmini LiDAR-Einheit ist ein kleiner, sehr leichter LiDAR-Sensor für etwa 50 kanadische Dollar. Die Dokumentation war gut, aber unvollständig. Es enthielt Details zum Empfangen von Daten vom Sensor, vergaß jedoch, das Signal zu erwähnen, das erforderlich ist, um den Sensor in den Standardmodus zu versetzen, damit er die Daten tatsächlich sendet. Zum Glück stand das im Debugging-Dokument.

Das hat also für mich funktioniert, und es ist wirklich ein einfaches Gerät, mit dem man arbeiten kann.

Ich habe mich für ein Teensy 3.5 entschieden, da es über mehrere serielle HW-Ports verfügt. Es ist mehr als schnell genug, um Daten zu empfangen und zu verarbeiten, ohne dass sich Daten anhäufen. Nur zum Spaß habe ich die Teensy Threading-Bibliothek verwendet, um das Abrufen der Daten vom Rest des Codes zu trennen.

Schritt 1: Anschließen von TFmini an Teensy 3.5 (ähnlich für Arduino Mega)

Anschließen von TFmini an Teensy 3.5 (ähnlich für Arduino Mega)
Anschließen von TFmini an Teensy 3.5 (ähnlich für Arduino Mega)

Dieses Beispiel erfordert zwei serielle Verbindungen: eine zum TFmini und eine zum Anzeigen der Ergebnisse auf Ihrem Computer. Aus diesem Grund, und soweit ich das beurteilen kann, nur aus diesem Grund funktioniert dieses spezielle Beispiel nicht auf etwas unter einem Arduino Mega oder Teensy 3.x.

Für Anwendungen, die keine serielle Ausgabe zum Drucken auf dem Computerbildschirm erfordern, sollte dasselbe Projekt jedoch anpassbar sein.

Verwendung des mitgelieferten Kabelbaums:

1) Schließen Sie das schwarze Kabel an Teensy GND an (wenn Sie eine unterschiedliche VDC-Quelle verwenden, stellen Sie sicher, dass die Masse auch bei Teensy an GND geht)

2) Verbinden Sie das rote Kabel mit Teensy Vin (oder 5VDC-Quelle)

3) Verbinden Sie das weiße Kabel (TFmini RX) mit Pin 1 von Teensy (Serial1 TX)

4) Verbinden Sie das grüne Kabel (TFmini TX) mit Pin 0 auf Teensy (Serial RX)

Der mitgelieferte Kabelbaum war zu klein, um mit einem Steckbrett zu arbeiten, also schnitt ich das Ende gegenüber dem TFmini ab und lötete die Drähte an ein Steckbrett, fügte dem Breakboard einen JST-Stecker hinzu und machte einen JST zu einem männlichen Jumper Kabelbaum.

Schritt 2: Code zum Ausführen

Verwenden Sie den folgenden Code (für Teensy 3.5) oder laden Sie die angehängte Datei herunter:

Für Arduino Mega wird das Einfädeln wahrscheinlich nicht funktionieren. Verschieben Sie den Code von der readLiDAR-Funktion in die Hauptschleife und entfernen Sie alles, was mit dem Threading zu tun hat.

#include #include "TeensyThreads.h"

// Verwendung des mitgelieferten Kabels:

// - Schwarz = GND (verbunden mit GND) // - Rot = 5 V (4,5 - 6,0 V) (verbunden mit Vin auf Teensy 3.5 oder 5 V auf Arduino) // - Weiß = TFmini RX (auch bekannt als Mikrocontroller TX), Pin1 auf Teensy 3.5) // - Grün = TFmini TX (auch bekannt als Verbindung zum Mikrocontroller RX, Pin0 auf Teensy 3.5) // HINWEIS: Für diese Skizze benötigen Sie einen Mikrocontroller mit zusätzlichen seriellen Anschlüssen über den mit dem USB-Kabel verbundenen / / Dazu gehören Arduino MEGA (verwenden Sie Serial1), Teensy (3.x) (verwenden Sie eine der verfügbaren seriellen HW-Verbindungen)

volatile int liDARval = 0;

void readLiDAR(){

// Datenformat für Benewake TFmini // =============================== // 9 Byte insgesamt pro Nachricht: // 1) 0x59 // 2) 0x59 // 3) Dist_L (low 8bit) // 4) Dist_H (high 8bit) // 5) Strength_L (low 8bit) // 6) Strength_H (high 8bit) // 7) Reservierte Bytes // 8) Ursprünglicher Signalqualitätsgrad // 9) Prüfsummen-Paritätsbit (low 8bit), Prüfsumme = Byte1 + Byte2 +…+Byte8. Dies sind jedoch nur niedrige 8bit while(1){ // Weitermachen für immer while(Serial1.available()>=9) // Wenn mindestens 9 Bytes an Daten verfügbar sind (erwartete Anzahl von Bytes für 1 Signal), dann lesen { if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // Byte 1 und Byte 2 { unsigned int t1 = Serial1.read (); // Byte 3 = Dist_L unsigned int t2 = Serial1.read (); // Byte 4 = Dist_H t2 <<= 8; t2 += t1; liDARval = t2; t1 = Serial1.read (); // Byte 5 = Strength_L t2 = Serial1.read (); // Byte 6 = Stärke_H t2 <<= 8; t2 += t1; for(int i=0; i<3; i++)Serial1.read(); // Byte 7, 8, 9 werden ignoriert } } } }

Void-Setup ()

{ Serial1.begin(115200); // HW-Seriell für TFmini Serial.begin (115200); // Serielle Ausgabe über USB zur Computerverzögerung (100); // Geben Sie ein wenig Zeit, damit die Dinge beginnen // Auf den Standardausgabemodus setzen Serial1.write (0x42); Serial1.write (0x57); Serial1.write (0x02); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x01); Serial1.write (0x06); // Setup-Thread zum Lesen der seriellen Eingabe von TFmini-Threads.addThread(readLiDAR); }

Leere Schleife ()

{ Verzögerung(10); // Ich möchte nicht zu oft als TFmini-Samples bei 100 Hz lesen Serial.println (liDARval); }

Schritt 3: Verwenden von Arduino IDE View Results in Serial Plotter

Verwenden von Arduino IDE View-Ergebnissen in seriellem Plotter
Verwenden von Arduino IDE View-Ergebnissen in seriellem Plotter

Sie können jede beliebige Methode verwenden, aber die IDE von Arduino wird die Ergebnisse gut darstellen.

Verbinden Sie sich mit dem Teensy und öffnen Sie Serial Monitor. Stellen Sie sicher, dass die Baudrate auf 115200 eingestellt ist.

Empfohlen: