TOF Laser Range Sensor (B)

来自Waveshare Wiki
跳转至: 导航搜索
TOF-Laser-Range-Sensor-B
{{{name2}}}
{{{name3}}}
功能简介
特性 激光传感器
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 I2C UART

说明

产品简介

TOF Laser Range Sensor (B)是一款基于 TOF (飞行时间) 技术的激光测距传感器。内置控制器和测距算法,测距范围可达 15m,精度高达 ±2%,分辨率可达 1mm。支持 UART 和 I2C 通信,具备超小的 FOV 角,使得距离更远抗光干扰能力更强,室内外环境均适用,可以作为测距工具进行距离检测,也可作为机器人避障/路线规划,还可用于无人机定高/天花板检测等领域。

应用场景

  • 无人机定高、天花板检测
  • 机器人避障
  • 测量与检测
  • 智能手势控制
  • 1维手势识别

工作原理

TOF是一种绝对距离检测技术,即传感器发出经过调试的近红外光,遇物体后反射,传感器通过计算光线发射和反射时差或相位差,来换算被拍摄景物的距离,以产生深度信息。相比于双目方案与3D结构光方案,TOF具有工作距离远,适用场景广,较远距离精度高等优点。因此常被应用于人员接近检测、机器人避障、照相机自动对焦等场合。室外环境中有来自太阳光的近红外光,会对模块的测量效果产生影响。

TOF-Laser-Range-Sensor-work.jpg

产品参数

产品 TOF Laser Range Sensor TOF Laser Range Sensor (B)
典型测距范围 短距:0.012 ~ 2.16m 0.10 ~ 15.0m
中矩:0.012 ~ 3.60m
长距:0.01 ~ 5.00m
典型测距精度 短距:精度 ±1.0cm,标准差 <0.3cm 0.10 ~ 2m ±2cm;2 ~ 15m ±2%
中距:精度 ±1.0cm,标准差 <1.5cm
长距:精度 ±1.5cm,标准差 <0.5cm@0.01~3m,
标准差 <8cm@3~5m
测量分辨率 1mm
供电电压 3.7 ~ 5.2V (防反接保护)
工作温度 -10°C ~ 60°C
波长 940nm (符合 Class1 标准) 750 ~ 830nm 激光符合 IEC 60825-1:2014 第 3 版规定的 Class2 标准
视场角 (FOV) 15° ~ 27° (多档位可调) 1° ~ 2°
通信接口 UART (TTL 信号线电平 3.3V)
CAN (2 个接口可同时作为 CAN 接口) I2C (支持并联多个,从机地址为 0x08+模块ID)
通信波特率 UART:115200 ~ 3000000bps (默认 921600bps)
UART:115.2Kbps ~ 3000Kbps (默认 921.6Kbps) I2C:可达 400Kbps
级联数量 UART 接口支持级联多达 8 个,CAN 接口支持级联多达 7 个 可通过 I2C 并联多达 8 个
抗环境光 较弱,仅支持室内用 约 100K LUX 照度 (室内和室外均能用)
产品功耗 290mW (UART 主动输出,长距模式供电电压 5.0V,电流 58mA) 610mW(UART 主动输出,供电电压 5.0V,电流 122mA)
产品重量 2.7g 7.7g
长宽高 35.58 × 12 × 8.05mm 22.7 × 28 × 13.6mm

功能描述

【ID | 身份标识】

  • ID是用于区分不同传感器而设定的一个变量,在级联连接时用于识别各个传感器。

【Interface & Baudrate | 接口与波特率】

TOF Laser Range Sensor (B) 支持配置为UART、IIC、I/O 通信方式:

UART|串口

UART串口通信波特率设置范围如下:

UART串口波特率 说明
115200,230400,460800,921600,1000000,1200000,2000000,3000000 默认波特率为921600

