当前位置: 首页 > news >正文

STM32传感器模块编程实践(九) VL53L0X激光红外测距传感器简介及驱动源码

文章目录

    • 一.概要
    • 二.VL53L0X测距原理
    • 三.VL53L0X主要特性
    • 四.VL53L0X硬件参考设计
    • 五.模块接线说明
    • 六.模块通讯协议介绍
    • 七.光学盖玻片介绍
    • 八.STM32单片机与VL53L0模块实现距离测量实验
      • 1.硬件准备
      • 2.软件工程
      • 3.软件主要代码
      • 4.实验效果
    • 九.小结

一.概要

VL53L0X是一款由ST(意法半导体)生产的红外传感器,通常用于测量物体与传感器之间的距离。
VL53L0X是ST推出的第二代FlightSense技术的飞行时间传感器,与传统的测距传感器不同,它使用时飞行时间(Time-of-Flight,TOF)测量原理,可以实现精确、快速的非接触式测量。无论目标颜色和反射率如何,都可以进行距离测量,抗干扰能力更强。

在这里插入图片描述

二.VL53L0X测距原理

VL53L0X激光测距模块的原理是利用激光脉冲的飞行时间来测量距离。该模块通过发射一束激光脉冲,并测量该激光脉冲从发射到被接收的时间来计算出物体与传感器之间的距离。
在这里插入图片描述

VL53L0X传感器的测距视场角(FOV)为25°,这个视场角决定了传感器在测距时所能覆盖的区域大小。
在这里插入图片描述

三.VL53L0X主要特性

‌尺寸‌:VL53L0的尺寸非常小,具体为4.4 x 2.4 x 1.0mm,这使得它成为市场上最小的飞行时间(ToF)测距传感器之一‌。
‌测距范围‌:该传感器的测距范围为30mm到2000mm,具体参数为30 ~ 2000mm‌。
‌最大测距‌:VL53L0的最大测距为2米(2000mm)。
‌工作电压‌:工作电压范围为2.6V到3.5V,通常使用3.3V或5V供电‌。
‌通信方式‌:采用I2C通信协议,设备地址为0x52,支持读写操作‌。
‌激光波长‌:使用940nm的VCSEL(垂直腔面发射激光器),这种激光器完全不可见且对人眼安全‌。
‌工作环境‌:工作温度范围为-20°C到70°C,适合各种环境使用‌。
‌测距精度‌:在高速模式下精度为±5%,高精度模式下为±3%‌(室内1.2米以内的白色物体)。
‌测距时间‌:高速模式下测距时间为20ms,高精度模式下为200ms‌。

测量距离(客观因素:室内/室外/被测物体偏白/北侧物体偏灰)
由下表可以看出传感器能够测量的最大距离和在室内环境或在户外强光环境有关系,也和被测物体是偏白还是偏灰有关系。可以看出最佳的测量环境是在室内测量白色障碍物的距离。
在这里插入图片描述

测量精度(客观因素:测量的距离远近/被测物体偏白/北侧物体偏灰)
33ms列为"Default"模式,"HighAccuracy"模式为200ms,在室内默认模式下测量1.2米之内白色的物体精度为4%,测量灰色物体精度为7%。
在这里插入图片描述

为啥测量灰色或者黑色的物体测量的最大距离会减少以及测量精度会降低,因为黑色或者灰色的物体能吸收大量的光子能量,导致反射回传感器的光子比较少,从而影响测量距离以及精度。

四.VL53L0X硬件参考设计

芯片引脚定义,从芯片底部角度观看:

在这里插入图片描述

参考原理图设计
在这里插入图片描述

五.模块接线说明

模块引脚说明:
在这里插入图片描述

在这里插入图片描述

5根杜邦线可以实现模块与开发板相连:
板子3.3----模块VIN
板子A11----模块SCL
板子A12----模块SDA
板子B7-----模块XSHUT
板子G------模块GND

六.模块通讯协议介绍

IIC数据写
在这里插入图片描述

IIC数据读
在这里插入图片描述

VL53L0X芯片的寄存器手册厂家是没提供的,提供了API函数,直接调用就可以实现数据读取。

操作流程:
模块上电,VL53L0X会进入Hw Standby状态,这是待机状态,功耗很低。然后拉高XSHUT引脚,让VL53L0X进入初始化启动状态,开始准备测距。

