简介
这款激光测距传感器外壳采用黑金螺纹设计,探头带光学盖片,产品一体化,能有效过滤光学干扰,防水防震,其发射源为非可见激光,模块内部自带电压稳压电路,工作稳定,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 | 报警连接线 |
使用教程
准备
- 硬件
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 或者论坛联系我们!
更多问题及有趣的应用,可以访问论坛进行查阅或发帖