SEN0492 激光测距传感器UART(4m)

简介

这款激光测距传感器外壳采用黑金螺纹设计,探头带光学盖片,产品一体化,能有效过滤光学干扰,防水防震,其发射源为非可见激光,模块内部自带电压稳压电路,工作稳定,UART输出,带一根报警输出线,当测量距离小于自定义阀值时,会触发低电平稳定输出。还具备3种测距模式,检测距离4-400cm,误差±2cm,满足不同用户的测距需求。
场景可应用于安检门检测、门禁系统、安防报警装置、智能垃圾桶、智能小车或机器人避障。
注:测量黑色物体时数据会不稳定。

技术规格

  • 供电电压:6-36V
  • 测量距离:4-400cm
  • 测量精度:±2cm
  • 发射角度:39.6°
  • 接收角度:36.5°
  • 工作电流:<38mA
  • 通讯方式:UART
  • 防水等级:IP67
  • 波特率:2400-921600可选 115200(默认)
  • 频率:20Hz(默认)
  • 工作温度:-20~70°C
  • 尺寸:21.5x21x8mm

尺寸图

引脚示意图

引脚示意图
标号 名称 功能描述
红色 VCC 6-36V电源供电
绿色 RX UART 接收数据线
黄色 TX UART 发送数据线
黑色 GND 电源地
白色 ALARM 报警连接线

使用教程

准备

  • 硬件

6合1多功能转串口模块FT232 USB转TTL 串口线

Arduino UNO x1

激光测距传感器 UART(4m) x1

  • 软件

Arduino IDE,点击下载 Arduino IDE

在Arduino上使用方法

连接图

示例代码

#include <SoftwareSerial.h>
SoftwareSerial mySerial(12, 13); //定义软串口,13号端口为TX,12号端口为RX
uint8_t Data[34] = {0};

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


void loop()
{

  readData(Data);
  int Distance = readD(Data);
  if (Distance >= 0) {
    Serial.print("Distance: "); Serial.print(Distance); Serial.println(" mm");
    Serial.print("\n");
  } else {
    Serial.println("Invalid data");
    Serial.print("\n");
  }
  delay(500);
}

int readD(uint8_t *buf)
{
  int d;
  char *p = strstr(buf, "Range Valid");
  if (p != 0) {
    d = atoi(&Data[25]);
    return d;
  } else {
    return -1;
  }
}

void readData(uint8_t *buf)
{
  bool flag = 0;
  uint8_t ch;
  while (!flag) {
    if (readN(&ch, 1) == 1) {
      if (ch == 'S') {
        Data[0] = ch;
        if (readN(&ch, 1) == 1) {
          if (ch == 't') {
            Data[1] = ch;
            if (readN(&ch, 1) == 1) {
              if (ch == 'a') {
                Data[2] = ch;
                if (readN(&Data[3], 30) == 30 && Data[31] == 'm' && Data[32] == 'm') {
                  flag = 1;
                }
              }
            }
          }
        }
      }
    }
  }
}
int readN(uint8_t *buf, size_t len)
{
  size_t offset = 0, left = len;
  long curr = millis();
  while (left) {
    if (mySerial.available()) {
      buf[offset++] = mySerial.read();
      left--;
    }
    if (millis() - curr > 500) {
      break;
    }
  }
  return offset;
}

在串口助手上使用方法

连接图

将6合1多功能模块模式调成USB转TTL,如下图

传感器与6合1多功能模块连接,然后将模块插到电脑的usb口上,打开串口助手软件,波特率选择115200,HEX显示不勾选,最后打开串口,会直接输出距离值,如下图

寄存器表

寄存器名称 寄存器地址 命令 说明
系统恢复 0x00 MODADDR 06 00 00 00 01 CRCH CRCL 写入0x01,传感器恢复默认设置
报警阈值 0x02 MODADDR 06 00 03MH ML CRCH CRCL MH报警阈值高位,ML报警阈值低位,阈值设置范围40~4000mm
波特率设置 0x04 MODADDR 06 00 04 00 00 CRCH CRCL 写入0x00,波特率2400
MODADDR 06 00 04 00 01 CRCH CRCL 写入0x01,波特率4800
MODADDR 06 00 04 00 02 CRCH CRCL 写入0x02,波特率9600
MODADDR 06 00 04 00 03 CRCH CRCL 写入0x03,波特率19200
MODADDR 06 00 04 00 04 CRCH CRCL 写入0x04,波特率38400
MODADDR 06 00 04 00 05 CRCH CRCL 写入0x05,波特率57600
MODADDR 06 00 04 00 06 CRCH CRCL 写入0x06,波特率115200
MODADDR 06 00 04 00 07 CRCH CRCL 写入0x07,波特率230400
MODADDR 06 00 04 00 08 CRCH CRCL 写入0x08,波特率460800
MODADDR 06 00 04 00 09 CRCH CRCL 写入0x09,波特率921600
定时预设时间(不建议修改 默认200MS) 0x07 MODADDR 06 00 07 TIMEBUDGETH TIMEBUDGET: 20-1000毫秒可改0x0014-0x03e8
测量间隔(不建议修改 默认50MS ) 0x08 MODADDR 06 00 08 PERIODH PERIODL CRCH CRCL PERIOD :1-1000毫秒可改 0x0001-0x03e8
ID设置 0x1A MODADDR 06 00 1a 00 MODADDRL CRCH CRCL 可写入0x00~0xFE
测量数据 0x34 MODADDR 03 00 34 00 01 CRCH CRCL 读取,距离高8位于距离低8位
输出状态 0x35 MODADDR 03 00 35 00 01 CRCH CRCL 读取:0x07,传感器No Update
读取:0x00,传感器Range Valid
读取:0x01,传感器Sigma Fail
读取:0x02,传感器Signal Fail
读取:0x03,传感器Min Range Fail
读取:0x04,传感器Phase Fail
读取:0x05,传感器Hardware Fail
测量模式 0x36 MODADDR 06 00 36 00 01 CRCH CRCL 写入0x01,短距离 (最多1.3m,更好的环境免疫力)
MODADDR 06 00 36 00 02 CRCH CRCL 写入0x02,中距离 (最多3米)
MODADDR 06 00 36 00 03 CRCH CRCL 写入0x03,长距离模式 (最多4米)
校准模式 0x37 MODADDR 06 00 37 00 04 CRCH CRCL 写入0x04,进入校准状态
MODADDR 03 00 37 00 01 CRCH CRCL 读取:0x01,开始校准
MODADDR 03 00 37 00 02 CRCH CRCL 读取:0x02,校准失败
MODADDR 03 00 37 00 03 CRCH CRCL 读取:0x03,校准完成

注:MODADDR地址是0X50

常见问题

还没有客户对此产品有任何问题,欢迎通过 qq 或者论坛联系我们!
更多问题及有趣的应用,可以访问论坛进行查阅或发帖

更多

DFRobot 商城购买链接