然后根据配置进入测距模式,有三种测距模式:
单次模式:收到测距开始命令后,开始进行测量,测量完成后自动退出,进入待机。
连续模式:收到测距开始命令后,就一直进行测量,直到收到测距停止命令。收到测距停止命令时,进入待机。
连续间隔模式:收到测距开始命令后,开始进行测量,完成一次测量后,等待一段时间再进行下次测量,直到收到测距停止命令,测量等待间隔时间可调。
在这里插入图片描述

七.光学盖玻片介绍

VL53L0X一般会和光学盖玻片一起结合使用。盖玻片有两个作用:提供物理保护,防止灰尘;对光进行滤波,如果只是个人实验评估使用,一般不需要加盖片。盖片如下图所示,刚好盖住整个传感器。

在这里插入图片描述

在这里插入图片描述

八.STM32单片机与VL53L0模块实现距离测量实验

1.硬件准备

STLINK接STM32F103C8T6开发板,STLINK接电脑USB口。

用5根杜邦线把模块与开发板相连:
板子3.3----模块VIN
板子A11----模块SCL
板子A12----模块SDA
板子B7-----模块XSHUT
板子G------模块GND

在这里插入图片描述

2.软件工程

打开STM32CubeMX软件,新建工程
在这里插入图片描述
Part Number处输入STM32F103C8,再双击就创建新的工程
在这里插入图片描述
配置下载口引脚
在这里插入图片描述
配置外部晶振引脚,IIC采用GPIO模拟,所以IIC外设没有配置
在这里插入图片描述

配置系统主频
在这里插入图片描述

配置工程文件名,保存路径,KEIL5工程输出方式
在这里插入图片描述
生成工程
在这里插入图片描述
用Keil5打开工程
在这里插入图片描述

添加代码

添加VL53L0驱动文件,以及OLED显示驱动文件
在这里插入图片描述

VL53L0复位引脚配置
在这里插入图片描述

VL53L0模拟IIC引脚配置

在这里插入图片描述
在这里插入图片描述
添加应用相关代码
在这里插入图片描述

在这里插入图片描述

3.软件主要代码

int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();//8M外部晶振,72M主频/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();/* USER CODE BEGIN 2 */OLED_Init();//OLED初始化  OLED_Clear();//清屏while(vl53l0x_init(&vl53l0x_dev))//vl53l0x初始化{	 HAL_Delay(500);}/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */vl53l0x_general_test(&vl53l0x_dev,Default_Mode);//默认模式测试}/* USER CODE END 3 */
}//初始化vl53l0x
//dev:设备I2C参数结构体
VL53L0X_Error vl53l0x_init(VL53L0X_Dev_t *dev)
{GPIO_InitTypeDef GPIO_Initure;VL53L0X_Error Status = VL53L0X_ERROR_NONE;VL53L0X_Dev_t *pMyDevice = dev;__HAL_RCC_GPIOA_CLK_ENABLE();           //开启GPIOA时钟pMyDevice->I2cDevAddr = VL53L0X_Addr;//I2C地址(上电默认0x52)pMyDevice->comms_type = 1;           //I2C通信模式pMyDevice->comms_speed_khz = 400;    //I2C通信速率VL53L0X_i2c_init();//初始化IIC总线HAL_GPIO_WritePin(VL53L0X_XshutPort, VL53L0X_XshutPin, GPIO_PIN_RESET);//失能VL53L0Xdelay_ms(30);HAL_GPIO_WritePin(VL53L0X_XshutPort, VL53L0X_XshutPin, GPIO_PIN_SET);//使能VL53L0X,让传感器处于工作delay_ms(30);vl53l0x_Addr_set(pMyDevice,0x54);//设置VL53L0X传感器I2C地址if(Status!=VL53L0X_ERROR_NONE) goto error;Status = VL53L0X_DataInit(pMyDevice);//设备初始化if(Status!=VL53L0X_ERROR_NONE) goto error;delay_ms(2);Status = VL53L0X_GetDeviceInfo(pMyDevice,&vl53l0x_dev_info);//获取设备ID信息if(Status!=VL53L0X_ERROR_NONE) goto error;if(Vl53l0x_data.adjustok==0xAA)//已校准AjustOK=1;	else //没校准	AjustOK=0;error:if(Status!=VL53L0X_ERROR_NONE){print_pal_error(Status);//打印错误信息return Status;}return Status;
}
//启动普通测量
//dev:设备I2C参数结构体
//mode模式配置 0:默认;1:高精度;2:长距离;3:高速
void vl53l0x_general_start(VL53L0X_Dev_t *dev,u8 mode)
{static char buf[VL53L0X_MAX_STRING_LENGTH];//测试模式字符串字符缓冲区VL53L0X_Error Status=VL53L0X_ERROR_NONE;//工作状态OLED_Init();			       //初始化OLED  OLED_Clear();            //清屏OLED_ShowCHinese(18,0,0);//光OLED_ShowCHinese(36,0,1);//子OLED_ShowCHinese(54,0,2);//物OLED_ShowCHinese(72,0,3);//联OLED_ShowCHinese(90,0,4);//网OLED_ShowString(6,3,"VL53L0X Test");OLED_ShowString(80,6,"mm");  vl53l0x_set_mode(dev,mode);//配置测量模式while(1){if(Status==VL53L0X_ERROR_NONE){Status = vl53l0x_start_single_test(dev,&vl53l0x_data,buf);//执行一次测量if(vl53l0x_data.RangeMilliMeter<=2000){OLED_ShowNum(30,6,vl53l0x_data.RangeMilliMeter,4,16);//显示距离值}						}delay_ms(200);//等待200ms	}		
}

