【学习笔记】GY-53L1x激光测距传感器模块入门资料
目录:
- 概述
- 参数
- 引脚说明
- 通信协议
- (1)串口通信参数
- (2)模块输出格式
- (3)输入:命令字节,由外部控制器发送至GY-53L1 模块(十六进制)
- 使用
- 程序
- 串口中断服务函数|接收正确数据包
- 数据处理函数
- 发送命令字节函数
概述
GY-53L1是-款低成本数字红外测距传感器模块。工作电压3-5v,功耗小,体积小,安装方便。
其工作原理是:红外LED发光,照射到被测物体后,返回光经过MCU接收,MCU计算出时间差,得到距离直接输出距离值。
此模块,有两种方式读取数据,即串口UART (TTL电平) +PWM (开关量)或者芯片IIC模式,串口的波特率有9600bps与115200bps,可配置,有连续,询问输出两种方式,可掉电保存设置。模块另外可以设置单独传感器芯片工作模式, GY-53-L1X VL53L1作为简单传感器模块,MCU不参与数据处理工作。
模块新增了设置开关量输出模式,使用上位机设定好警戒距离后,测试距离低于设定值,引脚输出低电平。
参数
名称 | 参数 |
---|---|
测量范围 | 5cm-4m |
相应频率 | 22ms(最高) |
工作电压 | 3-5V |
工作温度 | -20~80℃ |
传感器芯片 | VL53L1X |
引脚说明
引脚 | 功能 |
---|---|
Pin1 | VCC 电源+ (3v-5v) |
Pin2 | GND 电源地 |
Pin3 | TX 串口USART_TX(TTL 电平) |
Pin4 | RX 串口USART_RX(TTL 电平) |
Pin5 | PWM / OUT 距离转换PWM 形式输出,或者开关量输出 |
Pin6 | PS 串口/芯片IIC 模式转换(默认串口) |
Pin7 | XSHUT 芯片引脚 |
Pin8 | GPIO1 芯片引脚 |
Pin9 | SDA 芯片SDA |
Pin10 | SCL 芯片SCL |
Pin11 | GND 电源地 |
Pin12 | VCC 电源+ (3v-5v) |
注意:PS 硬件选择模块工作模式
ps=1(默认高电平) 串口 UART 模式,Pin3 为TX, Pin4 为RX, TTL 电平,PWM 输出工作或者开关量输出工作。
ps=0(接GND 时) IIC 模式,用户可自行操作芯片,模块自带MCU 不对芯片操作,PWM 输出不工作。
通信协议
串口协议: 当 GY-53L1 模块硬件ps=1 时候使用
(1)串口通信参数
(默认波特率值9600bps,可通过软件设定)
波特率:9600 bps 校验位:N 数据位:8 停止位:1
波特率:115200 bps 校验位:N 数据位:8 停止位:1
(2)模块输出格式
每帧包含8-13 个字节(十六进制):
字节 | 数值 | 功能 |
---|---|---|
Byte0 | 0x5A | 帧头标志 |
.Byte1 | 0x5A | 帧头标志 |
Byte2 | 0x15 | 本帧数据类型 |
Byte3 | 0x03 | 数据量 |
Byte4 | 0x00~0xFF | 数据前高8 位 |
Byte5 | 0x00~0xFF | 数据前低8 位 |
Byte6 | 0x00~0xFF | 模块测量模式 |
Byte7 | 0x00~0xFF | 校验和(前面数据累加和,仅留低8 位) |
- Byte6 含义说明
Byte6 | Byte6 | bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | vit1 | bit0 |
---|---|---|---|---|---|---|---|---|---|
默认 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
- bit7~bit4:
模块返回的当前状态。值:0~14。
0:表示距离值可靠;
1:表示周围环境光影响;
2:表示返回的信号弱;
4:表示超出测量量程;
5:表示硬件故障;
7:表示周围环境有干扰噪声;
8:内部算法的溢出或溢出;
14:无效测量。 - bit3~bit2 :
表示模块测量时间,该值越大,测距效果越好。
0:55ms;
1:110ms;(默认)
2:200ms;
3:300ms; - bit1~bit0:
表示测量模式,该值越小,抗周围环境干扰越好。
1:短距离模式,测距量程为40~1300 mm, ± 25mm;
2:中距离模式,测距量程为40~3000 mm, ± 25mm;(默认)
3:长距离模式,测距量程为40~4000 mm, ± 25mm;
数据计算方法:
距离计算方法:Distance= (Byte4<<8) | Byte5 单位mm//数据高位左移八位|低八位
模块返回状态:RangeStatus= (Byte6>>4)&0x0f;(模块放回当前状态)
测量时间:Time=(Byte6>>2)&0x03;
测量模式:Mode=Byte6&0x03;
例:一帧数据< 5A- 5A- 15- 03- 0A- 20- 06- FC >
Distance =(0x0A<<8)|0x20=2592 mm(距离值2.592 m)
RangeStatus=(0x06>>4)&0x0f=0;(距离值可靠)
Time=(0x06>>2)&0x0f=1; (测量时间为110ms)
Mode= 0x06&0x03=2; (测量模式为中距离模式,量程为50~4000mm)
(3)输入:命令字节,由外部控制器发送至GY-53L1 模块(十六进制)
普通串口命令指令:命令格式:0xA5+command+sum【帧头+功能字节+校验和】
①输出模式设置指令:
0xA5+0x45+0xEA ---------------连续输出距离数据
0xA5+0x15+0xBA ---------------查询输出距离数据
②保存配置指令:
0xA5+0x25+0xCA ---------------掉电保存当前配置;包括波特率(重新上电起效)、测量模
式、测量时间、输出模式设置
③测量模式设置指令:
0xA5+0x51+0xF6 ---------------短距离测量模式
0xA5+0x52+0xF7 ---------------中距离测量模式(默认)
0xA5+0x53+0xF8 ---------------长距离测量模式
④模块测量时间配置:
0xA5+0x61+0x06 ---------------测量时间110ms(默认)
0xA5+0x62+0x07 ---------------测量时间200ms
0xA5+0x63+0x08 ---------------测量时间300ms
0xA5+0x64+0x09 ---------------测量时间55ms
⑤波特率配置:
0xA5+0xAE+0x53 ---------------9600(默认)
0xA5+0xAF+0x54 ---------------115200
使用
该模块为串口和芯片 IIC 输出模块,模块默认为串口模式。
串口模式(默认):PS 引脚拉高,模块上电,默认配置为波特率9600、中距离测量、连续输出模式;使用该模块配套的上位机可方便的对模块进行相应的设置;上位机使用前请先选择好端口和波特率,然后再点击“打开串口”按钮,此时,上位机将显示对应的数据,点击“帮助”按钮,在上位机下方状态栏将显示具体按钮用法。
- 注意:对模块进行查询模式时,发送的指令的周期需大于模块当前测量时间。如当前模块测量时间为110ms,则查询指令的周期需大于110ms。
程序
- memcpy指的是c和c++使用的内存拷贝函数,memcpy函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中。
串口中断服务函数|接收正确数据包
void USART1_IRQHandler(void)
{static uint8_t i=0,rebuf[20]={0};if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//判断接收标志{rebuf[i++]=USART_ReceiveData(USART1);//读取串口数据,同时清接收标志if (rebuf[0]!=0x5a)//帧头不对i=0; if ((i==2)&&(rebuf[1]!=0x5a))//帧头不对i=0;if(i>3)//i等于4时,已经接收到【数据量字节rebuf[3]=0x03】{if(i!=(rebuf[3]+5))//判断是否接收一帧数据完毕return; switch(rebuf[2])//接收完毕后处理【本帧数据类型 Byte2= 0x15】{case 0x15:if(!Receive_ok)//当数据处理完成后才接收新的数据{memcpy(re_Buf_Data,rebuf,8);//拷贝接收到的数据Receive_ok=1;//接收完成标志}break;}i=0;//缓存清0}}
}
数据处理函数
if(Receive_ok)//串口接收完毕
{for(sum=0,i=0;i<(re_Buf_Data[3]+4);i++)//rgb_data[3]=3sum+=re_Buf_Data[i];if(sum==re_Buf_Data[i])//校验和判断{distance=re_Buf_Data[4]<<8|re_Buf_Data[5];RangeStatus=(re_Buf_Data[6]>>4)&0x0f;Time=(re_Buf_Data[6]>>2)&0x03;Mode=re_Buf_Data[6]&0x03;send_3out(&re_Buf_Data[4],3,0x15);//上传给上位机}Receive_ok=0;//处理数据完毕标志
}
发送命令字节函数
void send_com(u8 data)
{u8 bytes[3]={0};bytes[0]=0xa5;bytes[1]=data;//功能字节USART_Send(bytes,3);//发送帧头、功能字节、校验和
}
//发送多字节数据+校验和
void USART_Send(uint8_t *Buffer, uint8_t Length)
{uint8_t i=0;while(i<Length){if(i<(Length-1))Buffer[Length-1]+=Buffer[i];//累加Length-1前的数据USART1_send_byte(Buffer[i++]);}
}
【学习笔记】GY-53L1x激光测距传感器模块入门资料相关推荐
- 【小猫爪】AUTOSAR学习笔记10-Communication Stack之CanTsyn模块
[小猫爪]AUTOSAR学习笔记10-Communication Stack之CanTsyn模块 前言 1 时间同步的引入 2 时间同步的角色 3 时间同步过程 3.1 四种报文 3.2 时间同步过程 ...
- Python学习笔记:常用内建模块6 (urllib)
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记:常用内建模块4:hmac
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- Python学习笔记:常用内建模块3:struct
前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...
- vue学习笔记-03-浅谈组件-概念,入门,如何用props给组件传值?
vue学习笔记-03-浅谈组件-概念,入门,如何用props给组件传值? 文章目录 vue学习笔记-03-浅谈组件-概念,入门,如何用props给组件传值? 什么是组件? 为什么要使用组件? 如何使用 ...
- Arduino模块学习笔记(一)—GPS模块的使用
Arduino模块学习笔记(一)--GSP模块的使用 文章目录 Arduino模块学习笔记(一)--GSP模块的使用 所需组件 一.模块使用介绍 1.GPS模块(在室内时,一般获取不到位置信息) 2. ...
- 【小猫爪】AUTOSAR学习笔记03-Communication Stack之CanIf模块
[小猫爪]AUTOSAR学习笔记03-Communication Stack之CanIf模块 前言 1 CanIf简介 2 功能介绍 2.1 发送缓冲区 2.2 CAN Controller 模式控制 ...
- 个人学习笔记——庄懂的技术美术入门课(美术向)19
个人学习笔记--庄懂的技术美术入门课(美术向)19 1 顶点平移 2 顶点缩放 3 顶点旋转 4 综合应用 1 顶点平移 2 顶点缩放 方法类似 避免产生负值 3 顶点旋转 方法类似 以下是涉及到的一 ...
- 个人学习笔记——庄懂的技术美术入门课(美术向)01
个人学习笔记--庄懂的技术美术入门课(美术向)01 0 前言 1 工程搭建示范 2 理论 2.1 结构(struct) 2.2 渲染管线 3 操作 3.1-2 向量/标量/点积等若干线代基础 3.3 ...
最新文章
- 构建高可用LVS + keepalived+httpd和双主模型的keepalived方案
- html5 支持php标签吗,HTML5标签大全
- CFX计算报错和相应解决办法(浮点错误等-持续更新)
- qt 一个线程接收数据 主线程更新界面 会造成界面退出 怎么解决_打造一个好产品...
- 洛谷 P1706 P1036 -小试牛刀
- 电气技术应用和计算机应用,电气技术应用专业介绍-1.ppt
- Git初学札记(二)————EGit导入远程Git仓库项目(Clone操作)
- Go泛型草案设计简明指南
- 苹果Mac 3D 数字绘画工具:Substance 3D Painter
- hadoop合并日志_Hadoop深入学习:HDFS主要流程——SNN合并fsimage和编辑日志
- freemaker eclipse 插件下载
- 1.maya基本操作
- OOC-GCC 特性介绍
- STM32L051测试 (三、I2C协议设备的添加测试)
- 常用桌面端软件开发语言整理
- 通信业的双11来了!充话费、办宽带、买手机每年这时候最划算
- 同时使用 IE7 和 IE6 的方法
- 基于Python实现英文单词学习系统
- Hibernate开发之创建POJO-配置文件-映射文件
- pl/sql过程化语言
热门文章
- Linux之基础IO
- html如何创建二级标题,Word如何添加一级二级标题等多级标题
- 服务器风扇插头型号,服务器风扇专场 台达 12V 12CM 4.8A怪兽来袭只要15元
- 扫雷游戏软件测试,软件测试
- java replace无效_Java String.replace()方法无效的原因及解决方式
- 求无向图的连通分量或有向图的强连通分量—tarjan()ccf高速公路
- Myeclipse中安装mybatis generator插件有两种方式,一种是在线安装,一种是离线安装。
- Windows的NSIS ERROR
- 项目实战|史上最简单的springboot 整合elk教程,实现日志收集(带视频哦)
- 摄影师拍蜗牛乘树叶花下避雨 似撑小伞泛舟