I2C RGB按钮

1. 产品简介

这是一款64×8矩阵式DTOF全固态激光雷达,具备512个点位同步测距能力。它采用DTOF(直接飞行时间)测距原理,能有效抵抗环境光和温度干扰,确保在室内外常规场景下稳定工作。传感器拥有120°超宽水平视场角和20°垂直视场角,最远测距达5米,其面阵式检测方式可为机器人提供广阔、密集的前方环境信息。

该传感器专为机器人导航设计,能有效解决前向避障与局部盲区检测两大核心问题。它可灵活安装于机器人前方或机械臂等部位,精准识别低矮障碍、家具边角及狭窄通道,及时规避碰撞。此外,它提供UART和Type-C双通讯接口,支持单点、单行或全矩阵数据输出,并配有GUI可视化软件,可实时显示测量数据、深度图与灰度图,使环境感知结果一目了然。

2. 技术规格

传感器参数

测距范围 100~5000mm@90%反射板/室内,750lux
探测视场角 120°(H)×20°(V)>50cm;160°(H)×20°(V)<50cm
测距分辨率 14mm
测距精度 近距离:±10cm(0.1m~5m,常规物体如卡其色纸箱);±4cm(0.1m~0.5m,90%反射板/室内,750lux)。远距离:±3cm(0.5m~5m,90%反射板/室内,750lux)。
测距帧率 8fps(64×8矩阵面测量);64fps(1×8单行测量)
测距模式 连续测距
矩阵数量 64*8共512个测距点
激光波长 905nm

电源参数

供电电压 5V
电平电压 3.3V
工作电流 80mA

接口参数

数据接口 UART/USB
接口形式 PH2.0-4P/Type-C
串口默认波特率 921600bps

物理尺寸

传感器模组尺寸 62×26×24mm
安装孔尺寸 直径3.0mm
重量 19.6g

3. 功能指示图

SEN0682-Pinout

序号 名称 功能描述
USB接口 供电及数据传输
URAT接口 供电及数据传输,线序:5V、GND、RX、TX
电源指示灯 红色LED灯,供电时常亮

4. 上位机使用教程

4.1 硬件准备

4.2 软件准备

本产品配有上位机软件wy3DViewer,在PC端安装打开后,可以查看实时测量数据和成像效果。

4.3 硬件连接

传感器有2种连接方式,一种是通过传感器的USB-C接口直连到PC端的USB-C接口。另一种是传感器的Gravity-UART接口通过一条PH2.0-4P线连接TTL转USB工具,再由工具连到PC端。

【PC端直连】

SEN0682-PC端直连

【通过串口工具】

SEN0682-串口工具连接

4.4 PC端操作

  1. 通过以上任意一种方式将传感器连接到PC端后,打开上位机软件wy3DViewer.exe,并点击运行。
  2. 进入到设备的点云图界面,界面会实时显示传感器的测量数据和成像效果,如下图。

SEN0682-上位机界面

实时数据功能区说明:

AVG Clear 按钮 清除已累计帧数和计算值。
Current 当前帧关键点处距离平均值(假设当前帧中心是9个点的平均值,去掉最大最小值,7个值取平均)。
Statistics 累计帧平均值,使用Current值累计计算平均值。
AVG frames 累计帧数。
Center 当前帧中心点的实际距离。
Closest 当前帧最近点的实际距离。

更多功能说明请查看SEN0682-wy3DViewer使用教程-V1.0.pdf

5. ESP32-E Arudino库示例

5.1 硬件准备

5.2 软件准备

5.3 硬件连接

SEN0682-ESP32-E主控连接图

传感器引脚 ESP32-E 主控引脚
VCC VIN
GND GND
TX RXD(GPIO25)
RX TXD(GPIO26)

接线前请断主控电源,避免短路造成硬件损坏。传感器必须使用5V供电,禁止接3.3V电源。

5.4 例1:获取单点数据

