Arduino驱动VL6180X光学测距传感器(OLED显示)

Arduino驱动VL6180X光学测距传感器(OLED显示)

简介

VL6108X三合一光电模块,芯片内集成了IR VSEL(vertical-cavity surface-emitting laser)红外垂直腔面发射激光器光源、接近传感器、环境光传感器(ALS)。这是一项突破性的技术,可以独立于目标反射率来测量绝对距离。VL6180不是通过测量物体反射回来的光量来估计距离(这很大程度上受颜色和表面的影响),而是精确地测量光到达最近的物体并反射回传感器所需的时间。
在这里插入图片描述

原理

VL6180X模块使用飞行时间(ToF)测量原理实现了接近传感器;VL6180X含有SPAD(单光子雪崩二极管)检测器阵列,它能检测单个光子从发射到接触目标然后返回模块的时间,与信号幅度结合计算出实际距离,而不依赖物体的反射率,此实际距离测量能力亦可产生简单但可靠的一维手势控制。
在这里插入图片描述

在这里插入图片描述

模块参数

红外激光器器波长:850nm
通信接口:IIC(400kHz),地址0x29(7位),两个可编程GPIO
最佳工作温度:-10~60℃
测距性能参数:
测距(接近)范围:0~100mm 误差13mm 某些外部环境条件下,例如黑暗环境下可超过100mm
温度漂移:9~15mm 电压漂移:3~5mm
转换时间:15ms
环境光传感性能参数:
环境光范围:1~100kLux 16位输出
环境光增益范围:1~40(八级)
环境光灵敏度:0.36Lux/count(535nm LED @ 1 kLux. Measured @ gain 20)
角度响应:42度
线性误差:5%(1~300Lux),10%(300~7500Lux)
增益误差:1%(增益20),7%(增益1~10)

接线图

Arduino VL6180X OLED
5V VCC VCC
GND GND GND
A4 SDA SDA
A5 SCL SCL

代码

#include <Wire.h>
#include "MHEtLive_VL6180X.h"

MHEtLive_VL6180X vl = MHEtLive_VL6180X();

#include <Adafruit_SSD1306.h>  //1306的库文件
#define OLED_RESET 13                   //设置复位是13号引脚
Adafruit_SSD1306 display(OLED_RESET);
void setup() {
   
  Serial.begin(115200);
 
 display.begin(SSD1306_SWITCHCAPVCC,0x3C); //刷新
  display.clearDisplay(); //清屏
  display.setTextColor(WHITE);   //字体白色
  display.display();  //显示

  // wait for serial port to open on native usb devices
  while (!Serial) {
   
    delay(1);
  }
 
  Serial.println("MHEtLive VL6180x test!");
  if (! vl.begin()) {
   
    Serial.println("Failed to find sensor");
    while (1);
  }
  Serial.println("Sensor found!");
}

void loop() {
   

  
  
  float lux = vl.readLux(VL6180X_ALS_GAIN_5);

  //Serial.print("Lux: "); Serial.println(lux);
  
  uint8_t range = vl.readRange();
  uint8_t status = vl.readRangeStatus();

  if (status == VL6180X_ERROR_NONE) {
     
    Serial.print("Range: "); Serial.println(range);
 //*****************************************************
        display.setTextSize(1);       //字体大小为2号
        display.setCursor(35,0); 
        display.print("VL6180");
        display.setCursor(0,12); 
        display.print("Range:");
        display.print(range);
   
//*****************************************************  
  }

结果

串口显示:
在这里插入图片描述
OLED显示:

在这里插入图片描述

相关推荐

  1. Arduino驱动LTR390-UV紫外线传感器光照传感器篇)

    2023-12-30 11:00:03       40 阅读
  2. Arduino驱动ISD1820音频录放模块(声音传感器

    2023-12-30 11:00:03       37 阅读
  3. 【嵌入式DIY实例】-OLED显示LM35传感器数据

    2023-12-30 11:00:03       8 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-30 11:00:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-30 11:00:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-30 11:00:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-30 11:00:03       20 阅读

热门阅读

  1. wpf-动态设置组件【按钮为例】样式

    2023-12-30 11:00:03       35 阅读
  2. SQL面试题挑战13:分组topN

    2023-12-30 11:00:03       40 阅读
  3. CentOS 安装WebLogic

    2023-12-30 11:00:03       40 阅读
  4. centos搭建kubernetes集群步骤

    2023-12-30 11:00:03       29 阅读
  5. docker -v 和docker --device 有什么区别

    2023-12-30 11:00:03       32 阅读
  6. 自动化测试:selenium总结

    2023-12-30 11:00:03       49 阅读
  7. 如何准备 Azure 信息保护云退出计划

    2023-12-30 11:00:03       36 阅读
  8. 【Linux】Ubuntu22.04版本下实现gcc版本的快速切换

    2023-12-30 11:00:03       45 阅读
  9. PyTorch中的 Dataset、DataLoader 和 enumerate()

    2023-12-30 11:00:03       40 阅读
  10. Linux添加一个指令代替指定指令

    2023-12-30 11:00:03       39 阅读