简介
DE-LIDAR TF02是一款基于飞行时间技术的单向激光测距仪。它由特殊的光学和电子设备构成,具有稳定、高灵敏度和高精度的性能特点。 ToF是飞行时间(Time of Flight)的缩写,即传感器发出经调制的近红外光遇物体后反射,通过计算发射与反射的时间差或相位差来换算与被照射物的距离,从而得到深度的信息。 TF02的测距性能在保留原有TF01优点的情况下得到大幅提升,测量频率达到100Hz,拥有22m的量程,测量精度达到了厘米级。由于TF02加强了对异常数据的内部处理,所以拥有更稳定的数据输出和更高的重复测距精度。整机的保护设计基于ip65级,体型小巧,防摔性能更佳,可以防止灰尘、水和各种腐蚀。同时地,它可以抵抗温度、湿度、光线、电子和气流的干扰,能在100K的lux光下工作,十分耐用。
技术规格
- 最大工作范围:0.4~22m
- 距离准度:<6cm(5m内)<2%(5m~22m)
- 测量速度:默认100HZ(最大可调500HZ)
- 距离分辨率:1cm
- 重复测量精度:标准差<1(10m 内),标准差<2(10m~22m)
- 输入电压:4.5~6v
- 功率:0.6~1w
- 串口TTL电平:0~3.3v
- 工作温度:-10°C~60°C
- 保护级别:IP65
- 尺寸(长*宽*高):69*46*26
- 注意事项:
- 本型号激光雷达测距范围是40~2200cm,若测量距离未在此范围内,则测量数据会异常。
- 产品调试过程中需要注意产品的默认版本是PIX版本还是标准版本;
- 本产品采用潮湿敏感型元件,避免储运及工作于高湿度高温度环境中。 避免产品处于酸性或浓硫等较恶劣环境下使用
引脚说明
标号 | 名称 | 功能描述 |
---|---|---|
红线 | VCC | 电源正极5V |
黑线 | GND | 电源负极 |
白线 | RXD | 串口接收 |
绿线 | TXD | 串口输出 |
使用教程
此处共列出三种方式,旨在让大家对单点激光测距仪有一个直观的认识,该激光测距仪器还可以用在无人机仿地飞行,机器人避障和无人机辅助降落等方面
准备
- 硬件
- 1 x LEONARDO V1.2 开发板
- 1 x IO 传感器扩展板 V7.1
- 1 x Gravity: I2C LCD1602彩色背光液晶屏
- 1 x 7.4V 2500MA 锂电池 (带充放电保护板)
- 1 xGravity: 4Pin传感器转接板
- 1 xUSB to Serial 转串口
- 若干 杜邦线
- 软件
- Arduino IDE 点击下载Arduino IDE
接线图
下列两种连接电路图分别对应相应的程序
- 接线图1是在需要使用PC端的串口软件来显示检测的距离以及对整个系统供电(使用PC供电时,需要考虑供电是否充足,否则会导致异常如掉串口,以及没有数据)
- 接线图2只需要加上移动的电源(电压7V-12V)便可以进行移动测试
- 接线图3是直接使用TF02的官方上位机的接法
PC串口显示
LCD1602显示(适合室外)
上位机
代码
PC串口显示
- 需要使用PC串口工具,读到的数据会显示在串口工具界面
/*!
* @file TF02-V1.1.ino
* @copyright [DFRobot](http://www.dfrobot.com), 2017
* @conner Chao.Shi@DFROBOT.com
* @version V1.0
* @date 2017-9-15
*/
//#include<SoftwareSerial.h> //软串口头文件
//SoftwareSerial Serialx(2,3); //定义软串口名称为 Serialx,并把 pin2 定为 RX,pin3 定为 TX
#define Serialx Serial1
int dist;
int strength;
int check;
int i;
int uart[9];
const int HEADER=0x59;
void setup()
{
delay(5000);
Serial.begin(115200);
Serial.println("hello start");
Serialx.begin(115200);
}
void loop()
{ //delay(100);
while(Serialx.available()==0); //等待数据
if ( Serialx.available()){
if( Serialx.read()==HEADER){ //检查帧头1
uart[0]=HEADER;
while(Serialx.available()==0);
if( Serialx.read()==HEADER){ //检查帧头2
uart[1]=HEADER;
for(i=2;i<9;i++){
while(Serialx.available()==0); //读一组数据,并将数据值写进数组
uart[i]= Serialx.read();
}
check=uart[0]+uart[1]+uart[2]+uart[3]+uart[4]+uart[5]+uart[6]+uart[7]; //检查校验位
if(uart[8]==(check&0xff)){
dist=uart[2]+uart[3]*256; //距离数据处理
strength=uart[4]+uart[5]*256; //信号强度数据处理
Serial.print("dist = ");
Serial.print(dist);
Serial.print("cm ");
Serial.print('\t');
Serial.print("strength = ");
Serial.print(strength);
Serial.print('\n');
}
}
}
}
}
- 串口软件显示数据格式如下
-------------------------DISPLAY--------------------------
Distance: 1800 cm Strength: 254
LCD显示
/*!
@file LCD-TF02-V1.1.ino
@copyright [DFRobot](http://www.dfrobot.com), 2017
@conner Chao.Shi@DFROBOT.com
@version V1.0
@date 2017-9-15
*/
//#include<SoftwareSerial.h> //软串口头文件
//SoftwareSerial Serialx(2,3); //软串口定义
#include <Wire.h>
#include <DFRobot_RGBLCD.h> //LCD头文件
#define Serialx Serial1
int dist;
int strength;
int check;
int i;
int uart[9];
const int HEADER = 0x59;
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");
Serialx.begin(115200);
lighttime = millis();
lcd.setCursor(0, 0);
lcd.print("Dis:");
lcd.setCursor(0, 1);
lcd.print("Str:");
lcd.setRGB(255, 255, 000);
}
void loop() {
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);
while (Serialx.available() == 0); //读取数据
if ( Serialx.available()) {
if ( Serialx.read() == HEADER) {
uart[0] = HEADER;
while (Serialx.available() == 0);
if ( Serialx.read() == HEADER) {
uart[1] = HEADER;
for (i = 2; i < 9; i++) {
while (Serialx.available() == 0);
uart[i] = Serialx.read();
}
check = uart[0] + uart[1] + uart[2] + uart[3] + uart[4] + uart[5] + uart[6] + uart[7];
if (uart[8] == (check & 0xff)) {
dist = uart[2] + uart[3] * 256;
strength = uart[4] + uart[5] * 256;
lcd.setCursor(5, 0);
lcd.print( dist / 1000); //LCD显示
lcd.print( dist / 100 % 10);
lcd.print('.');
lcd.print( dist / 10 % 10);
lcd.print( dist % 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);
}
}
}
}
}
- LCD显示屏上显示下列数据格式
Dis: 18.00 m
Str: 00241
上位机
- 上位机显示距离界面(标准数据格式)
常见问题
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。
更多
[Link DFRobot商城购买链接]