示例程序:配置64x8 DTOF传感器,读取指定点的XYZ坐标和强度,并通过串行输出。

#include "DFRobot_64x8DTOF.h"
#define LINE_NUM  4
#define POINT_NUM 32

// Instantiate the sensor object
// Use Serial1 for communication, change pins 25/26 to your actual RX/TX pins
DFRobot_64x8DTOF dtof64x8(Serial1, SERIAL_8N1, 25, 26);

void setup()
{
  Serial.begin(115200);
  while (!Serial);
  while (!dtof64x8.begin());
  Serial.println("DFRobot 64x8DTOF Single Point Demo");

  // Retry configuring frame mode until success
  Serial.println("Configuring frame mode: Single Frame...");
  while (!dtof64x8.configFrameMode(DFRobot_64x8DTOF::eFrameSingle)) {
    Serial.println("Error: configFrameMode failed, retrying...");
    delay(200);
  }
  Serial.println("Configuration Single Frame Successful!");
  // 2. Configure Single Point Mode (retry until success)
  // Example: Line 4, Point 32 (Center of the sensor roughly)
  // Line range: 1-8
  // Point range: 1-64
  Serial.print("Configuring Single Point Mode (Line ");
  Serial.print(LINE_NUM);
  Serial.print(", Point ");
  Serial.print(POINT_NUM);
  Serial.println(")...");
  while (!dtof64x8.configMeasureMode(LINE_NUM, POINT_NUM)) {
    Serial.println("Configuration Failed, retrying...");
    delay(200);
  }
  Serial.println("Configuration Successful!");
  delay(300);
}

void loop()
{
  int parsed = dtof64x8.getData(300);
  if (parsed > 0) {
    char numbuf[16];
    Serial.print("Point Data -> ");
    Serial.print("X: "); sprintf(numbuf, "%04d", dtof64x8.point.xBuf[0]); Serial.print(numbuf); Serial.print(" mm, ");
    Serial.print("Y: "); sprintf(numbuf, "%04d", dtof64x8.point.yBuf[0]); Serial.print(numbuf); Serial.print(" mm, ");
    Serial.print("Z: "); sprintf(numbuf, "%04d", dtof64x8.point.zBuf[0]); Serial.print(numbuf); Serial.print(" mm, ");
    Serial.print("I: "); Serial.println(dtof64x8.point.iBuf[0]); 
  } else {
    Serial.println("getData timeout or error");
  }

  delay(500);
}

运行结果

串口循环输出指定点的X/Y/Z三维坐标(mm)和强度。

SEN0682-获取单点结果

  1. I denotes the intensity of reflected light received by the sensor, with a typical value range of 0-255.
  2. A higher value indicates better reflectivity of the target surface, and the ranging result is usually more stable.
  3. A value of 0 may mean the target is beyond the detection range or has excessively poor reflectivity.

5.5 例2:获取单行数据

示例程序:将64x8DTOF传感器配置为单线模式,获取第4行数据(X/Y/Z/I),并通过串行输出错误提示。

#include "DFRobot_64x8DTOF.h"
DFRobot_64x8DTOF dtof64x8(Serial1, SERIAL_8N1, 25, 26);
#define LINE_NUM 4

void setup()
{
  Serial.begin(115200);
  while (!Serial);
  while (!dtof64x8.begin());
  Serial.println("Configuring frame mode: Single Frame...");
  while (!dtof64x8.configFrameMode(DFRobot_64x8DTOF::eFrameSingle)) {
    Serial.println("configFrameMode failed, retrying...");
    delay(200);
  }
  Serial.println("Configuration Single Frame Successful!");

  // Configure single line mode (retry until success)
  Serial.print("Configured multi-point mode: line=");
  Serial.print(LINE_NUM);
  Serial.println(")");
  while (!dtof64x8.configMeasureMode(LINE_NUM)) {
    Serial.println("Configuration failed, retrying...");
    delay(200);
  }
  Serial.println("Configuration successful.");
  delay(300);
}