UART接口模式支持“主动输出”和“查询输出”: 上位机下载:

  • Active Output | 主动输出:
    • UART 主动输出模式可在单模块时使用,该模式下模块以 50Hz 的频率主动输出测量信息,输出格式遵循 NLink_TOFSense_Frame0 协议。
    • 通过 USB TO TTL 模块(线序和供电电压参考数据手册)连接 TOF 系列产品到 Waveshare TOFAssistant 软件,识别成功后点击 进入设置页面,UART 主动输出模式配置如下图 ,配置完参 数后需要点击写入参数按钮来保存参数,写入参数成功后可以读取一次参数来确认参数是否写入 成功。(更改模块的波特率参数后,需要重新插拔一下 USB TO TTL 模块来自动识别模块):
      UART主动输出模式配置图
  • Query Output | 查询输出:
    • UART 查询输出模式可在单模块时使用,该模式下通过控制器向期望查询模块发送包含该模 块 ID 的查询指令,模块即可输出一帧测量信息。查询帧格式遵循协议 NLink_TOFSense _Read_Frame0,输出帧格式遵循协议 NLink_TOFSense_Frame0。
    • 通过 USB TO TTL 模块(线序和供电电压参考数据手册)连接 TOF 系列产品到 Waveshare TOFAssistant 软件,识别成功后点击 进入设置页面,UART 查询输出模式配置如下图,配置完参 数后需要点击写入参数按钮来保存参数,写入参数成功后可以读取一次参数来确认参数是否写入 成功。(更改模块的波特率参数后,需要重新插拔一下 USB TO TTL 模块来自动识别模块):
      UART 查询输出模式配置图

I2C | 集成电路总线

  • I2C 输出模式下,波特率设置范围如表
I2C波特率 说明
最高400KHz 最高400KHz,有主机决定
  • I2C Address | I2C 地址
I2C地址 说明
0x08~0x77 默认地址为 0x08(7 位地址),从机地址为 0x08+模块 ID,更改模块 的 ID 参数即可更改从机地址。通信时要注意移位和增加读写位,即 地址为 0x08 时发送带读写位的字节为 0x10(写)、0x11(读)

I2C 通信模式下通过控制器按照 I2C 通信时序向指定从机地址的期望查询模块发送读取帧, 即可获得模块的距离等相关信息。此外,也可以通过 I2C 通信来更改模块的输出方式等各项参数。 读取帧和写入帧格式遵循协议 NLink_TOFSense_IIC_Frame0。 模块处于 UART 模式时(注意 Waveshare TOFAssistant 无法识别处于 I2C 模式下的模块),通过 USB TO TTL 模块(线序和供电电压参考数据手册)连接 TOF 系列产品到 Wavshare TOFAssistant 软件,识别成功后点击 进入设置页面,I2C 输出模式配置如下图,可以通过设置模块的 ID 来改变该模块 的 I2C 从机地址(7 位从机地址为 0x08+模块 ID,ID 设置范围为 0~111),配置完参数后需要点 击写入参数按钮来保存参数。注:切换到 I2C 模式后,可以参考 FAQ 章节中的方式来更改回 UART 模式。

I2C 输出模式配置图

I/O Output | I/O 输出

  • I/O 输出模式下,不能输出测距值,只是在距离从小变大超过高阈值的时候或者从大到小低 于低阈值的时候让 I/O 口电平反转。

模块处于 UART 模式时(注意 Waveshare TOFAssistant 无法识别处于 I/O 模式下的模块),通过 USB TO TTL 模块(线序和供电电压参考数据手册)连接 TOF 系列产品到 Waveshare TOFAssistant 软件,识别 成功后点击 进入设置页面,首先设置滞环起点 Band_Start 与滞环宽度 Bandwidth 确定滞环区 间,I/O 输出模式配置如图 4;距离值通过滞环比较转换为高低电平输出,TX/SCL 与 RX/SDA 输出互补电平,滞环比较示意图如图 5 所示。配置完参数后需要点击写入参数按钮来保存参数。 注:切换到 I/O 模式后,可以参考 FAQ 章节中的方式来更改回 UART 模式。

例如,Band_Start 和 Bandwidth 都设置成 500,对应的是 0.5 米。当测距值为 0.3 米时,RX 为高,TX 为低,测距值变大到 0.8 米,RX 为高,TX 为低,测距值超过 1 米时,电平反转,RX 为低,TX 为高。测距值从 1 米多降到 0.8 米,RX 为低,TX 为高,测距值降到低于 0.5 米时, 电平反转,RX 为高,TX 为低。

I/O 输出模式配置图

其中 TOF (B) 的 Band_Start、Bandwidth 取值范围[0~15000]/[0~25000], 单位:mm。

滞环比较示意图

【Distance Status | 距离状态指示】

模块可以输出当前距离状态,用户可结合距离状态进行数据处理,距离状态含义如下:

数值 说明
0 测量距离无效
1 测量距离有效

【Signal Strength | 信号强度】

  • 指示当前返回信号的强度,该值越大表明返回信号越强。

