VL53L5CX驱动开发(4)----运动指示器

2023-10-31 01:59

本文主要是介绍VL53L5CX驱动开发(4)----运动指示器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

VL53L5CX驱动开发----4.运动指示器

  • 概述
  • 视频教学
  • 样品申请
  • 源码下载
  • 生成STM32CUBEMX
    • 选择MCU
    • 串口配置
    • IIC配置
  • INT设置
  • 配置使能与复位
  • X-CUBE-TOF1
  • 串口重定向
  • 代码配置
  • 检测流程
  • TOF代码配置
  • 主程序
  • 演示结果

概述

VL53L5CX传感器内置了一个固件功能,可以检测场景中的运动。这个运动指示器是基于连续帧之间来计算的。使用插件vl53l5cx_plugin_motion_indicator可以使用这个选项。
运动指示器通过vl53l5cx_motion_indicator_init()函数进行初始化。如果用户想要更改传感器的分辨率,他必须使用专用函数vl53l5cx_motion_indicator_set_resolution()来更新运动指示器的分辨率。
用户还可以更改检测运动的最小和最大距离。最小距离和最大距离之间的差异不能超过1500毫米。默认情况下,距离是在400毫米到1500毫米之间初始化的。
结果存储在motion_indicator字段中。在这个字段里,数组motion给出了每个区域的运动强度值。高值表示帧之间的高运动变化。典型的运动会给出一个在100到500之间的值。这种敏感性取决于集成时间、目标距离和目标反射率。
对于低功耗应用,理想的组合是使用运动指示器与自主测距模式,并在运动上编程检测阈值。这允许在FoV(视场)中检测运动变化,同时保持最小的功耗。

最近在弄ST的课程,需要样片的可以加群申请:615061293 。

在这里插入图片描述

视频教学

https://www.bilibili.com/video/BV1Lj411x7Sg/

VL53L5CX驱动开发(4)----运动指示器

样品申请

https://www.wjx.top/vm/OhcKxJk.aspx#

在这里插入图片描述

源码下载

https://download.csdn.net/download/qq_24312945/88430756

生成STM32CUBEMX

选择MCU

测试版所用的MCU为STM32G431CB。
在这里插入图片描述

串口配置

查看原理图,PA9和PA10设置为开发板的串口。
在这里插入图片描述

配置串口。
在这里插入图片描述

IIC配置

在这个应用中,VL53L5CX模块通过I2C(IIC)接口与主控器通信。具体来说,VL53L5CX模块的I2C引脚连接到主控器的PA8和PB5两个IO口。
在这里插入图片描述

配置IIC为快速模式,速度为400k。
在这里插入图片描述

INT设置

自主模式可以通过获取INT管脚进行判断数据是否准备好。
在这里插入图片描述

配置PB4为输入模式。
在这里插入图片描述

配置使能与复位

驱动中有对模块进行复位的操作。
在这里插入图片描述

配置PB15和PB3为输出管脚。
在这里插入图片描述

X-CUBE-TOF1

本节介绍在不需要使用样例应用时如何使用STM32CubeMX将X-CUBE-TOF1软件包添加到项目中。有了这样的设置,就只配置了驱动层。
在这里插入图片描述

由于需要自主模式,所以可以不开启主程序TOF执行代码。
在这里插入图片描述

串口重定向

打开魔术棒,勾选MicroLIB
在这里插入图片描述

在main.c中,添加头文件,若不添加会出现 identifier “FILE” is undefined报错。

/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */

函数声明和串口重定向:

/* USER CODE BEGIN PFP */
int fputc(int ch, FILE *f){HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);return ch;
}
/* USER CODE END PFP */

代码配置

在custom_ranging_sensor.c代码中,有IO口驱动VL53L5CX进行复位的代码,由于没有配置对应的IO,所以需要注释掉。
在这里插入图片描述

由于没加载串口定义,所以注释掉#include “custom.h”
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

