Taula de continguts:

Benewake TFmini: LiDAR econòmic amb Teensy 3.5: 3 passos
Benewake TFmini: LiDAR econòmic amb Teensy 3.5: 3 passos

Vídeo: Benewake TFmini: LiDAR econòmic amb Teensy 3.5: 3 passos

Vídeo: Benewake TFmini: LiDAR econòmic amb Teensy 3.5: 3 passos
Vídeo: APMA Project Arrow Zero-Emissions Vehicle 2024, Desembre
Anonim
Benewake TFmini: LiDAR econòmic amb Teensy 3.5
Benewake TFmini: LiDAR econòmic amb Teensy 3.5

La unitat LiDAR de Benewake TFmini és un sensor LiDAR petit i molt lleuger per uns 50 dòlars canadencs. La documentació era bona, però incompleta. Va proporcionar detalls sobre la recepció de dades del sensor, però es va oblidar d’esmentar el senyal necessari per posar el sensor al mode predeterminat perquè realment enviés les dades. Per sort, això figurava al document de depuració.

Per tant, això és el que ha funcionat per a mi i és realment un dispositiu fàcil de treballar.

Vaig optar per utilitzar un Teensy 3.5, ja que té diversos ports de sèrie HW, és més que suficient per rebre dades i processar-les sense deixar que s’amunteguin. Per diversió, he utilitzat la biblioteca Teensy Threading per separar l'obtenció de dades de la resta del codi.

Pas 1: Connexió de TFmini a Teensy 3.5 (similar per a Arduino Mega)

Connexió de TFmini a Teensy 3.5 (similar per a Arduino Mega)
Connexió de TFmini a Teensy 3.5 (similar per a Arduino Mega)

Aquest exemple requereix dues connexions en sèrie: una al TFmini i una altra per mostrar els resultats al vostre ordinador. Per aquest motiu, i pel que puc saber, només per aquest motiu, aquest exemple en concret no funcionarà en res inferior a Arduino Mega o Teensy 3.x.

Dit això, per a aplicacions que no requereixen sortida en sèrie per imprimir a la pantalla de l'ordinador, el mateix projecte hauria de ser adaptable.

Utilitzant l'arnès inclòs:

1) connecteu el cable negre a Teensy GND (si utilitzeu una font VDC diferencial, assegureu-vos que la terra també vagi a GND a Teensy)

2) connecteu el cable vermell a Teensy Vin (o font de 5VDC)

3) connecteu el cable blanc (TFmini RX) al pin 1 de Teensy (Serial1 TX)

4) connecteu el cable verd (TFmini TX) al pin 0 de Teensy (Serial RX)

L’arnès de cables inclòs era massa petit per treballar-lo en una taula de pa, així que vaig tallar l’extrem oposat al TFmini i vaig soldar els cables a una placa de pa, vaig afegir un connector JST al tauler i vaig fer un JST al pont masculí arnès de filferro.

Pas 2: Codi per executar-lo

Utilitzeu el codi següent (per a Teensy 3.5) o descarregueu el fitxer adjunt:

Per a Arduino Mega, el filament probablement no funcionarà. Mou el codi de la funció readLiDAR al bucle principal i elimina qualsevol cosa relacionada amb la conversa.

#include #include "TeensyThreads.h"

// Utilitzant el cable subministrat:

// - Negre = GND (connectat a GND) // - Vermell = 5V (4,5 - 6,0V) (connectat a Vin a Teensy 3.5 o 5V a Arduino) // - Blanc = TFmini RX (també conegut com a connexió al microcontrolador TX, pin1 a Teensy 3.5) // - Verd = TFmini TX (també conegut com connectar-se al microcontrolador RX, pin0 a Teensy 3.5) // NOTA: per a aquest esbós necessiteu un microcontrolador amb ports sèrie addicionals més enllà del connectat al cable USB / / Això inclou Arduino MEGA (utilitzeu Serial1), Teensy (3.x) (utilitzeu una de les connexions sèries HW disponibles)

volàtil int liDARval = 0;

void readLiDAR () {

// Format de dades per a Benewake TFmini // =============================== // 9 bytes en total per missatge: // 1) 0x59 // 2) 0x59 // 3) Dist_L (baix 8bit) // 4) Dist_H (alt 8bit) // 5) Força_L (baix 8bit) // 6) Força_H (alt 8bit) // 7) Bytes reservats // 8) Grau de qualitat del senyal original // 9) Bit de paritat de suma de comprovació (baix de 8 bits), suma de comprovació = Byte1 + Byte2 + … + Byte8. Tot i això, només és de 8 bits baixos mentre (1) {// Continua per sempre (Serial1.available ()> = 9) // Quan hi hagi almenys 9 bytes de dades disponibles (nombre esperat de bytes per a 1 senyal), llavors read {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // byte 1 and 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 = Força_L t2 = Serial1.read (); // byte 6 = Força_H t2 << = 8; t2 + = t1; per a (int i = 0; i <3; i ++) Serial1.read (); // els bytes 7, 8, 9 s'ignoren}}}}

configuració nul·la ()

{Sèrie1.begin (115200); // Sèrie HW per a TFmini Serial.begin (115200); // Sortida en sèrie mitjançant retard USB a ordinador (100); // Doneu una mica de temps perquè les coses comencin // Estableix el mode de sortida estàndard Serial1.write (0x42); Serial1.write (0x57); Serial1.write (0x02); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x01); Serial1.write (0x06); // Configuració del fil per llegir l'entrada de sèrie de TFmini threads.addThread (readLiDAR); }

bucle buit ()

{demora (10); // No vull llegir massa sovint com a mostres de TFmini a 100Hz Serial.println (liDARval); }

Pas 3: fer servir Arduino IDE per veure els resultats al traçador de sèries

Utilització dels resultats de visualització IDE d'Arduino en el traçador de sèries
Utilització dels resultats de visualització IDE d'Arduino en el traçador de sèries

Podeu utilitzar el mètode que vulgueu, però l'IDE d'Arduino traçarà els resultats molt bé.

Connecteu-vos a Teensy i obriu el serial serial. Assegureu-vos que Baudrate estigui configurat a 115200.

Recomanat: