这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » Arduino Nicla Vision 开发指南【板载ToF使用】

共1条 1/1 1 跳转至

Arduino Nicla Vision 开发指南【板载ToF使用】

菜鸟
2025-12-17 20:35:39     打赏

一、硬件介绍

1、产品特点

Arduino Nicla Vision 搭载STM32H747AII6 双核芯片(Cortex-M7_480MHz + Cortex-M4_240MHz),板载六轴智能运动传感器、集成麦克风和距离传感器、Wi-Fi和蓝牙模块、以及一个200万的彩色摄像头;

image-20251201235158510.png


特性

image.png


系统框图


image-20251202202441525.png



功率


image-20251202204111527.png



二、距离 / ToF传感器 (VL53L1CBV0FY )

ST VL53L1CBV0FY飞行时间传感器(U4),近红外VCSEL激光器(包括模拟驱动器)与接收光学元件一同封装一体化小型模块中;

image-20251202211733707.png


特性

  • 完全集成的微型模块

    • 发射器:940 nm不可见激光 (VCSEL) 及其模拟驱动器

    • 带集成透镜的接收阵列

  • 快速、精确测距

    • 全视野 (FoV) 时,400 cm+的检测范围

    • 60 Hz测距范围可达300 cm

    • 多目标检测能力

    • 具有可选阵列的多区域扫描


原理图

连接到开发板 I2C1

image-20251212211233239.png


三、代码编写

安装支持库

VL53L1X

image-20251212211941158.png



距离测量

输出测量信息:距离值、测量状态(有效性)、信号强度和环境光干扰水平

#include <Wire.h>
#include <VL53L1X.h>

VL53L1X sensor;

void setup()
{
  Serial.begin(115200);
  while (!Serial);
  Wire1.begin();
  Wire1.setClock(400000); // I2C: 400kHz
  sensor.setBus(&Wire1);

  if (!sensor.init())
  {
    Serial.println("初始化传感器失败!");
    while (1);
  }

  // 设置为长距离模式,50毫秒完成一次测量
  sensor.setDistanceMode(VL53L1X::Long);
  sensor.setMeasurementTimingBudget(50000);
  // 间隔应不小于时间预算。
  sensor.startContinuous(50);
}

void loop()
{

  sensor.read(); 
  float range_cm = sensor.ranging_data.range_mm / 10.0f;
  const char* status = VL53L1X::rangeStatusToString(sensor.ranging_data.range_status);
  float signal = sensor.ranging_data.peak_signal_count_rate_MCPS;
  float ambient = sensor.ranging_data.ambient_count_rate_MCPS;

  Serial.print("距离: ");
  Serial.print(range_cm);
  Serial.print("cm  ");

  Serial.print("状态: ");
  Serial.print(status);
  Serial.print("  ");

  Serial.print("信号强度: ");
  Serial.print(signal);
  Serial.print("  ");

  Serial.print("环境光强度: ");
  Serial.print(ambient);
  Serial.println(); 

}

image-20251212224346261.png


距离LED闪烁

LED 的闪烁频率 随测距值 动态变化,距离越近,闪烁越快;距离越远,闪烁越慢;


#include <Wire.h>
#include <VL53L1X.h>

VL53L1X proximity;

bool blinkState = false;
int reading = 0;
int timeStart = 0;
int blinkTime = 2000;

void setup() {
  Serial.begin(115200);
  Wire1.begin();
  Wire1.setClock(400000); 
  proximity.setBus(&Wire1);

  pinMode(LEDB, OUTPUT);
  digitalWrite(LEDB, blinkState);

  if (!proximity.init()) {
    Serial.println("初始化失败!");
    while (1);
  }

  proximity.setDistanceMode(VL53L1X::Long);
  proximity.setMeasurementTimingBudget(50000);
  proximity.startContinuous(50);
}

void loop() {
  reading = proximity.read();
  Serial.print(reading);
  Serial.println(" mm");

  if (millis() - timeStart >= reading) {
    digitalWrite(LEDB, blinkState);
    timeStart = millis();

    blinkState = !blinkState;
  }
}



Vision_TOF.gif











关键词: Arduino Nicla Vision    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]