void loop()
{
  Serial.println("12345");
  int cnt = dtof64x8.getData(300);
  Serial.print("Got points: ");
  Serial.println(cnt);
  if (cnt > 0) {
    for (int i = 0; i < cnt; i++) {
      char numbuf[16];
      Serial.print(1 + i);
      Serial.print(": X="); sprintf(numbuf, "%04d", dtof64x8.point.xBuf[i]); Serial.print(numbuf); Serial.print(" mm ");
      Serial.print("Y="); sprintf(numbuf, "%04d", dtof64x8.point.yBuf[i]); Serial.print(numbuf); Serial.print(" mm ");
      Serial.print("Z="); sprintf(numbuf, "%04d", dtof64x8.point.zBuf[i]); Serial.print(numbuf); Serial.print(" mm ");
      Serial.print("I="); Serial.println(dtof64x8.point.iBuf[i]);
    }
  }else {
    Serial.println("getData timeout or error");
  }
  delay(500);
}

运行结果:串口连续输出第4行64个测量点的数据。

SEN0682-获取单行数据结果

6. 树莓派python库示例

6.1 硬件准备

6.2 软件准备

  1. 下载 Python 库:点击下载 DFRobot_64x8DTOF library
  2. 工具准备:MobaXterm_Personal_23.4(远程连接树莓派,可选)

注意:请查看树莓派系统配置,确保成功启用串口通信。

6.3 硬件连接

SEN0682-树莓派连接图

传感器引脚 树莓派4B引脚
5V 5V(2号引脚)
GND GND(6号引脚)
TX RXD(10号引脚,GPIO15)
RX TXD(8号引脚,GPIO14)

接线前请断开树莓派电源,避免短路造成硬件损坏;传感器必须使用5V供电,禁止接3.3V电源。

6.4 操作步骤

  1. 树莓派开机,获取IP地址:192.168..**,并确认树莓派以下配置SSH、Serial Port是否开启。
    SEN0682-RPi Step 1

  2. 这里借助MobaXterm_Personal_23.4软件,远程连接树莓派。

  3. 成功连接后,用以下命令行获取本传感器的python库。输入后按回车键Enter。

git clone https://github.com/DFRobot/DFRobot_64x8DTOF
  1. 成功之后,再输入以下命令行获取例程demox.py。输入后按回车键Enter。
cd DFRobot_64x8DTOF/python/raspberrypi/example/

之后再输入以下命令行。然后可以看到4个demo,如下图所示。

ls

SEN0682-RPi Step 2

  1. 例如,要执行01. full_output_demo.py例程,先输入下面命令行,然后按回车键Enter。
python 01.full_output_demo.py
  1. 等待命令执行后,就可以看到传感器的检测结果。如下图所示。
    SEN0682-RPi Step 3

  2. 其他python例程可按上述步骤重复操作,这里就不过多赘述了。

8. 串口通讯示例

  • 配置串口设置:波特率921600,数据位8,停止位1,校验位NONE。
  • 发送设置:勾选转义字符自动解析。
  • 发送AT命令末尾需要加换行符。例如:AT+STREAM_CONTROL=1\n
    SEN0682-串口配置

例:查询/设置指定输出范围数据

  1. 查询指定的输出行及范围
关闭雷达帧数据输出 发送 AT+STREAM_CONTROL=0\n 返回 OK
查询指定的输出行及范围 发送 AT+SPAD_OUTPUT_LINE_DATA? \n 返回SPAD_OUTPUT_LINE_DATA=1,1,64
打开雷达帧数据输出 发送 AT+STREAM_CONTROL=1\n 返回 OK
  1. 设置指定行及其起始点和结束点
