(SKU:SEN0238)DE-LIDAR TF02(ToF) Laser Rangefinder (22m)
来自DFRobot Product Wiki
目录 |
简介
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版本还是标准版本; 本产品采用潮湿敏感型元件,避免储运及工作于高湿度高温度环境中。 避免产品处于酸性或浓硫等较恶劣环境下使用
引脚说明
|
|
使用教程
此处共列出三种方式,旨在让大家对单点激光测距仪有一个直观的认识,该激光测距仪器还可以用在无人机仿地飞行,机器人避障和无人机辅助降落等方面
准备
- 硬件
- 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
上位机
- 上位机显示距离界面(标准数据格式)
常见问题
(此处添加TF02常见问题解答)
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。
更多
(此处添加北醒相关的可公开的资料)