检测流程

  1. 初始化阶段 (用户代码开始 2):
    ○ 声明并初始化一些变量,包括status(状态),isReady(准备就绪标志),i(循环变量),以及与VL53L5CX运动检测相关的结构。
    ○ 获取VL53L5CX设备的引用。
  2. 配置运动指示器:
    ○ 使用4x4的分辨率初始化运动指示器。如果失败,则打印错误信息并返回状态。
    ○ 可选地更改用于检测运动的最小和最大距离。这些距离有一些限制,如果超出这些限制,则会返回错误。
    ○ 如果用户需要,可以更改传感器的分辨率。同时,也需要更新运动指示器的分辨率。
    ○ 为示例设置测距频率为2Hz。如果设置失败,打印错误信息。
  3. 开始测距:
    ○ 启动VL53L5CX设备的测距功能。
  4. 测距循环 (无限循环):
    ○ 检查VL53L5CX设备是否有新的数据可用。
    ○ 如果有新数据:
    ■ 获取测距数据。
    ■ 打印数据流计数(可能是一个连续的测量编号)。
    ■ 打印每个区域(在4x4分辨率下有16个区域)的运动强度。
    这个程序主要用于配置VL53L5CX传感器的运动指示器,然后不断地从传感器获取测距数据,并打印出每个区域的运动强度。

TOF代码配置

在main.c中添加对应头文件。

/* USER CODE BEGIN Includes */
#include "stdio.h"#include "custom_ranging_sensor.h"
#include "vl53l5cx_plugin_motion_indicator.h"
/* USER CODE END Includes */

函数与变量定义:

/* USER CODE BEGIN PFP */
int fputc(int ch, FILE *f){HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);return ch;
}/* USER CODE END PFP */

添加TOF初始化。
主要为配置运动指示器。

  /* USER CODE BEGIN 2 */uint8_t 				status, isReady, i;VL53L5CX_Motion_Configuration 	motion_config;	/* 运动配置 */VL53L5CX_Object_t *pL5obj = CUSTOM_RANGING_CompObj[CUSTOM_VL53L5CX];VL53L5CX_ResultsData 	Results;		/* 来自VL53L5CX的结果数据 *//*     编程运动指示器             *//* 使用4x4分辨率创建运动指示器 */status = vl53l5cx_motion_indicator_init(&pL5obj->Dev, &motion_config, VL53L5CX_RESOLUTION_4X4);if(status){printf("运动指示器初始化失败,状态 : %u\n", status);return status;}/* (可选) 更改用于检测运动的最小和最大距离。最小和最大之间的差异* 不得超过1500mm,最小值不能小于400mm,否则下面的函数返回错误127 */status = vl53l5cx_motion_indicator_set_distance_motion(&pL5obj->Dev, &motion_config, 1000, 2000);if(status){printf("设置运动指示器距离失败,状态 : %u\n", status);return status;}/* 如果用户想要更改分辨率,他还需要更新运动指示器的分辨率 *///status = vl53l5cx_set_resolution(&Dev, VL53L5CX_RESOLUTION_4X4);//status = vl53l5cx_motion_indicator_set_resolution(&Dev, &motion_config, VL53L5CX_RESOLUTION_4X4);/* 为了示例,增加测距频率 */status = vl53l5cx_set_ranging_frequency_hz(&pL5obj->Dev, 2);if(status){printf("设置vl53l5cx测距频率失败,状态 : %u\r\n", status);return status;}/*          测距循环              */status = vl53l5cx_start_ranging(&pL5obj->Dev);/* USER CODE END 2 */

主程序

主程序来获取对应的isReady位状态来判定数据是否准备好或者判断INT的IO状态也可。

  /* Infinite loop *//* USER CODE BEGIN WHILE */while (1){//		if(HAL_GPIO_ReadPin  ( GPIOB, GPIO_PIN_4) ==0)		status = vl53l5cx_check_data_ready(&pL5obj->Dev, &isReady);			if(isReady){vl53l5cx_get_ranging_data(&pL5obj->Dev, &Results);/* 由于传感器默认设置为4x4模式,我们总共有* 16个区域要打印。在此示例中,只打印第一个区域的数据 */printf("打印数据编号 : %3u\n", pL5obj->Dev.streamcount);for(i = 0; i < 16; i++){printf("区域 : %3d, 运动强度 : %3lu\n",i,Results.motion_indicator.motion[motion_config.map_id[i]]);}printf("\n");}		/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */

演示结果

静止状态下运动强度如下所示。
在这里插入图片描述
检测运动情况下运动强度如下所示。

在这里插入图片描述

这篇关于VL53L5CX驱动开发(4)----运动指示器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/312056

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安