【雕爷学编程】Arduino动手做(158)---VL53L0X激光测距模块2

news2024/12/25 15:57:19

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百五十八:GY-530 VL53L0X 激光测距 ToF测距 飞行时间测距传感器模块 IIC通信协议

在这里插入图片描述
实验开源图形编程(Mind+、编玩边学)

项目之三:简易测距(串口显示动态数据)

在这里插入图片描述
实验串口返回情况

在这里插入图片描述
实验串口绘图器返回情况

在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百五十八:GY-530 VL53L0X 激光测距 ToF测距 飞行时间测距传感器模块 IIC通信协议

项目之四:简易测量距离(读数以毫米为单位,可测范围40mm-2200mm)

模块接线:

VL53L0X Arduino

VCC 5V

GND GND

SCL A5

SDA A4

实验开源代码

/*

 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

  实验一百五十八:GY-530 VL53L0X 激光测距 ToF测距 飞行时间测距传感器模块 IIC通信协议

 项目之四:简易测量距离(读数以毫米为单位,可测范围40mm-2200mm)

 模块接线:

 VL53L0X Arduino

 VCC    5V

 GND    GND

 SCL    A5

 SDA    A4

*/



#include <VL53L0X.h>

#include <Wire.h>

VL53L0X sensor; //Create the sensor object

int startTime = millis(); //used for our timing loop

int mInterval = 100; //refresh rate of 10hz

void setup() {

 Serial.begin(57600);

 Wire.begin(); //Setup your I2C interface

 Wire.setClock(400000); // use 400 kHz I2C

 sensor.setTimeout(500); //Set the sensors timeout

 if (!sensor.init())//try to initilise the sensor

 {

  //Sensor does not respond within the timeout time

  Serial.println("VL53L0X is not responding, check your wiring");

 }

 else

 {

  //SET THE SENSOR TO LONG RANGE MODE

  // lower the return signal rate limit (default is 0.25 MCPS)

  sensor.setSignalRateLimit(0.1);

  // increase laser pulse periods (defaults are 14 and 10 PCLKs)

  sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodPreRange, 18);

  sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodFinalRange, 14);

  sensor.setMeasurementTimingBudget(40000); //Set its timing budget in microseconds longer timing budgets will give more accurate measurements

  sensor.startContinuous(50); //Sets the interval where a measurement can be requested in milliseconds

 }

}

void loop() {

 //We have to be careful here. If we request a measurement before the measurement has been taken your

 //code will be blocked until the measurement is complete. In order to stop this from happening we

 //must ensure that time between measurement requests is greater than the timing budget and the argument

 //given in the startContinuous() function. In our case our measurement time must be greater than 50mS.

 if ((millis() - startTime) > mInterval)

 {

  Serial.println(sensor.readRangeContinuousMillimeters()); //Get a reading in millimeters

  startTime = millis();

 }

 delay(80);

}

实验串口返回情况

在这里插入图片描述
实验串口绘图器返回情况

在这里插入图片描述
VL53L0X的测量功能

1、测量模式

VL53L0X提供三种测量模式,分别是单次测量(Single ranging)、连续测量(Continuous ranging)、定时测量(Timed ranging)。

单次测量,只测量一次,测量完毕处于待机状态,需再一次触发才会测量

连续测量,启动测量后会连续测量,除非用户主动停止

定时测量,用户指定测量周期的连续测量

2、测量精度

VL53L0X提供四种测距精度选择,默认配置、高速测距、高精度测距、长距离测距。这四种模式的适用于不同场合,优缺点互补。

在这里插入图片描述
3、测量方式

轮询,测距线程周期调用API测距,获取距离;该方式消耗一定CPU资源。

中断,VL53L0X测量完毕通过GPIO1发送中断信号,通知测距线程读取数据;该方式效率比较高,消耗CPU资源少。

4、测量流程

VL53L0X用户手册提供了一个轮询方式的测距流程图,根据该流程图调用相应的库函数API即可完成一个测量过程。

在这里插入图片描述
Time of flight(TOF)

中文翻译为“飞行时间”。飞行时间技术在广义上可理解为通过测量物体、粒子或波在固定介质中飞越一定距离所耗费时间(介质/距离/时间均为已知或可测量),从而进一步理解离子或媒介某些性质的技术。TOF的基本原理是通过灯光发射器发射光脉冲,遇到障碍物后反射;接收器接收反射回来的光脉冲,并根据光脉冲的往返时间计算与物体之间的距离。

在这里插入图片描述
来自 VL53L0X传感器的参考精度

除了操作模式的设置外,传感器的精度主要取决于被测物体的表面。可以非常精确地测量木材、亚光塑料、纸板等非反射物体。不会反射太多的金属也能提供非常好的效果。使用反射物体(例如玻璃或非常光滑的反射表面)获得的效果明显较差。在实际测试中,对各种物体(塑料、玻璃、金属)进行了不同距离的测量,从中可以得到以下结果:

在这里插入图片描述