4.实验效果

在这里插入图片描述

九.小结

VL53L0X在激光自动对焦,测距和接近检测,深度映射和AR/VR中有广泛的应用,学会VL53L0X可以在这些应用场景可以发挥作用。

相关文章:

STM32传感器模块编程实践(九) VL53L0X激光红外测距传感器简介及驱动源码

文章目录 一.概要二.VL53L0X测距原理三.VL53L0X主要特性四.VL53L0X硬件参考设计五.模块接线说明六.模块通讯协议介绍七.光学盖玻片介绍八.STM32单片机与VL53L0模块实现距离测量实验1.硬件准备2.软件工程3.软件主要代码4.实验效果 九.小结 一.概要 VL53L0X是一款由ST&#xff0…...

fastjson注解说明,fastjson注解有那些?fastjson是java的json序列化和反序列化工具包

fastjson注解说明,fastjson注解有那些?fastjson是java的json序列化和反序列化工具包 包版本说明 fastjson请使用1.2.83以上版本,小于这个版本的存在漏洞。 fastjson请使用1.2.83以上版本,小于这个版本的存在漏洞。 fastjson请使用1.2.83以上版本,小于这个版本的存在漏洞…...

VIT:论文关键点解读与常见疑问

VIT贡献点&#xff1a; 1. 首次将 Transformer 应用于图像识别任务 核心贡献&#xff1a;ViT 论文的最大贡献是提出将原本用于自然语言处理&#xff08;NLP&#xff09;的 Transformer 架构成功应用于图像任务。传统的计算机视觉模型主要依赖卷积神经网络&#xff08;CNN&…...

ArcGIS无插件加载(无偏移)在线天地图高清影像与街道地图指南

在地理信息系统&#xff08;GIS&#xff09;的应用中&#xff0c;加载高清影像与街道地图对于地图制图、影像查阅、空间数据分析等工作至关重要。天地图作为官方出品的地图服务&#xff0c;以其标准的数据、较快的影像更新速度等特点受到广泛欢迎。以下是如何在ArcGIS中无插件加…...

工业相机选型(自用笔记)

可参考链接&#xff1a; 相机和镜头选型需要注意哪些问题_靶面尺寸-CSDN博客 工业相机选型方法_ccd工业相机选型步骤-CSDN博客 1、相机 1.1 传感器类型(CCD/CMOS) CCD相机&#xff1a; 1&#xff09;目标是运动的则优先考虑。 2&#xff09;需要高质量图像&#xff0c;如进行…...

【网安笔记】4种拒绝服务攻击

目录 一、SYN Flood 攻击 二、UDP Flood 攻击 三、ICMP Flood 攻击 四、HTTP Flood 攻击 拒绝服务攻击&#xff08;Denial of Service attack&#xff0c;简称 DoS 攻击&#xff09;是指攻击者通过向目标服务器或网络发送大量的请求&#xff0c;使其资源耗尽&#xff0c;无…...

WPF 的组件数据绑定详解

