简介

TFmini

TF Mini LiDAR是一款基于飞行时间技术(ToF)的单向激光测距仪。它由特殊的光学和电子设备构成,内部集成了面向室内室外各种应用环境的适配算法,雷达身材小巧但测距性能优良。可作为测距工具用来检测前方障碍物的距离;亦可以作为机器人的眼睛,为机器人的安全避障和路线选择提供距离信息;在各种机器控制的场景,支持系统的自动化;因为它体积小、重量轻及功耗低的特点,同样适合用作无人机定高和地形跟随。 TF Mini最大探测距离12m,支持100Hz采样分辨率,6米内精度为在4cm以内;6~12米,精度在6厘米以内,FOV视场2.3°,抗干扰性强,可在室外强光下工作,整体重量轻至4.7g。 TF Mini LiDAR采用UART (TTL)通讯接口,可用标准5V供电,平均功耗0.6W,兼容各种arduino控制器。配合DFRobot Gravity IO Expansion Shield,可直插Arduino,无需额外接线。配合DFRobot开发的Arduino库,可以非常方便地集成到系统中。

warning_yellow.png
注意事项:

产品在探测高反射率物体,如镜面、光滑地砖时, 会有失效的风险。

当产品与被测目标之间有透明物体,如玻璃、水时,会有失效的风险。

请勿直接用手触碰线路板。如有需求,请佩戴静电手环或防静电手套。 |

TFmini Plus

TFmini Plus是基于我们前面推出的TFmini的升级项目,它是一款小型化,单点测距的产品,配合独特的光学、电学、算法设计,能实现稳定、精准、高灵敏度和高速的距离测量的功能。 TFmini Plus基于TOF(Time of Flight)即飞行时间原理。工作时,产品周期性的向外发出近红外光调制波,调制波遇物体后反射。通过测量调制波往返相位差,得到飞行时间,从而计算出产品与被测目标之间的相对距离。 产品本身既具有TFmini的低成本、小体积、低功耗、测距远等几大优势外,还进一步提升了产品的整体性能。提高了产品的输出帧率,由原来的100Hz提升到了1000Hz,反应更为灵敏;缩小了测距盲区,盲区缩小至10cm;提高了数据准确性及稳定度,还增加了IP65等级防护,能有效防尘防水,在室外强光、不同温度、不同反射率等不同环境下适应性更强,功耗更低,探测频率也更加灵活。同时兼容UART和I2C通信接口,可通过发送指令进行切换。采用标准5V供电,平均功耗仅0.55W,兼容各种Arduino控制器,配合DFRobot开发的Arduino库,可以非常方便地集成到系统中,使用起来更加便捷。 产品尺寸仅为35*21*18.5mm,和我们的大拇指大小相当,身材小巧但测距性能优良,可作为测距工具用来检测前方障碍物的距离;也可在我们的创客爱好者手中成为机器人的眼睛,为机器人的安全避障和路线选择提供距离信息;亦可应用到汽车上作为防撞预警;为无人机定高辅助无人机降落等各类场景中。

warning_yellow.png
注意事项:

本产品只能由合格的专业人员维修,且只能使用原厂备件,以保证产品的性能和安全性。

产品本身无极性保护和过电压保护,请按说明书内容正确接线和供电。

产品的工作温度为 -20℃~60℃,请勿在此温度范围外使用,以免产生风险。

产品的存储温度为 -20℃~75℃,请勿在此温度范围外存储,以免产生风险。

请勿打开外壳进行本使用说明以外的装配或保养,以免影响产品防护性能,造成产品失效。

产品在探测高反射率物体,如镜面、光滑地砖、平静的牛奶液面时,会有失效的风险。

当产品与被测目标之间有透明物体,如玻璃、水时,会有失效的风险。

当产品发射接收窗口被污物覆盖时,会有失效的风险,请保持窗口干净。发射接收窗口为红透亚克力材质,请勿让产品接触酒精,会导致产品损坏。

本产品线缆较细,请在使用时不要用力拉拽线缆,会导致产品损坏。 |

技术规格

TFmini

TFmini Plus

产品性能

电学参数

其他

引脚说明

标号 名称 功能描述
黑线 GND 电源负极
红线 VCC 电源正极
蓝线 RXD 串口接收
绿线 TXD 串口发射
标号 名称 功能描述
黑线 GND 电源负极
红线 VCC 电源正极
蓝线 RXD 串口接收
绿线 TXD 串口发射

使用教程

此处共列出两种方式,旨在让大家对单点激光测距仪有一个直观的认识。

  1. Arduino使用方法
  2. PC上位机调试
  3. 黑白线检测(巡线检测)

准备

Arduino调试方法(PC串口)

鉴于TF mini为串口设备,而普通Arduino只有一个硬件串口,所以推荐使用软串口来配合传感器使用,用户也可以使用多串口设备,诸如Arduino Leonardo,Arduino Mega2560等设备,此处使用最常见的Arduino UNO作为控制器,定义D12和D13为软串口。

Arduino连线图

TF Mini串口显示接法 TFmini Plus串口显示接法

Arduino调试代码

|

/*
  * @File  : DFRobot_TFmini_test.ino
  * @Brief : This example use TFmini to measure distance
  *         With initialization completed, we can get distance value and signal strength
  * @Copyright   [DFRobot](http://www.dfrobot.com), 2016
  *             GNU Lesser General Public License
  *
  * @version  V1.0
  * @date  2018-1-10
*/