总而言之,可以说与已知的 Arduino 超声波传感器相比,该传感器要准确得多。实际上,该传感器在 50 到 350 毫米左右的近距离范围内可以很好地使用。应该注意的是,该传感器不是点状测量的,而是具有一个小锥体。这意味着在 30 厘米以上的距离内,可能会出现来自周围物体或表面的清晰反射,进而影响测量。尽管如此,该传感器最多可以测量两米的距离。因此,在对墙壁或天花板进行测量时,即使在超过一米的距离内也能获得精确的结果。另一个影响因素是太阳辐射和多个传感器同时在附近运行。

实验开源图形编程(Mind+、编玩边学)

项目之五:简易测距,设置超范围提示,近距离灯光报警(阙值80毫米)
在这里插入图片描述
实验串口返回情况

在这里插入图片描述
Arduino实验场景图

在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百五十八:GY-530 VL53L0X 激光测距 ToF测距 飞行时间测距传感器模块 IIC通信协议

项目之六:使用Adafruit_VL53L0X.h库测量距离(范围40mm-1000mm)

实验开源代码

/*

 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

 实验一百五十八:GY-530 VL53L0X 激光测距 ToF测距 飞行时间测距传感器模块 IIC通信协议

 项目之六:使用Adafruit_VL53L0X.h库测量距离(范围40mm-1000mm)

 模块接线:

 VL53L0X Arduino

 VCC    5V

 GND    GND

 SCL    A5

 SDA    A4

*/

#include "Adafruit_VL53L0X.h"

Adafruit_VL53L0X lox = Adafruit_VL53L0X();

void setup() {

 Serial.begin(115200);

 // wait until serial port opens for native USB devices

 while (! Serial) {

  delay(1);

 }

 Serial.println("Adafruit VL53L0X test");

 if (!lox.begin()) {

  Serial.println(F("Failed to boot VL53L0X"));

  while (1);

 }

 // power

 Serial.println(F("VL53L0X API Simple Ranging example\n\n"));

}

void loop() {

 VL53L0X_RangingMeasurementData_t measure;

 Serial.print("Reading a measurement... ");

 lox.rangingTest(&measure, false); // pass in 'true' to get debug data printout!

 if (measure.RangeStatus != 4) { // phase failures have incorrect data

  Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter);

 } else {

  Serial.println(" out of range ");

 }

 delay(100);

}


实验串口返回情况

在这里插入图片描述
实验串口绘图器返回情况

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/741056.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TCP 协议(一)报文结构

TCP 协议&#xff08;一&#xff09;报文结构 TCP 协议&#xff08;二&#xff09;连接与断开 TCP 协议&#xff08;三&#xff09;十种核心机制 TCP 提供面向连接的通信传输&#xff0c;面向连接是指在传送数据之前必须先建立连接&#xff0c;数据传送完成后要释放连接。无论…

从零开始——springboot增删改查小demo

首先&#xff0c;先创建数据库 -----sushe,然后创建表 person&#xff0c;表结构是这样的&#xff0c;一共四个字段。 向里面添加一些寝室成员数据即可。 INSERT INTO person(p_id,p_name,p_phone,p_score)VALUES (1,李阳,123456,7890), (2,张骞,123456,7890), (3,马康敬,1234…

【C语言】指针概要

文章目录 一、什么是指针二、指针类型三、野指针四、二级指针五、字符指针六、数组指针定义数组名 七、函数指针 一、什么是指针 指针就是地址&#xff0c;口语中说的指针通常指的是指针变量。我们可以通过&&#xff08;取地址操作符&#xff09;取出变量的内存起始地址&a…

Nginx转发域名与新增SSL证书校验

1.申请SSL证书 各大资源&#xff1a;SSL免费证书资源 2.我选择的是站点服务 申请成功的界面&#xff1a; 官网安装教程&#xff1a;看看就好系列 3.下载成功后把文件当道nginx中的目录下 4.编写nginx.config配置 增加server配置 通过监听zlXXX.cc域名访问 重定向到https…

C人脸识别

1、原始图片&#xff1a; 2、灰度化下&#xff1a; 3、均值滤波&#xff1a; 4、 二值图加边缘检测 5、生成积分图 6、把待检测的人脸区域划分为25个&#xff0c;因为是一个数组&#xff0c;这样分别统计每个区域的像素个数&#xff1a; x0: 60, y0: 100, x1: 157, y1: 200 …

X86架构上的Linux操作系统安装与配置ARM架构(并进行示例测试/为DDS编译打基础)

1 查看Linux操作系统是运行在X86架构还是ARM架构平台上2 X86和ARM到底是什么关系&#xff1f;3 X86、ARM、Linux三者的关系到底是什么&#xff1f;&#xff08;大白话理解&#xff09;4、在X86架构的Linux操作系统上搭建ARM架构并进行测试&#xff08;看elf文件的类型是否属于a…

Spark---第 1 章 Spark 内核概述