Windows Presentation Foundation&#xff08;WPF&#xff09;是微软推出的一种用于构建 Windows 应用程序的 UI 框架。WPF 提供了强大的数据绑定功能&#xff0c;能够轻松地将 UI 控件与数据源连接&#xff0c;从而实现富用户体验&#xff0c;分离前端设计和业务逻辑。本文将详…...

房子,它或许是沃土

刚成家&#xff0c;来客时&#xff0c;它是客房 成家后&#xff0c;没小孩&#xff0c;它是书房 有小孩&#xff0c;未分房&#xff0c;它暂且是书房 孩子大些&#xff0c;它是孩子们埋下梦想种子&#xff0c;生根发芽的地方...

【Golang】Go语言http编程底层逻辑实现原理与实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

SOLIDWORKS参数化软件

在产品设计和工程领域&#xff0c;参数化设计是一种革命性的方法&#xff0c;它允许设计者通过定义一系列规则和关系来创建和修改模型。参数化设计的核心在于将设计过程分解为一系列可调整的参数&#xff0c;如尺寸、形状、材料属性等&#xff0c;这些参数之间通过数学关系相互…...

上位机开发常用技术 C# Task 线程 开始,暂停,继续,停止

上位机开发中一定会用到的技术就是 设备的线程开始运行执行生产流程&#xff0c;在生产过程中会有要打开安全门或暂停设备动作&#xff0c;人为去排除设备小问题的时就要用到暂停功能&#xff0c;问题排除后设备继续运行&#xff0c;生产完成后设备停止。 这些操作是上位机开发…...

MySQL 密码忘记了怎么办?

在使用 MySQL 的过程中&#xff0c;有时候我们可能会忘记密码。别担心&#xff0c;本文将详细介绍在 Windows 系统下如何重新设置 MySQL 密码。 一、停止 MySQL 服务 打开“服务”窗口&#xff0c;可以通过在 Windows 搜索栏中输入“服务”来找到并打开它。在服务列表中找到“…...

Java中常见的自带数据结构类

目录 一、ArrayList&#xff08;动态数组&#xff09; 特性 常用方法 二、LinkedList&#xff08;双向链表&#xff09; 特性 常用方法 三、ArrayDeque&#xff08;双端队列&#xff09; 特性 常用方法 四、HashMap&#xff08;哈希表&#xff09; 特性 常用方法 五、TreeMap&…...

数据结构——链表,哈希表

文章目录 链表python实现双向链表复杂度分析 哈希表&#xff08;散列表&#xff09;python实现哈希表哈希表的应用 链表 python实现 class Node:def __init__(self, item):self.item itemself.next Nonedef head_create_linklist(li):head Node(li[0])for element in li[1…...

如何使用Python对Excel、CSV文件完成数据清洗与预处理?

在数据分析和机器学习项目中&#xff0c;数据清洗与预处理是不可或缺的重要环节。 现实世界中的数据往往是不完整、不一致且含有噪声的&#xff0c;这些问题会严重影响数据分析的质量和机器学习模型的性能。 Python作为一门强大的编程语言&#xff0c;提供了多种库和工具来帮…...

第8篇:网络安全基础

目录 引言 8.1 网络安全的基本概念 8.2 网络威胁与攻击类型 8.3 密码学的基本思想与加密算法 8.4 消息认证与数字签名 8.5 网络安全技术与协议 8.6 总结 第8篇&#xff1a;网络安全基础 引言 在现代信息社会中&#xff0c;计算机网络无处不在&#xff0c;从互联网到局…...

Flutter 中的 PopScope 小部件:全面指南

Flutter 中的 PopScope 小部件&#xff1a;全面指南 在 Flutter 应用开发中&#xff0c;导航和路由管理是构建复杂应用时必须面对的挑战之一。PopScope 小部件是 Flutter 2.0 版本引入的一个新功能&#xff0c;它提供了一种更灵活的方式来控制页面的弹出和返回行为。本文将带你…...

视频剪辑的未来

技术发展推动4&#xff1a; 人工智能与自动化辅助&#xff1a;人工智能在视频剪辑中的应用将不断深化。例如&#xff0c;智能剪辑软件能够自动分析视频素材的内容、情感和节奏&#xff0c;快速生成初步的剪辑版本&#xff0c;剪辑师在此基础上进行进一步的优化和调整&#xff0…...

通过PHP与API的结合,开启电商数据集成的新篇章