#include <DFRobot_TFmini.h>

SoftwareSerial mySerial(12, 13); // RX, TX

DFRobot_TFmini  TFmini;
uint16_t distance,strength;

void setup(){
    Serial.begin(115200);
    TFmini.begin(mySerial);
}

void loop(){
    if(TFmini.measure()){                      //Measure Distance and get signal strength
        distance = TFmini.getDistance();       //Get distance data
        strength = TFmini.getStrength();       //Get signal strength data
        Serial.print("Distance = ");
        Serial.print(distance);
        Serial.println("cm");
        Serial.print("Strength = ");
        Serial.println(strength);
        delay(500);
    }
    delay(500);
}

|}

Distance = 1000 mm Strength = 688

Arduino LCD距离数值显示

实际应用场景中,传感器一般会在脱机状态下工作,我们特别提供了一个使用案例,使用锂电池供电,用LCD来显示距离测量数据,非常适合室外使用。

Arduino连接图

TFmini LCD显示接法 TFmini Plus LCD显示接法

Arduino测试代码

|


/*
  * @File  : DFRobot_TFmini_test.ino
  * @Brief : This example use TFmini to measure distance
  *         With initialization completed, we can get distance value and signal strength
  * @Copyright   [DFRobot](http://www.dfrobot.com), 2016
  *             GNU Lesser General Public License
  *
  * @version  V1.0
  * @date  2018-1-10
*/
#include <Wire.h>
#include <DFRobot_RGBLCD.h>
#include <DFRobot_TFmini.h>            //TF Mini header file

SoftwareSerial mySerial(12, 13);      // RX, TX
DFRobot_TFmini  TFmini;
uint16_t distance,strength;

unsigned int lcd_r = 0, lcd_g = 0, lcd_b = 0;
unsigned long delaytime = 0, lighttime = 0;
DFRobot_RGBLCD lcd(16, 2);
void setup()
{lcd.init();
  delay(5000);
  Serial.begin(115200);
  Serial.println("hello start");

  TFmini.begin(mySerial);
  lighttime = millis();
  lcd.setCursor(0, 0);
  lcd.print("Dis:");
  lcd.setCursor(0, 1);
  lcd.print("Str:");
  lcd.setRGB(255, 255, 000);
}
void loop() {

/******************LCD*******************/
 lcd_r = random(256);
  delayMicroseconds(10);
  lcd_g = random(256);
  delayMicroseconds(10);
  lcd_b = random(256);
  if (millis() - lighttime > 3000)
  {
    lcd.setRGB(lcd_r, lcd_g, lcd_b);
    lighttime = millis();
  }
  //delay(100);
  /**************TF Mini***************/
 if(TFmini.measure()){                          //Measure Distance and get signal strength
        distance = TFmini.getDistance();       //Get distance data
        strength = TFmini.getStrength();       //Get signal strength data

    lcd.setCursor(5, 0);                       //LCD display
    lcd.print(  distance / 10000);
    lcd.print(  distance/ 1000 % 10);
    lcd.print('.');
    lcd.print(  distance / 100 % 10);
    lcd.print(  distance / 10 % 10);
    lcd.print(  distance  % 10);
    lcd.print(" m");
    lcd.setCursor(5, 1);
    lcd.print(strength / 10000);
    lcd.print(strength / 1000 % 10);
    lcd.print(strength / 100 % 10);
    lcd.print(strength / 10 % 10);
    lcd.print(strength % 10);
    }
}

|}

Dis: 05.000 m Str: 00600

LCD数据显示

PC上位机显示

除了通过单片机来读取数据外,调试阶段,我们还可以使用PC上位机来读取距离输出。点击此处下载

连接图

将TF Mini通过一个USB转TTL模块连接到电脑上,通过上位机读取数据

TFmini上位机显示接法 TFmini上位机显示接法

上位机数据显示

TF Mini上位机数据显示

黑白线检测

TF Mini激光测距雷达是一种光学传感器,但凡光学传感器,对于光的敏感度会比较高。我们可以利用这一特性实现近距离黑白线检测。(注:黑色的反射率低;白色的反射率高;) 我们利用信号强度“Strength”来分辨两种颜色。

接线图

TFmini识别黑白色接法 TFmini Plus识别黑白色接法

Arduino代码

|


/*
  * @File  : DFRobot_TFmini_test.ino
  * @Brief : This example use TFmini to measure distance
  *         With initialization completed, we can get distance value and signal strength
  * @Copyright   [DFRobot](http://www.dfrobot.com), 2016
  *             GNU Lesser General Public License
  *
  * @version  V1.0
  * @date  2018-1-10
*/

#include <DFRobot_TFmini.h>

SoftwareSerial mySerial(12, 13); // RX, TX

DFRobot_TFmini  TFmini;
uint16_t distance,strength;

void setup(){
    Serial.begin(115200);
    TFmini.begin(mySerial);
}

void loop(){
    if(TFmini.measure()){                      //Measure Distance and get signal strength
        strength = TFmini.getStrength();       //Get signal strength data
        Serial.print("Strength = ");
        Serial.println(strength);
    }
}

|}

`串口绘图`

常见问题

(此处添加TF Mini常见问题解答)

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多

DFshopping_car1.png DFRobot商城购买链接