【Range Precision | 测距精度】

  • 指示当前测距的精度,该值越小表明测距精度越好。

【FOV | 视场角】

  • FOV 视场角的大小决定了 TOF 的视野范围,TOF (B)模块的视场角为 1~2°。

【Mode Switch | 模式切换】

  • 如果模块处于 UART 模式,可以连接 Waveshare TOFAssistant 软件来切换到 IIC 或 I/O 模式。如果模块处 于 IIC 模式,需要通过 IIC 通信向模块发送指令来切换回 UART 模式。此外,在没有 IIC 测试 环境或者切换到 I/O 模式后可以参考用户手册 FAQ 章节的方式来切换回 UART 模式。

协议解析

  • 协议由 Frame Header(帧头)、Function Mark(功能字)、Data(数据)、Sum Check(校验和)组成。
    • 其中 Frame Header、Function Mark 为固定不变的数值;
    • Data 为传输的数据内容;
    • Sum Check 为 Frame Header、Function Mark、Data 相加求和(即前面所有字节相加)后的最低字节。
  • 协议组成:
Frame Header + Function Mark + Data + Sum Check

说明:协议包遵循小端模式原则,即低字节在前,高字节在后。

  • 协议内容概述
协议 类型 概述
NLINK_TOFSENSE_FRAME0 定长 UART 输出协议, 内容包括节点时间戳、距离、距离状态、 信号强度
NLINK_TOFSENSE_READ _FRAME0 定长 UART 读取协议, 内容包括节点 ID
NLINK_TOFSENSE_IIC_FRAME0 变长 IIC 通信协议, 内容包括距离、距离状态、信号强度等

NLink_TOFSense_Frame0

  • 数据来源: 将模块连接上位机,配置 UART 为主动输出模式,NLink_TOFSense_Frame0 协 议,距离数据解析可以参考 FAQ
  • 原始数据:
57 00 ff 00 9e 8f 00 00 ad 08 00 00 03 00 06 41
  • 解析表:
Data Type Length (Bytes) Hex Result
Frame Header uint8 1 57 0x57
Function Mark uint8 1 00 0x00
reserved uint8 1 ff *
id uint8 1 00 0
System_time uint32 4 9e 8f 00 00 36766ms
dis*1000 uint24 3 ad 08 00 2.221m
dis_status uint8 1 00 0
signal_strength uint16 2 03 00 3
range_precision uint8 1 06 6cm
Sum Check uint8 1 41 0x41

NLink_TOFSense_Read_Frame0

  • 数据来源: 将模块连接上位机,配置为 UART 查询输出模式,id 为 0,通过上位机发送下列 数据实现数据查询。如需查询其他 ID 的模块,更改 id 和校验和字节发送即可。
  • 原始数据:
57 10 FF FF 00 FF FF 63
  • 解析表:
Data Type Length (Bytes) Hex Result
Frame Header uint8 1 57 0x57
Function Mark uint8 1 10 0x10
reserved uint8 2 ff *
id uint8 1 00 0
reserved uint8 2 ff *
Sum Check uint8 1 63 0x63

NLink_TOFSense_IIC_Frame0

  • 从机地址:模块在 IIC 总线中作为从机,默认地址为 0x08(7 位地址),从机地址为 0x08+ 模块 ID,更改模块的 ID 参数即可更改从机地址。通信时要注意地址移位和增加读写位,即地址 为 0x08 时发送带读写位的字节为 0x10(写)、0x11(读)。
  • 寄存器地址:若寄存器中无对应参数则默认输出 0xff
AD 08 00 00 03 00 FF FF
  • 解析表:
NLink_TOFSense_IIC_Frame0 寄存器解析及通信流程表

IIC 通信流程:

NLink TOFSense IIC comunication.png

NLink_TOFSense_Setting_Frame0

  • 数据来源: 设置指令。
  • 解析表:

TOFSense-B-Setting-Frame.png

软件说明

TOF Assistant是TOF激光测距模块配套的调试软件,主要作用为:配置调试、状态显示、功能应用、固件升级:

  • 配置调试:用于配置节点相关参数,如ID、工作模式、波特率等。
  • 功能应用:用于应用开发,如数据导入导出、运动轨迹存储、历史轨迹回放等。
  • 固件升级:用于给产品进行有线固件升级。

产品尺寸

  • TOF-Laser-Range-Sensor-B-details-size.jpg