Spark 内核泛指 Spark 的核心运行机制&#xff0c;包括 Spark 核心组件的运行机制、Spark 任务调度机制、Spark 内存管理机制、Spark 核心功能的运行原理等&#xff0c;熟练掌握 Spark 内核原理&#xff0c;能够帮助我们更好地完成 Spark 代码设计&#xff0c;并能够帮助我们准…

HTML5+CSS3小实例:带进度条的人物卡片切换效果

实例:带进度条的人物卡片切换效果 技术栈:HTML+CSS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" conte…

XHcms 1.0代码审计

关于熊海CMS1.0的代码审计&#xff0c;一直想要提升自己的代码审计的能力&#xff0c;php没有继续去深入的学习这门语言&#xff0c;反而直接是审计CMS&#xff0c;就拿着熊海CMS来进行审计。 关于熊海cms的源码&#xff0c;附在下方&#xff1a; 链接&#xff1a;https://pan…

How to Write and Publish a Scientific Paper-Preparing the Tables and Figures

Preparing the Tables and Figures 目录 Preparing the Tables and FiguresWHEN TO USE TABLESHOW TO ARRANGE TABULAR MATERIALEXPONENTS IN TABLE HEADINGSFOLLOWING THE JOURNAL’S INSTRUCTIONSTITLES, FOOTNOTES, AND ABBREVIATIONSADDITIONAL TIPS ON TABLES WHEN TO USE…

algo算法实验平台代码分享

algo算法实验平台代码分享 1. 介绍 本实验平台包括前端及后台两个模块&#xff0c;前端由 vue开发而来&#xff0c;后端主要采用 python编写&#xff0c;主要用于算法效果测试测评及改进。 原平台算法已做脱敏&#xff0c;使用者可以根据自己需求进行改写或开发&#xff0c;此…

Echarts使用,大数据量时,折线图曲线Y轴取值刻度不正确

如下图&#xff0c;当数据量过大时&#xff0c;会出现数值对应Y轴刻度显示不正确问题。 ​​​​​​​ 可检查配置项是否存在sampling字段 option {series: [{data: [...],type: line,smooth: true,symbolSize: 0,sampling: "average", // 注意此行}] }; samplin…

android 中颜色的基础知识

一.简单介绍Android中的颜色 安卓支持的颜色模式&#xff1a; PS&#xff1a;其中字母表示通道类型&#xff0c;数值表示该类型用多少位二进制来描述。如ARGB8888则表示有四个通道(ARGB),每个对应的通道均用8位来描述。 注意&#xff1a;我们常用的是ARGB8888和ARGB4444&am…

java 网上二手车销售系统用eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 JSP 网上二手车销售系统是一套完善的web设计系统&#xff0c;对理解JSP java SERLVET mvc编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,eclipse开发&#xff0c;数据库为Mysql5.0…

C#ConsoleKey类讲解

大家好&#xff0c;我是华山自控编程朱老师 前几天一个学员在学习C#与ConsoleKey类交互时,对ConsoleKey提取的键盘字符有些疑惑 。下面我们就详细讲讲C# 和ConsoleKey交互的相关知识。 C#和ConsoleKey是编程领域中重要的概念和工具之一。C#是一种通用的、面向对象的编程语言&…

【优选算法】—— 双指针问题

从今天开始&#xff0c;整个暑假期间。我将不定期给大家带来有关各种算法的题目&#xff0c;帮助大家攻克面试过程中可能会遇到的算法这一道难关。 目录 &#xff08;一&#xff09; 基本概念 &#xff08;二&#xff09;题目讲解 1、难度&#xff1a;easy 1️⃣移动零 2️…

数据结构——二叉树的实现

什么是二叉树&#xff1f; 二叉树&#xff08;binary tree&#xff09;是指树中节点的度不大于2的有序树&#xff0c;它是一种最简单且最重要的树。二叉树的递归定义为&#xff1a;二叉树是一棵空树&#xff0c;或者是一棵由一个根节点和两棵互不相交的&#xff0c;分别称作根…

【实验七】界面化和事件处理

1、完成书上239页实验题目1和题目2 题目1 package chap10.test; //awt是一个软件包&#xff0c;包含用于创建用户界面和绘制图形图像的所有分类。 import java.awt.BorderLayout;//边界管理器import java.awt.Color; import java.awt.FlowLayout;//流布局一般用来安排面板中的…

Django_自定义文件存储类并将图片上传到FastDFS

目录 将图片到FastDFS和浏览的流程图 使用自定义文件存储类 1、定义存储类 2、创建FastDFS的配置文件 3、修改settings.py配置 4、上传图片进行验证 4.1 定义一个包含ImageField字段的模型类 4.2 登录django的admin后台 4.3 上传图片 4.4 查看图片 源码等资料获取方…

What Is the Character Limit for ChatGPT? 聊天GPT的字符限制是多少?

The character limit for ChatGPT text prompts is 4096 characters, and there’s also a limit of 4096 tokens per conversation. If you aren’t sure how many tokens your prompt uses, you can calculate that with OpenAI’s Tokenizer tool. ChatGPT 文本提示的字符限…