在数字化转型的浪潮中&#xff0c;电子商务数据的集成对于企业来说变得越来越重要。无论是在线零售商还是品牌商&#xff0c;都需要实时访问商品数据以优化库存管理、制定定价策略、提升客户体验。PHP&#xff0c;作为服务端脚本语言的佼佼者&#xff0c;为开发者提供了强大的工…...

使用 CDN 后 Apache 的日志记录客户真实 IP

经常搭建网站服务器的都知道&#xff0c;在给站点使用了 CDN 后 Web 应用的日志记录里就会只记录 CDN 节点 IP 了&#xff0c;这就没法看到真实客户请求 IP&#xff0c;对于日志分析、运维日常维护来说就有点儿麻烦了&#xff0c;今天明月结合在五洛云服务器上搭建的Apache环境…...

ORACLE 19C安装 RAC报错

1. 问题描述 在Oracle 19C RAC的安装过程中&#xff0c;使用克隆方式在两个节点上部署集群。当第一个节点配置好基础服务后&#xff0c;关机并克隆节点。当尝试在第二个节点上通过页面进行RAC安装时&#xff0c;出现以下错误&#xff1a; [INS-32070] Could not remove the n…...

省心英语 3.9.9| 资源最全面的英语学习App

省心英语是一款资源全面的英语学习软件&#xff0c;完全免费且无广告&#xff0c;内含丰富的词库和范文、中小学、四六级、考研、专四专八、雅思托福、新概念等所有阶段的学习内容。软件支持练听力、背单词、阅读理解等功能&#xff0c;覆盖了听说读写全方位学习。听力部分包含…...

ruoyi框架动态切换数据库

需求背景 最近需要一个小demo,项目中需要同时连接sqlserver和mysql数据库。 操作教程 1、pom.xml -- 修改common/pom.xml<!-- 动态数据源 --> <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-star…...

iba Data Export 导出面板选项

时间线选择真实时间“Absolute date / time” 时间间隔选择0.5Sec.&#xff08;最小为0.01Sec.&#xff09; 右侧数据根据需要选择...

过滤器Filter的介绍和使用

1.简介 在 Java Web 开发中&#xff0c;Filter 是一个非常重要的组件&#xff0c;用于在请求到达 Servlet 之前或响应返回客户端之前对请求和响应进行预处理或后处理。Filter 可以用来实现多种功能&#xff0c;如日志记录、权限检查、编码转换、请求头修改等。就好比机场的层层…...

JMeter之mqtt-jmeter 插件介绍

前言 mqtt-jmeter插件是JMeter中的一个第三方插件&#xff0c;用于支持MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;协议的性能测试。MQTT是一种轻量级的发布/订阅消息传输协议&#xff0c;广泛应用于物联网和传感器网络中。 一、安装插件 mqtt-jmeter项目…...

Nacos2.3.2在ubuntu中的部署

Nacos2.3.2 在ubuntu下的部署 下载地址 发布历史 | Nacos 官网 https://download.nacos.io/nacos-server/nacos-server-2.3.2.zip 修改 application.properties文件 开启鉴权 ### 开启鉴权功能 nacos.core.auth.caching.enabledtrue ### The auth system to use, current…...

Xilinx远程固件升级(一)——QuickBoot方案

Xilinx 7系FPGA远程更新方案——QuickBoot方式远程更新bit 一、远程更新背景和架构 对于非ZYNQ系列的常规FPGA来说&#xff0c;对于bit的更新一般使用JTAG进行烧录。而作为商用产品&#xff0c;想要进行OTA升级时&#xff0c;使用JTAG的升级方式显然不适合&#xff0c;因此&a…...

O(1)调度算法与CFS

目录 引言 linux内核的O&#xff08;1&#xff09;进程调度算法介绍 主要特点 工作原理 优点 缺点 运行队列 活动队列 过期队列 active指针和expired指针 O(1)调度器&#xff0c;两个队列的机制 两个队列的机制如下&#xff1a; 这个算法后期被CFS替代 CFS 工作原…...

SpringBoot——静态资源访问的四种方式

1.默认的静态资源目录 /static /public /resources /META-INF/resources 动态资源目录&#xff1a;/templates 2.resources静态资源目录图片存放 3. 静态资源访问 3.1.通过路径访问静态资源 http://localhost:8080/a.jpg http://localhost:8080/b.jpg …...