树莓派使用

树莓派环境配置

开启UART

如果模块是设置为UART模式,并且通过对应接到树莓派的UART接口,那么树莓派的UART也需要对应设置开启。由于树莓派串口默认用于终端调试,如需使用串口,则需要修改树莓派设置。执行如下命令进入树莓派配置:

sudo raspi-config

选择Interfacing Options ->Serial ->no -> yes,关闭串口调试功能。 A7600C1-Cat-Hat-OpenSerial.jpg
需要重启

sudo reboot

打开/boot/config.txt文件,找到如下配置语句使能串口,如果没有,可添加在文件最后面:

enable_uart=1

重启生效

开启I2C接口

如果模块是设置为I2C模式,并且通过对应接到树莓派的I2C接口,那么树莓派的I2C也需要对应设置开启,操作如下:

sudo raspi-config

Sense-hat-b-user-manual-cn5741.png
Sense-hat-b-user-manual-cn5743.png

模组参数设置

TOF Laser Range Sensor模块UART波特率需要通过上位机设置成:115200;
树莓派使用TOF Laser Range Sensor模块的效果如下:
TOF Laser Range Sensor raspberry1.jpg

硬件连接

接入树莓派UART的参考如下:

  • TOF-Laser-Range-Sensor-B-details-13.jpg

接入树莓派I2C的参考如下:

  • TOF-Laser-Range-Sensor-B-details-9.jpg

Jetson Nano使用

硬件连接

TOF Laser Range Sensor jetson connect.jpg

软件设置

TOF Laser Range Sensor模块UART波特率需要通过上位机设置成:115200;
TOF-setting-1.png

TOF-setting-2.png
Jetson nano使用TOF Laser Range Sensor模块的效果如下:
TOF Laser Range Sensor jetson Demo.png

Arduino使用

硬件连接

TOF-Laser-Range-Sensor-Arduino-connected.jpg

软件设置

TOF Laser Range Sensor模块UART波特率需要通过上位机设置成:115200;
TOF-setting-1.png

TOF-setting-2.png

TOF-Arduino-Test.jpg

FAQ


Q1. 室外(强光)条件下可以用吗?

  模块可以抵抗一定的自然光影响。可以在室外使用。

Q2. 多个模块是否有干扰?

  没有干扰。当多个模块同时工作时,即使相互之间的红外光线交叉或打到同一个位置,也不会影响实际测量。

Q3. 为什么模块没有数据输出?

  各个模块均经过严格的测试后发货,没有数据时请先自行检查模式、接线(供电电压、线序 是否正确,以及推荐使用万用表测试通信双方两端的引脚是否导通)、波特率等配置是否正确; 对于 IIC 输出模式,需要使用主机通过 IIC 通信向设置的从机地址按照手册的通信时序来读取数 据;对于 I/O 输出模式,请参考 I/O 模式相关章节介绍。

Q4. 安装时需要注意什么?

安装时需避免 FOV 角度内有遮挡。另外需要注意与地面高度,应避免 FOV 内出现地面遮挡 等类似反射面,如果安装高度离地面较近,可以考虑将模块稍微倾斜向上进行安装。

Q5. 模块的 UART、IIC 和 I/O 是同一个接口吗?

模块的 UART、IIC、I/O 接口共用相同的物理接口,针对不同的通讯模式转换对应线序即可。

Q6. 切换到 IIC 或 I/O 模式后,为什么 Waveshare TOFAssistant 软件识别不了模块?如何在不同通讯模式间 进行切换?

