Pular para o conteúdo principal

Grove - TF Mini LiDAR

pir

Este produto é baseado no princípio ToF (Time of Flight) e integrado com designs ópticos e elétricos exclusivos, de forma a alcançar detecção de distância estável, precisa, de alta sensibilidade e em alta velocidade.

ToF é a abreviação da tecnologia Time of Flight, e seu princípio de operação é o seguinte: uma luz modulada de infravermelho próximo é enviada pelo sensor e refletida por um objeto; a distância até o objeto a ser medido pode ser convertida pelo sensor calculando a diferença de tempo ou a diferença de fase entre o envio da luz e a reflexão da luz, de modo a produzir a informação de profundidade.

Adquira agora

atenção

Evite que poeira ou qualquer outro corpo estranho entre na lente; caso contrário, isso pode afetar a transmissão de luz.

Versão

Versão do ProdutoAlteraçõesData de Lançamento
Grove-TF Mini LiDAR V1.0InicialNov 2017

Especificação


Nome do ProdutoTFmini
Faixa de operação0,3 m–12 m
Faixa máxima de operação a 10% de refletividade5 m
Consumo médio de energia0,6 W
Faixa de tensão aplicável4,5 V–6 V
Ângulo de aceitação2,3°
Resolução mínima1 cm
Frequência100 Hz
Precisão1% (menos de 6 m), 2% (6 m–12 m)
Unidade de detecção de distânciacm
Comprimento de onda850 nm
Tamanho42 mm × 15 mm × 16 mm
Temperatura de operação-20℃–60℃
Sensibilidade à luz70.000 lux
Peso4,7 g
Interface de comunicaçãoUART 115200
Corrente de pico do LED800 mA
Nível de tensão TTL da porta serial3,3 V
Compatibilidade eletromagnética (EMC)EN 55032 Classe B
dica

Para mais detalhes sobre módulos Grove, consulte Grove System

Plataformas Suportadas

ArduinoRaspberry Pi
cuidado

As plataformas mencionadas acima como suportadas são uma indicação da compatibilidade de software ou teórica do módulo. Na maioria dos casos, fornecemos apenas biblioteca de software ou exemplos de código para a plataforma Arduino. Não é possível fornecer biblioteca de software / código de demonstração para todas as plataformas MCU possíveis. Portanto, os usuários precisam escrever sua própria biblioteca de software.

Primeiros Passos


Brincar com Arduino

Hardware

  • Passo 1. Prepare os seguintes itens:
Seeeduino V4.2Base ShieldGrove-TF Mini LiDAR
enter image description hereenter image description hereenter image description here
Adquira agoraAdquira agoraAdquira agora
  • Passo 2. Conecte o Grove-TF-Mini-LiDAR à porta D2 do Base Shield e conecte o Seeeduino ao PC através de um cabo USB.

  • Passo 3. Baixe o código de demonstração e copie todo o arquivo Seeed_Arduino_TFlidar e cole-o na pasta de bibliotecas do seu Arduino IDE.

Software

  • Passo 1. O Grove-TF Mini LiDAR produz dados em hexadecimal. Cada quadro de dados é codificado com 9 bytes, incluindo 1 dado de distância (Dist). Cada dado de distância possui informação de intensidade de sinal correspondente (Strength). O fim do quadro é o bit de paridade dos dados.
ByteInterpretação da codificação de dados
Byte10x59, cabeçalho do quadro, todos os quadros são iguais
Byte20x59, cabeçalho do quadro, todos os quadros são iguais
Byte3Dist_L, o valor de distância é um byte inferior de 8 bits.
Byte4Dist_H, o valor de distância é um byte superior de 8 bits.
Byte5Strength_L é um byte inferior de 8 bits.
Byte6Strength_H é um byte superior de 8 bits.
Byte7Tempo de integração.
Byte8Bytes reservados.
Byte9Verificação de paridade (Checksum).
  • Passo 2. Copie o código para o Arduino IDE e faça o upload.
#include "TFLidar.h"

#define USETFMINI
// #define USETFLUNA

#define SERIAL Serial

#if defined(SEEED_XIAO_M0)
#define uart Serial1
#elif defined(SEEED_WIO_TERMINAL)
#define uart Serial1
#else
SoftwareSerial uart(2, 3);
#endif

#ifdef USETFLUNA
TFLuna SeeedTFLuna;
TFLidar SeeedTFLidar(&SeeedTFLuna);
#endif

#ifdef USETFMINI
TFMini SeeedTFMini;
TFLidar SeeedTFLidar(&SeeedTFMini);
#endif


void setup() {
// put your setup code here, to run once:
SERIAL.begin(9600);
while(!Serial);
SeeedTFLidar.begin(&uart,115200);
}