关闭雷达帧数据输出 发送 AT+STREAM_CONTROL=0\n 返回 OK
设置指定行及其起始点和结束点
输出第一行第5-15点的数据 发送AT+SPAD_OUTPUT_LINE_DATA=1,5,15 \n 返回 OK
输出第一行第32点数据 发送AT+SPAD_OUTPUT_LINE_DATA=1,32,32 \n 返回 OK
输出全部八行数据 发送AT+SPAD_OUTPUT_LINE_DATA=0,1,64 \n 返回 OK
保存参数 发送 AT+SAVE_CONFIG\n 返回 OK
打开雷达帧数据输出 发送 AT+STREAM_CONTROL=1\n 返回 OK

注:当参数1为0时,固定输出64*8全部数据,此时参数2、3无效。

更多通讯指令请参见SEN0682_配置命令列表文档-V1.0.docx

9. 资料下载

10. API 函数库

/**
 * @fn DFRobot_64x8DTOF
 * @brief 构造函数,传入串口和配置
 * @param serial 硬件串口引用
 * @param config 串口配置(例如 SERIAL_8N1)
 * @param rxPin RX 引脚号(支持重映射的平台可选)
 * @param txPin TX 引脚号(支持重映射的平台可选)
 */
DFRobot_64x8DTOF(HardwareSerial &serial, uint32_t config, int8_t rxPin, int8_t txPin);

/**
 * @fn begin
 * @brief 初始化传感器串口并开启数据流
 * @param baudRate 串口波特率(必须为 921600)
 * @return bool 如果初始化成功(串口启动并且数据流使能),否则返回 false
 * @note 目前 ESP8266 和 AVR平台不被本库支持。
 * @note `begin()` 会尝试开启设备的数据流以验证设备是否存在。
 */
bool begin(uint32_t baudRate = 921600);

/**
 * @fn getData
 * @brief 触发一次并读取原始 x/y/z 值(不滤波)
 * @param timeoutMs 超时(毫秒)
 * @return 解析到的点数,超时或错误返回 -1
 */
int getData(uint32_t timeoutMs = 300);

/**
 * @fn configMeasureMode
 * @brief 配置测量输出模式 — 全输出(所有点)
 * @return bool 如果配置成功且流控制恢复则为 true,通信错误或设备拒绝时为 false
 */
bool configMeasureMode(void);

/**
 * @fn configMeasureMode
 * @brief 配置测量输出模式 — 单行
 * @param lineNum 要输出的行索引(1..8)
 * @return bool 如果配置成功且流控制恢复则为 true,通信错误或参数无效时为 false
 */
bool configMeasureMode(uint8_t lineNum);

/**
 * @fn configMeasureMode
 * @brief 配置测量输出模式 — 单点
 * @param lineNum 包含该点的行索引(1..8)
 * @param pointNum 行内的点索引(0..64)
 * @return bool 如果配置成功且流控制恢复则为 true,通信错误或参数无效时为 false
 */
bool configMeasureMode(uint8_t lineNum, uint8_t pointNum);

/**
 * @fn configMeasureMode
 * @brief 配置测量输出模式 — 多点
 * @param lineNum 行索引(1..8)
 * @param startPoint 行内起始点索引(1..64)
 * @param endPoint 行内结束点索引(1..64),必须 >= startPoint
 * @return bool 如果配置成功且流控制恢复则为 true,通信错误或参数无效时为 false
 */
bool configMeasureMode(uint8_t lineNum, uint8_t startPoint, uint8_t endPoint);

/**
 * @fn configFrameMode
 * @brief 配置传感器为单帧或连续帧模式
 * @param mode 模式(eFrameSingle 或 eFrameContinuous)
 * @return bool 类型,表示配置状态
 * @retval true 配置成功
 * @retval false 配置失败
 */
bool configFrameMode(eFrameMode_t mode);

11. 产品兼容性

开发平台 运行正常 运行异常 未测试 备注
Arduino UNO
Arduino MEGA2560
Arduino Leonardo
FireBeeetle-M0
FireBeeetle-ESP32-E
ESP8266

12. 更多

还没有客户对此产品有任何问题,欢迎通过qq或者论坛联系我们!

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

DFshopping_car1.png DFRobot商城购买链接