目前 NAssistant 软件只支持识别 UART 模式下的模块。在 UART 模式下时,可以通过上位机识别成功后进入设置页面将模块配置为 IIC 或 I/O 通讯模式;在 IIC 通讯模式下,可以按照IIC通信协议通过 IIC 通信向模块发送指令来切换回 UART 或 I/O 模式;此外,在没有IIC 测试环境或者切换到 I/O 模式后可以通过以下方式来切换回 UART 模式:
1、用户需要准备一个支持 921600 波特率的 USB 转 TTL 模块(推荐CP2102)并且安装对应的驱动程序,将 USB 转 TTL 模块的 TX、RX、GND 三根线连接到 TOF 模块的对应引脚,VCC引脚暂时先不连接,然后把 USB 转 TTL 模块插入电脑。
2、打开 NAssistant 软件,点击 图标进入串口调试助手,把波特率改为921600,选择USB转 TTL 模块对应的 COM 口然后点击 连接按钮连接 COM 口(大部分情况下会自动连接),在单项发送的文本框内输入 54 20 00 ff 00 ff ff ff ff 00 ff ff 00 10 0e ff ff ff ff ff ff ff ff ff ff ff 00 ff ff ff ff 7c,在右下角的定时发送栏将发送间隔改为 20ms,然后勾选定时发送。
3、此时将 USB 转 TTL 模块的 5V 接到 TOF 模块的 VCC 引脚,模块会切换到UART模式并开始输出数据,此时取消勾选定时发送按钮,然后拔掉 USB 转 TTL 模块重新给模块上电后点击主页面的 识别按钮即可识别模块。
如果切换失败,将 USB 转 TTL 模块拔掉再重复一下整个步骤,切勿在发送命令的情况下多次插拔 VCC 引脚。如果能够正常识别模块但是串口输出数据异常,可以在设置页面中手动更改到 UART 模式。
PS:如果将 TOF 模块的 VCC 引脚接到 USB 转 TTL 模块的 5V 后出现模块一直发送80 00 8000..类似的协议数据的情况,先点击 连接按钮暂时断开 COM 口,把波特率改为115200 然后点击 连接按钮重新连接 COM 口,如果此时串口调试助手的数据为 b3 b1 开头的数据则需要在单项发送的文本框内输入 de ed 00 00 05 04 3b 01 00 00 10 ,单击发送,然后拔掉USB 转TTL模块重新给模块上电后点击主页面的识别按钮即可识别模块。如果重新插上后数据还是b3 b1 开头,重复一下 PS 的步骤。

Q7. 超量程时模块会输出什么数据?

超过 15 米量程时,在 15 到约 20 米范围时误差较大,超过 20 米最大量程后,距离输出固定 值 0 米,此时可以参考数据手册的距离状态指示来判断数据是否有效。

Q8. 模块是否支持输出点云信息?

模块单次只能输出一个距离,暂时不支持点云信息的输出。

Q9. 模块使用的串口通信端子型号是什么?飞控、单片机上没有这个端子的接口怎么办?

模块使用的是 GH1.25 的端子。可以自行购买 GH1.25 转其他端子的转接线,或者剪断产 品 附带的 GH1.25-GH1.25 接线,自行焊接其他的端子。线序、供电电压、信号线电平等请参 考数 据手册。

Q10. 接收到的 ad 08 00 如何解算为距离值?

协议帧中的数据是小端模式存储的,而且编码时乘了一定的倍率,举例来说 ad 08 00 先恢复 成 16 进制数据 0x0008ad 换算成 10 进制为 2221,除以 1000 为 2.221 米。

Q11. 校验和是怎么计算的?

校验和就是前面所有的字节相加然后取最低字节的数据,比如 55 01 00 ef 03 的校验和就是 0x55+0x01+0x00+0xef+0x03=0x0148,那校验和就是 48,所以这一帧的完整数据是 55 01 00 ef 03 48。

Q12. 为什么 IIC 模式下无法通信?

IIC 模式下,设备的 SDA 和 SCL 引脚推荐使用开漏模式输出,此时总线上需要有上拉电阻。 通信时需要按照标准的 IIC 通信时序来编写起始、终止、读、写、应答等函数,与 TOF 模块通 信时,参考用户手册的 NLink_TOFSense_IIC_Frame0 协议来对寄存器进行读取和写入。特别要 注意 7 位从机地址的移位与增加读写位发送。

Q13. 打开软件报错“由于找不到 MSVC***.dll 文件……”,可能是电脑缺少微软相应运行时组件,选择系统对应位数下载安装通常即可解决?

Visual C++ Redistributable for Visual Studio 2017,若上述安装失败或者 显示成功但打开TOFAssistant程序仍提示缺少dll文件,则尝试安装 KB2999226 补丁程序,注意,请选择电脑系统对应版本补丁程序,详细请参考博客关于 api-ms-win-crt-runtimel1-1-0.dll 缺失的解决方案

Q14. 打开软件报错“由于找不到Qt***.dll……”?

请检查安装文件是否被360等安全软件无声拦截,请退出安全软件后,重新安装。另外以管理员权限运行

技术支持


联系人:黄工
QQ:2850151199
EMAIL:2850151199@qq.com
电话:0755-83040712
微信:扫下方二维码添加
Service20-Weichat.png

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证