void loop() {
while(!SeeedTFLidar.get_frame_data()){
delay(1);
}
// put your main code here, to run repeatedly:
SERIAL.print("dist = ");
SERIAL.print(SeeedTFLidar.get_distance()); //output measure distance value of LiDAR
SERIAL.print('\t');
SERIAL.print("strength = ");
SERIAL.print(SeeedTFLidar.get_strength()); //output signal strength value
#ifdef USETFLUNA
SERIAL.print("\t Chip Temprature = ");
SERIAL.print(SeeedTFLidar.get_chip_temperature());
SERIAL.print(" celcius degree"); //output chip temperature of Lidar
#endif
SERIAL.println(" ");
// delay(1000);
}
  • Passo 3. Veremos a distância exibida no terminal. A curva azul é a distância e o vermelho é a Strength.

nota

Você pode excluir da Linha 41 à Linha 43 do código de demonstração se apenas a Distance for necessária:

SERIAL.print("strength = ");
SERIAL.print(SeeedTFLidar.get_strength()); //output signal strength value

Brincar com Wio Terminal

Hardware

Wio TerminalGrove-TF-Mini-LiDARJumper
enter image description hereenter image description hereenter image description here
Adquira agoraAdquira agoraAdquira agora

Conexão de Hardware

Pinagem

Grove-TF_Mini_LiDAR'' OUTCOME
dica

Consulte as instruções de pinagem acima antes de começar a conectar o Wio Terminal com jumpers.

Passo 1 Conecte o Grove-TF-Mini-LiDAR ao Wio Terminal por meio de jumpers e também conecte o Wio Terminal ao PC através de um cabo USB.

Passo 2 Baixe o código de demonstração e copie todo o arquivo Seeed_Arduino_Linechart e cole-o na pasta de bibliotecas do seu Arduino IDE.

Passo 3 Copie o código de demonstração para o seu Arduino IDE.

Software

#include"seeed_line_chart.h" //include the library
#include "TFLidar.h"
#define LINE_DIS 0X00
#define STRING_DIS 0X01
TFMini SeeedTFMini;
TFLidar SeeedTFLidar(&SeeedTFMini);
#define uart Serial1

TFT_eSPI tft;

#define max_size 10 //maximum size of data
doubles data; //Initilising a doubles type to store data
TFT_eSprite spr = TFT_eSprite(&tft); // Sprite

void setup() {
Serial.begin(115200);
pinMode(WIO_KEY_C, INPUT_PULLUP);
tft.begin();
tft.setRotation(3);
spr.createSprite(TFT_HEIGHT,TFT_WIDTH);
SeeedTFLidar.begin(&uart,115200);
}
uint8_t mode = LINE_DIS;
void loop() {

if (digitalRead(WIO_KEY_C) == LOW) {
mode ++;
if(mode > STRING_DIS ) mode = LINE_DIS;
while(!digitalRead(WIO_KEY_C));
}
display(get_Lidar_data(),mode);
delay(50);
}

uint16_t get_Lidar_data()
{
while(!SeeedTFLidar.get_frame_data()){
delay(1);
}
return SeeedTFLidar.get_distance();
}

void display(uint16_t lidar_data,uint8_t mode){

spr.fillSprite(TFT_WHITE);
//Settings for the line graph title
auto header = text(0, 0)
.value("Lidar Terminal")
.align(center)
.valign(vcenter)
.width(tft.width())
.color(green)
.thickness(3);
header.height(header.font_height() * 2);
header.draw(); //Header height is the twice the height of the font
if (LINE_DIS == mode){
if (data.size() == max_size) {
data.pop();//this is used to remove the first read variable
}
data.push(lidar_data); //read variables and store in data
//Settings for the line graph
auto content = line_chart(10, header.height()); //(x,y) where the line graph begins
content
.height(tft.height() - header.height() * 1.5) //actual height of the line chart
.width(tft.width() - content.x() * 2) //actual width of the line chart
.based_on(0.0) //Starting point of y-axis, must be a float
.show_circle(false) //drawing a cirle at each point, default is on.
.value(data) //passing through the data to line graph
.color(TFT_RED) //Setting the color for the line
.draw();
}
else if (STRING_DIS == mode){
for(int8_t line_index = 0;line_index < 5 ; line_index++)
{
spr.drawLine(0, 50 + line_index, tft.width(), 50 + line_index, TFT_GREEN);
}
auto header = text(0, 0)
.thickness(1);
spr.setFreeFont(&FreeSansBoldOblique24pt7b);
spr.setTextColor(TFT_BLUE);
spr.drawFloat(lidar_data / 100.00,2,80,110);
spr.drawString(" M",80 + 90,110,1);

}
spr.pushSprite(0, 0);

}
success

Uma imagem será exibida na tela do Wio Terminal como abaixo se tudo correr bem.

Recursos


Suporte Técnico & Discussão de Produto

Obrigado por escolher nossos produtos! Estamos aqui para oferecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...