Tabla de contenido:

Benewake TFmini - LiDAR económico con Teensy 3.5: 3 pasos
Benewake TFmini - LiDAR económico con Teensy 3.5: 3 pasos

Video: Benewake TFmini - LiDAR económico con Teensy 3.5: 3 pasos

Video: Benewake TFmini - LiDAR económico con Teensy 3.5: 3 pasos
Video: como medir distancia o detectar obstáculos con un tf mini LiDAR (ToF) Laser y arduino 2024, Mes de julio
Anonim
Benewake TFmini - LiDAR económico con Teensy 3.5
Benewake TFmini - LiDAR económico con Teensy 3.5

La unidad Benewake TFmini LiDAR es un sensor LiDAR pequeño y muy ligero por unos 50 dólares canadienses. La documentación fue buena, pero incompleta. Proporcionó detalles sobre la recepción de datos del sensor, pero se olvidó de mencionar la señal necesaria para poner el sensor en el modo predeterminado para que realmente envíe los datos. Afortunadamente, eso estaba en el documento de depuración.

Así que esto es lo que funcionó para mí, y es realmente un dispositivo fácil de trabajar.

Elegí usar un Teensy 3.5 ya que tiene múltiples puertos serie HW, es más que lo suficientemente rápido para recibir datos y procesarlos sin dejar que los datos se acumulen. Solo por diversión, utilicé la biblioteca Teensy Threading para separar la obtención de datos del resto del código.

Paso 1: Conexión de TFmini a Teensy 3.5 (similar para Arduino Mega)

Conexión de TFmini a Teensy 3.5 (similar para Arduino Mega)
Conexión de TFmini a Teensy 3.5 (similar para Arduino Mega)

Este ejemplo requiere dos conexiones en serie: una al TFmini y otra para mostrar los resultados en su computadora. Por esta razón, y por lo que puedo decir, solo por esta razón, este ejemplo en particular no funcionará en nada por debajo de Arduino Mega o Teensy 3.x.

Dicho esto, para las aplicaciones que no requieren salida en serie para imprimir en la pantalla de la computadora, el mismo proyecto debe ser adaptable.

Usando el arnés de cables incluido:

1) conecte el cable negro a Teensy GND (si usa una fuente de VDC diferente, asegúrese de que la tierra también vaya a GND en Teensy)

2) conecte el cable rojo a Teensy Vin (o fuente de 5VDC)

3) conecte el cable blanco (TFmini RX) al pin 1 en Teensy (Serial1 TX)

4) conecte el cable verde (TFmini TX) al pin 0 en Teensy (Serial RX)

El arnés de cables incluido era demasiado pequeño para trabajar con él en una placa de pruebas, así que corté el extremo opuesto al TFmini, y soldé los cables a una placa de pruebas, agregué un conector JST a la placa de conexiones e hice un puente JST a macho. mazo de cables.

Paso 2: Código para ejecutarlo

Utilice el siguiente código (para Teensy 3.5) o descargue el archivo adjunto:

Para Arduino Mega, es probable que el enhebrado no funcione. Mueva el código de la función readLiDAR al bucle principal y elimine todo lo relacionado con el subproceso.

#include #include "TeensyThreads.h"

// Utilizando el cable suministrado:

// - Negro = GND (conectado a GND) // - Rojo = 5V (4.5 - 6.0V) (conectado a Vin en Teensy 3.5, o 5V en Arduino) // - Blanco = TFmini RX (también conocido como conectar al microcontrolador TX, pin1 en Teensy 3.5) // - Verde = TFmini TX (también conocido como conectar al microcontrolador RX, pin0 en Teensy 3.5) // NOTA: para este boceto necesita un microcontrolador con puertos serie adicionales además del conectado al cable USB / / Esto incluye Arduino MEGA (use Serial1), Teensy (3.x) (use una de las conexiones HW Serial disponibles)

volatile int liDARval = 0;

void readLiDAR () {

// Formato de datos para Benewake TFmini // =============================== // 9 bytes en total por mensaje: // 1) 0x59 // 2) 0x59 // 3) Dist_L (bajo de 8 bits) // 4) Dist_H (alto de 8 bits) // 5) Fuerza_L (bajo de 8 bits) // 6) Fuerza_H (alto de 8 bits) // 7) Bytes reservados // 8) Grado de calidad de la señal original // 9) Bit de paridad de suma de comprobación (8 bits bajos), suma de comprobación = Byte1 + Byte2 +… + Byte8. Sin embargo, esto es solo un bajo de 8 bits while (1) {// Continuar para siempre while (Serial1.available ()> = 9) // Cuando al menos 9 bytes de datos disponibles (número esperado de bytes para 1 señal), entonces leer {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // byte 1 y 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 = Fuerza_L t2 = Serial1.read (); // byte 6 = Fuerza_H t2 << = 8; t2 + = t1; para (int i = 0; i <3; i ++) Serial1.read (); // los bytes 7, 8, 9 se ignoran}}}}

configuración vacía ()

{Serial1.begin (115200); // Serie HW para TFmini Serial.begin (115200); // Salida en serie a través de USB al retardo de la computadora (100); // Dar un poco de tiempo para que las cosas comiencen // Establecer en modo de salida estándar 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ón del hilo para leer la entrada en serie de TFmini threads.addThread (readLiDAR); }

bucle vacío ()

{retraso (10); // No quiero leer con demasiada frecuencia como muestras TFmini a 100Hz Serial.println (liDARval); }

Paso 3: Uso de Arduino IDE View Results en Serial Plotter

Usando Arduino IDE View Results en Serial Plotter
Usando Arduino IDE View Results en Serial Plotter

Puede usar el método que desee, pero el IDE de Arduino trazará los resultados de manera agradable.

Conéctese al Teensy y abra Serial Monitor. Asegúrese de que la velocidad en baudios esté configurada en 115200.

Recomendado: