Índice:

Benewake TFmini - LiDAR barato com Teensy 3.5: 3 etapas
Benewake TFmini - LiDAR barato com Teensy 3.5: 3 etapas

Vídeo: Benewake TFmini - LiDAR barato com Teensy 3.5: 3 etapas

Vídeo: Benewake TFmini - LiDAR barato com Teensy 3.5: 3 etapas
Vídeo: 20m Small LiDAR Sensor USB Connection 2024, Novembro
Anonim
Benewake TFmini - LiDAR barato com Teensy 3.5
Benewake TFmini - LiDAR barato com Teensy 3.5

A unidade Benewake TFmini LiDAR é um sensor LiDAR pequeno e muito leve por cerca de US $ 50 canadenses. A documentação era boa, mas incompleta. Ele forneceu detalhes sobre o recebimento de dados do sensor, mas esqueceu de mencionar o sinal necessário para colocar o sensor no modo padrão para que ele realmente enviasse os dados. Felizmente, isso estava no documento de depuração.

Então foi isso que funcionou para mim e é realmente um dispositivo fácil de trabalhar.

Optei por usar um Teensy 3.5, pois tem várias portas HW Serial, é mais do que rápido o suficiente para receber dados e processá-los sem deixar os dados se acumularem. Apenas por diversão, usei a biblioteca Teensy Threading para separar a obtenção de dados do resto do código.

Etapa 1: Conectando o TFmini ao Teensy 3.5 (semelhante ao Arduino Mega)

Conectando TFmini ao Teensy 3.5 (semelhante para Arduino Mega)
Conectando TFmini ao Teensy 3.5 (semelhante para Arduino Mega)

Este exemplo requer duas conexões seriais: uma para o TFmini e outra para exibir os resultados em seu computador. Por esse motivo, e pelo que eu posso dizer, apenas esse motivo, este exemplo em particular não funcionará em nada abaixo de um Arduino Mega ou Teensy 3.x.

Dito isso, para aplicativos que não requerem saída serial para imprimir na tela do computador, o mesmo projeto deve ser adaptável.

Usando o chicote de fios incluído:

1) conecte o fio preto ao Teensy GND (se estiver usando uma fonte VDC diferente, certifique-se de que o aterramento também vá para GND no Teensy)

2) conecte o fio vermelho ao Teensy Vin (ou fonte de 5 VCC)

3) conecte o fio branco (TFmini RX) ao pino 1 no Teensy (Serial1 TX)

4) conecte o fio verde (TFmini TX) ao pino 0 no Teensy (Serial RX)

O chicote de fios incluído era muito pequeno para que eu pudesse trabalhar com uma placa de ensaio, então cortei a extremidade oposta ao TFmini e soldei os fios a uma placa de ensaio, adicionei um conector JST à placa de quebra e fiz um jumper de JST para macho chicote de fios.

Etapa 2: código para executá-lo

Use o seguinte código (para Teensy 3.5) ou baixe o arquivo anexado:

Para o Arduino Mega, o threading provavelmente não funcionará. Mova o código da função readLiDAR para o loop principal e remova qualquer coisa relacionada ao threading.

#include #include "TeensyThreads.h"

// Usando o cabo fornecido:

// - Preto = GND (conectado ao GND) // - Vermelho = 5V (4,5 - 6,0V) (conectado ao Vin no Teensy 3.5 ou 5V no Arduino) // - Branco = TFmini RX (também conhecido como conectar ao microcontrolador TX, pino1 em Teensy 3.5) // - Verde = TFmini TX (também conhecido como conectar ao microcontrolador RX, pino0 em Teensy 3.5) // NOTA: para este esboço, você precisa de um microcontrolador com portas seriais adicionais além do conectado ao cabo USB / / Isso inclui Arduino MEGA (use Serial1), Teensy (3.x) (use uma das conexões HW Serial disponíveis)

volátil int liDARval = 0;

void readLiDAR () {

// Formato de dados para Benewake TFmini // ================================= // 9 bytes no total por mensagem: // 1) 0x59 // 2) 0x59 // 3) Dist_L (8 bits baixos) // 4) Dist_H (8 bits altos) // 5) Strength_L (8 bits baixos) // 6) Strength_H (8 bits altos) // 7) Bytes reservados // 8) Grau de qualidade do sinal original // 9) Bit de paridade de checksum (8 bits baixo), Checksum = Byte1 + Byte2 +… + Byte8. No entanto, este é apenas um baixo 8 bits while (1) {// Continue para sempre (Serial1.available ()> = 9) // Quando pelo menos 9 bytes de dados disponíveis (número esperado de bytes para 1 sinal), então ler {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // byte 1 e 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 = Strength_H t2 << = 8; t2 + = t1; para (int i = 0; i <3; i ++) Serial1.read (); // byte 7, 8, 9 são ignorados}}}}

void setup ()

{Serial1.begin (115200); // HW Serial para TFmini Serial.begin (115200); // Saída serial através de USB para atraso do computador (100); // Dê um pouco de tempo para que as coisas comecem // Defina para o modo de saída padrão Serial1.write (0x42); Serial1.write (0x57); Serial1.write (0x02); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x01); Serial1.write (0x06); // Configurar thread para ler a entrada serial do TFmini threads.addThread (readLiDAR); }

void loop ()

{atraso (10); // Não quero ler muitas vezes como amostras TFmini em 100 Hz Serial.println (liDARval); }

Etapa 3: Usando o IDE do Arduino, visualize os resultados em plotter serial

Usando Arduino IDE Visualizar resultados em plotadora serial
Usando Arduino IDE Visualizar resultados em plotadora serial

Você pode usar qualquer método que desejar, mas o IDE do Arduino representará os resultados de maneira adequada.

Conecte-se ao Teensy e abra o Serial Monitor. Certifique-se de que a taxa de transmissão esteja definida como 115200.

Recomendado: