Innehållsförteckning:

Benewake TFmini - Billig LiDAR med Teensy 3.5: 3 steg
Benewake TFmini - Billig LiDAR med Teensy 3.5: 3 steg

Video: Benewake TFmini - Billig LiDAR med Teensy 3.5: 3 steg

Video: Benewake TFmini - Billig LiDAR med Teensy 3.5: 3 steg
Video: Момент поиска сокровищ. / Мы нашли сокровище с металлоискателем Gold Legend 2024, November
Anonim
Benewake TFmini - Billig LiDAR med Teensy 3.5
Benewake TFmini - Billig LiDAR med Teensy 3.5

Benewake TFmini LiDAR -enheten är en liten, mycket lätt LiDAR -sensor för cirka $ 50 kanadensare. Dokumentationen var bra, men ofullständig. Det gav detaljer om att ta emot data från sensorn, men glömde att nämna den signal som behövs för att sätta sensorn i standardläget så att den faktiskt skickar data. Som tur var fanns det i felsökningsdokumentet.

Så det här är vad som fungerade för mig, och det är verkligen en enkel enhet att arbeta med.

Jag valde att använda en Teensy 3.5 eftersom den har flera HW seriella portar, den är mer än snabb nog att ta emot data och bearbeta den utan att låta data hopa sig. Bara för skojs skull använde jag Teensy Threading -biblioteket för att separera att få data från resten av koden.

Steg 1: Anslutning av TFmini till Teensy 3.5 (liknande för Arduino Mega)

Ansluta TFmini till Teensy 3.5 (liknande för Arduino Mega)
Ansluta TFmini till Teensy 3.5 (liknande för Arduino Mega)

Detta exempel kräver två seriella anslutningar: en till TFmini och en för att visa resultat på din dator. Av den anledningen, och så vitt jag kan se, bara av denna anledning, fungerar inte just detta exempel på något under en Arduino Mega eller Teensy 3.x.

Med detta sagt, för applikationer som inte kräver seriell utskrift för att skriva ut till datorskärm, bör samma projekt vara anpassningsbart.

Användning av den medföljande kabelnätet:

1) anslut svart ledning till Teensy GND (om du använder skillnad VDC -källa, se till att marken också går till GND på Teensy)

2) anslut röd tråd till Teensy Vin (eller 5VDC -källa)

3) anslut vit ledning (TFmini RX) till stift 1 på Teensy (Serial1 TX)

4) anslut grön kabel (TFmini TX) till stift 0 på Teensy (Serial RX)

Den medföljande ledningsnätet var för litet för att jag skulle kunna arbeta med på ett brödbräda, så jag skar av änden mittemot TFmini och lodde ledningarna till en brödbräda, lägger till en JST -kontakt till brytbordet och gjorde en JST till manlig bygel kabelhärva.

Steg 2: Kod för att köra den

Använd följande kod (för Teensy 3.5) eller ladda ner den bifogade filen:

För Arduino Mega fungerar tråden troligen inte. Flytta koden från readLiDAR -funktionen till huvudslingan och ta bort allt som är relaterat till trådning.

#include #include "TeensyThreads.h"

// Använd medföljande kabel:

// - Svart = GND (ansluten till GND) // - Röd = 5V (4,5 - 6,0V) (ansluten till Vin på Teensy 3.5 eller 5V på Arduino) // - Vit = TFmini RX (aka. Anslut till mikrokontroller TX, pin1 på Teensy 3.5) // - Grön = TFmini TX (aka. anslut till mikrokontroller RX, pin0 på Teensy 3.5) // OBS: för denna skiss behöver du en mikrokontroller med ytterligare seriella portar utöver den som är ansluten till USB -kabeln / / Detta inkluderar Arduino MEGA (använd Serial1), Teensy (3.x) (använd en av de tillgängliga HW Serial -anslutningarna)

flyktig int liDARval = 0;

void readLiDAR () {

// Dataformat för Benewake TFmini // =============================== // 9 byte totalt per meddelande: // 1) 0x59 // 2) 0x59 // 3) Dist_L (låg 8bit) // 4) Dist_H (hög 8bit) // 5) Strength_L (låg 8bit) // 6) Strength_H (hög 8bit) // 7) Reserverade byte // 8) Ursprunglig signalkvalitetsgrad // 9) Paritetsbit för kontrollsumma (låg 8bit), Checksumma = Byte1 +Byte2 +… +Byte8. Detta är bara en låg 8 -bitars men medan (1) {// Fortsätt för alltid medan (Serial1.available ()> = 9) // När minst 9 byte med data är tillgängligt (förväntat antal byte för 1 signal), då läs {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // byte 1 och 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 = Styrka_H t2 << = 8; t2 += t1; för (int i = 0; i <3; i ++) Serial1.read (); // byte 7, 8, 9 ignoreras}}}}

void setup ()

{Serial1.begin (115200); // HW Serial för TFmini Serial.begin (115200); // Seriell utmatning via USB till datorfördröjning (100); // Ge lite tid för att saker ska börja // Ställ in på standardutmatningsläge Serial1.write (0x42); Serial1.write (0x57); Serial1.write (0x02); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x01); Serial1.write (0x06); // Inställningstråd för att läsa serieinmatning från TFmini -trådar.addThread (readLiDAR); }

void loop ()

{fördröjning (10); // Vill inte läsa för ofta som TFmini -sampel vid 100Hz Serial.println (liDARval); }

Steg 3: Använda Arduino IDE Visa resultat i serieplotter

Använda Arduino IDE Visa resultat i serieplotter
Använda Arduino IDE Visa resultat i serieplotter

Du kan använda vilken metod du vill, men Arduinos IDE kommer att plotta resultaten snyggt.

Anslut till Teensy och öppna seriell bildskärm. Se till att Baudrate är inställd på 115200.

Rekommenderad: