那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于STM32CUBEMX驅動TOF模塊VL53l0x(1)----單模塊距離獲取的最佳實踐

嵌入式單片機MCU開發 ? 來源:嵌入式單片機MCU開發 ? 作者:嵌入式單片機MCU開 ? 2023-12-01 15:45 ? 次閱讀

概述

VL53L0X是新一代飛行時間(ToF)激光測距模塊(不同于傳統技術),采用目前市場上最小的封裝,無論目標反射率如何,都能提供精確的距離測量。它可以測量2m的絕對距離,為測距性能等級設定了新的基準,為各種新應用打開了大門。
最近在弄ST的課程,需要樣片的可以加群申請:615061293 。
在這里插入圖片描述

VL53L0X集成了一個領先的SPAD陣列(單光子雪崩二極管),并內嵌ST的第二代FlightSense?專利技術。
VL53L0X的940nm VCSEL發射器(垂直腔面發射激光器)完全不為人眼所見,加上內置的物理紅外濾光片,使其測距距離更長,對環境光的免疫性更強,對蓋片的光學串擾具有更好的穩定性。

![最近在弄ST的課程,需要樣片的可以加群申請:615061293 。]

視頻教學

[https://www.bilibili.com/video/BV1dH4y1D7Px/]

樣品申請

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

源碼下載

[https://download.csdn.net/download/qq_24312945/88332771](

所有功能

● 完全集成的小型化模塊
○ 940 nm 激光器 VCSEL
○ VCSEL驅動器
○ 測距傳感器,內嵌高級微控制器
○ 4.4 x 2.4 x 1.0 mm
● 快速,精確測距
○ 測量的絕對距離達到2m
○ 報告的距離與目標反射率無關
○ 先進的嵌入式光學串擾補償,簡化蓋片的選擇
● 人眼安全
○ 1類激光器件,符合最新標準IEC 60825-1:2014(第3版)要求
● 方便集成
○ 單回流焊元件
○ 無附加光學元件
○ 單電源
○ 用于器件控制和數據傳輸的I2C接口
○ Xshutdown(復位)和中斷 GPIO
○ 可編程I2C地址
在這里插入圖片描述

技術規范

該模塊的供電要求為2.8V,適合于低電壓應用場景。它通過I2C接口進行主機控制和數據通信,方便與其他設備的集成。支持最大快速模式速率,達到400k,確保高效的數據傳輸。
最后,VL53L0X模塊具有一個默認地址為0x29的設備地址,這樣在多個I2C設備共享同一總線時,可以輕松管理和區分不同的模塊。

測量范圍

在這里插入圖片描述

接口

VL53L0X模塊接口的示意圖如下所示。
在這里插入圖片描述

接口說明

在這里插入圖片描述

最小系統圖

在這里插入圖片描述

IIC配置

在這個應用中,VL53L0X模塊通過I2C(IIC)接口與主控器通信。具體來說,VL53L0X 模塊的I2C引腳連接到主控器的PB6(引腳B6)和PB7(引腳B7)兩個IO口。
這種連接方式確保了模塊與主控器之間的可靠數據傳輸和通信。PB6作為I2C總線的串行數據線(SDA),負責數據的傳輸和接收。而PB7則充當I2C總線的串行時鐘線(SCL),用于同步數據傳輸的時序。

在這里插入圖片描述

配置IIC為快速模式,速度為400k。
在這里插入圖片描述

串口重定向

打開魔術棒,勾選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 */

模塊片選

根據提供的表格信息,我們可以得知VL53L0X模塊的XSHUT 引腳用作片選腳(Chip Enable),這是Xshutdown引腳,它是一個數字輸入,當處于低電平狀態(Active LOW)時,可以用來關閉(即"shutdown")傳感器。這通常用于重置傳感器或在不需要傳感器測量時將其關閉以節省功耗。
在這里插入圖片描述

查看手冊可以得知,對應的IO為PB2和PB4。

在這里插入圖片描述

STM32CUBEMX中配置如下所示。
在這里插入圖片描述

模塊地址

VL53L0X模塊的默認設備地址為0x29。設備地址是用來識別和通信特定設備的標識符。通過將VL53L0X模塊的設備地址設置為0x29,您可以確保與該模塊進行正常的通信和控制。
若添加讀寫位,寫地址為0x52,讀地址為0x53。
在這里插入圖片描述

對于VL53L0X模塊,默認的7位地址是0x29(二進制為010 1001),加上寫位后為0x52(二進制為0101 0010),加上讀位后為0x53(二進制為0101 0011)。
這意味著當主設備與VL53L0X模塊進行通信時,要發送0x52地址字節進行寫操作,或發送0x53地址字節進行讀取操作。

extern I2C_HandleTypeDef hi2c1;

void VL53L0X_WriteByte(uint8_t add,uint8_t reg,uint8_t data)
{
	HAL_I2C_Mem_Write(&hi2c1 ,(add< 1)|0,reg,I2C_MEMADD_SIZE_8BIT,&data,1,0xffff);
	
}
void VL53L0X_WriteByte_16Bit(uint8_t add,uint8_t reg,uint16_t data)
{
	uint8_t data2[2]={0,0};
	data2[0]=data >>8;
	data2[1]=data;
	HAL_I2C_Mem_Write(&hi2c1 ,(add< 1)|0,reg,I2C_MEMADD_SIZE_8BIT,data2,2,0xffff);
	
}

void VL53L0X_WriteByte_32Bit(uint8_t add,uint8_t reg,uint32_t data)
{
	uint8_t data2[4]={0,0,0,0};
	data2[0]=data >>24;
	data2[1]=data >>16;
	data2[2]=data >>8;
	data2[3]=data;
	HAL_I2C_Mem_Write(&hi2c1 ,(add< 1)|0,reg,I2C_MEMADD_SIZE_8BIT,data2,4,0xffff);
	
}

uint8_t VL53L0X_ReadByte(uint8_t add,uint8_t reg)
{
	uint8_t data=0;
	HAL_I2C_Mem_Read(&hi2c1 ,(add< 1)|1,reg,I2C_MEMADD_SIZE_8BIT,&data,1,0xffff);
	return data;
}




uint16_t VL53L0X_ReadBytee_16Bit(uint8_t add,uint16_t reg)
{
	uint16_t data=0;
	uint8_t data2[2];
	HAL_I2C_Mem_Read(&hi2c1 ,(add< 1)|1,reg,I2C_MEMADD_SIZE_8BIT,data2,2,0xffff);
	data=data2[0];
	data=data< 8;
	data+=data2[1];
	
	return data;

}

參考文檔

這里參考的文檔問arduino的驅動代碼。
https://github.com/pololu/vl53l0x-arduino/tree/master

初始化

參考程序中給出的初始化如下所示。
在這里插入圖片描述

其中sensor.init()是VL53L0X的模塊初始設置。

// Initialize sensor using sequence based on VL53L0X_DataInit(),
// VL53L0X_StaticInit(), and VL53L0X_PerformRefCalibration().
// This function does not perform reference SPAD calibration
// (VL53L0X_PerformRefSpadManagement()), since the API user manual says that it
// is performed by ST on the bare modules; it seems like that should work well
// enough unless a cover glass is added.
// If io_2v8 (optional) is true or not given, the sensor is configured for 2V8
// mode.
bool VL53L0X::init(bool io_2v8)
{
  // check model ID register (value specified in datasheet)
  if (readReg(IDENTIFICATION_MODEL_ID) != 0xEE) { return false; }

  // VL53L0X_DataInit() begin

  // sensor uses 1V8 mode for I/O by default; switch to 2V8 mode if necessary
  if (io_2v8)
  {
    writeReg(VHV_CONFIG_PAD_SCL_SDA__EXTSUP_HV,
      readReg(VHV_CONFIG_PAD_SCL_SDA__EXTSUP_HV) | 0x01); // set bit 0
  }

  // "Set I2C standard mode"
  writeReg(0x88, 0x00);

  writeReg(0x80, 0x01);
  writeReg(0xFF, 0x01);
  writeReg(0x00, 0x00);
  stop_variable = readReg(0x91);
  writeReg(0x00, 0x01);
  writeReg(0xFF, 0x00);
  writeReg(0x80, 0x00);

  // disable SIGNAL_RATE_MSRC (bit 1) and SIGNAL_RATE_PRE_RANGE (bit 4) limit checks
  writeReg(MSRC_CONFIG_CONTROL, readReg(MSRC_CONFIG_CONTROL) | 0x12);

  // set final range signal rate limit to 0.25 MCPS (million counts per second)
  setSignalRateLimit(0.25);

  writeReg(SYSTEM_SEQUENCE_CONFIG, 0xFF);

  // VL53L0X_DataInit() end

  // VL53L0X_StaticInit() begin

  uint8_t spad_count;
  bool spad_type_is_aperture;
  if (!getSpadInfo(&spad_count, &spad_type_is_aperture)) { return false; }

  // The SPAD map (RefGoodSpadMap) is read by VL53L0X_get_info_from_device() in
  // the API, but the same data seems to be more easily readable from
  // GLOBAL_CONFIG_SPAD_ENABLES_REF_0 through _6, so read it from there
  uint8_t ref_spad_map[6];
  readMulti(GLOBAL_CONFIG_SPAD_ENABLES_REF_0, ref_spad_map, 6);

  // -- VL53L0X_set_reference_spads() begin (assume NVM values are valid)

  writeReg(0xFF, 0x01);
  writeReg(DYNAMIC_SPAD_REF_EN_START_OFFSET, 0x00);
  writeReg(DYNAMIC_SPAD_NUM_REQUESTED_REF_SPAD, 0x2C);
  writeReg(0xFF, 0x00);
  writeReg(GLOBAL_CONFIG_REF_EN_START_SELECT, 0xB4);

  uint8_t first_spad_to_enable = spad_type_is_aperture ? 12 : 0; // 12 is the first aperture spad
  uint8_t spads_enabled = 0;

  for (uint8_t i = 0; i < 48; i++)
  {
    if (i < first_spad_to_enable || spads_enabled == spad_count)
    {
      // This bit is lower than the first one that should be enabled, or
      // (reference_spad_count) bits have already been enabled, so zero this bit
      ref_spad_map[i / 8] &= ~(1 < < (i % 8));
    }
    else if ((ref_spad_map[i / 8] > > (i % 8)) & 0x1)
    {
      spads_enabled++;
    }
  }

  writeMulti(GLOBAL_CONFIG_SPAD_ENABLES_REF_0, ref_spad_map, 6);

  // -- VL53L0X_set_reference_spads() end

  // -- VL53L0X_load_tuning_settings() begin
  // DefaultTuningSettings from vl53l0x_tuning.h

  writeReg(0xFF, 0x01);
  writeReg(0x00, 0x00);

  writeReg(0xFF, 0x00);
  writeReg(0x09, 0x00);
  writeReg(0x10, 0x00);
  writeReg(0x11, 0x00);

  writeReg(0x24, 0x01);
  writeReg(0x25, 0xFF);
  writeReg(0x75, 0x00);

  writeReg(0xFF, 0x01);
  writeReg(0x4E, 0x2C);
  writeReg(0x48, 0x00);
  writeReg(0x30, 0x20);

  writeReg(0xFF, 0x00);
  writeReg(0x30, 0x09);
  writeReg(0x54, 0x00);
  writeReg(0x31, 0x04);
  writeReg(0x32, 0x03);
  writeReg(0x40, 0x83);
  writeReg(0x46, 0x25);
  writeReg(0x60, 0x00);
  writeReg(0x27, 0x00);
  writeReg(0x50, 0x06);
  writeReg(0x51, 0x00);
  writeReg(0x52, 0x96);
  writeReg(0x56, 0x08);
  writeReg(0x57, 0x30);
  writeReg(0x61, 0x00);
  writeReg(0x62, 0x00);
  writeReg(0x64, 0x00);
  writeReg(0x65, 0x00);
  writeReg(0x66, 0xA0);

  writeReg(0xFF, 0x01);
  writeReg(0x22, 0x32);
  writeReg(0x47, 0x14);
  writeReg(0x49, 0xFF);
  writeReg(0x4A, 0x00);

  writeReg(0xFF, 0x00);
  writeReg(0x7A, 0x0A);
  writeReg(0x7B, 0x00);
  writeReg(0x78, 0x21);

  writeReg(0xFF, 0x01);
  writeReg(0x23, 0x34);
  writeReg(0x42, 0x00);
  writeReg(0x44, 0xFF);
  writeReg(0x45, 0x26);
  writeReg(0x46, 0x05);
  writeReg(0x40, 0x40);
  writeReg(0x0E, 0x06);
  writeReg(0x20, 0x1A);
  writeReg(0x43, 0x40);

  writeReg(0xFF, 0x00);
  writeReg(0x34, 0x03);
  writeReg(0x35, 0x44);

  writeReg(0xFF, 0x01);
  writeReg(0x31, 0x04);
  writeReg(0x4B, 0x09);
  writeReg(0x4C, 0x05);
  writeReg(0x4D, 0x04);

  writeReg(0xFF, 0x00);
  writeReg(0x44, 0x00);
  writeReg(0x45, 0x20);
  writeReg(0x47, 0x08);
  writeReg(0x48, 0x28);
  writeReg(0x67, 0x00);
  writeReg(0x70, 0x04);
  writeReg(0x71, 0x01);
  writeReg(0x72, 0xFE);
  writeReg(0x76, 0x00);
  writeReg(0x77, 0x00);

  writeReg(0xFF, 0x01);
  writeReg(0x0D, 0x01);

  writeReg(0xFF, 0x00);
  writeReg(0x80, 0x01);
  writeReg(0x01, 0xF8);

  writeReg(0xFF, 0x01);
  writeReg(0x8E, 0x01);
  writeReg(0x00, 0x01);
  writeReg(0xFF, 0x00);
  writeReg(0x80, 0x00);

  // -- VL53L0X_load_tuning_settings() end

  // "Set interrupt config to new sample ready"
  // -- VL53L0X_SetGpioConfig() begin

  writeReg(SYSTEM_INTERRUPT_CONFIG_GPIO, 0x04);
  writeReg(GPIO_HV_MUX_ACTIVE_HIGH, readReg(GPIO_HV_MUX_ACTIVE_HIGH) & ~0x10); // active low
  writeReg(SYSTEM_INTERRUPT_CLEAR, 0x01);

  // -- VL53L0X_SetGpioConfig() end

  measurement_timing_budget_us = getMeasurementTimingBudget();

  // "Disable MSRC and TCC by default"
  // MSRC = Minimum Signal Rate Check
  // TCC = Target CentreCheck
  // -- VL53L0X_SetSequenceStepEnable() begin

  writeReg(SYSTEM_SEQUENCE_CONFIG, 0xE8);

  // -- VL53L0X_SetSequenceStepEnable() end

  // "Recalculate timing budget"
  setMeasurementTimingBudget(measurement_timing_budget_us);

  // VL53L0X_StaticInit() end

  // VL53L0X_PerformRefCalibration() begin (VL53L0X_perform_ref_calibration())

  // -- VL53L0X_perform_vhv_calibration() begin

  writeReg(SYSTEM_SEQUENCE_CONFIG, 0x01);
  if (!performSingleRefCalibration(0x40)) { return false; }

  // -- VL53L0X_perform_vhv_calibration() end

  // -- VL53L0X_perform_phase_calibration() begin

  writeReg(SYSTEM_SEQUENCE_CONFIG, 0x02);
  if (!performSingleRefCalibration(0x00)) { return false; }

  // -- VL53L0X_perform_phase_calibration() end

  // "restore the previous Sequence Config"
  writeReg(SYSTEM_SEQUENCE_CONFIG, 0xE8);

  // VL53L0X_PerformRefCalibration() end

  return true;
}

由于一些宏定義都是注釋掉了的,所以可以不去執行下面紅框的指令。
在這里插入圖片描述

單次讀取距離長度

在主程序中,主要執行的是單次獲取數據。

在這里插入圖片描述

對應源碼如下所示。

// Returns a range reading in millimeters when continuous mode is active
// (readRangeSingleMillimeters() also calls this function after starting a
// single-shot range measurement)
uint16_t VL53L0X::readRangeContinuousMillimeters()
{
  startTimeout();
  while ((readReg(RESULT_INTERRUPT_STATUS) & 0x07) == 0)
  {
    if (checkTimeoutExpired())
    {
      did_timeout = true;
      return 65535;
    }
  }

  // assumptions: Linearity Corrective Gain is 1000 (default);
  // fractional ranging is not enabled
  uint16_t range = readReg16Bit(RESULT_RANGE_STATUS + 10);

  writeReg(SYSTEM_INTERRUPT_CLEAR, 0x01);

  return range;
}

// Performs a single-shot range measurement and returns the reading in
// millimeters
// based on VL53L0X_PerformSingleRangingMeasurement()
uint16_t VL53L0X::readRangeSingleMillimeters()
{
  writeReg(0x80, 0x01);
  writeReg(0xFF, 0x01);
  writeReg(0x00, 0x00);
  writeReg(0x91, stop_variable);
  writeReg(0x00, 0x01);
  writeReg(0xFF, 0x00);
  writeReg(0x80, 0x00);

  writeReg(SYSRANGE_START, 0x01);

  // "Wait until start bit has been cleared"
  startTimeout();
  while (readReg(SYSRANGE_START) & 0x01)
  {
    if (checkTimeoutExpired())
    {
      did_timeout = true;
      return 65535;
    }
  }

  return readRangeContinuousMillimeters();
}

修改后如下所示。

// Returns a range reading in millimeters when continuous mode is active
// (readRangeSingleMillimeters() also calls this function after starting a
// single-shot range measurement)
uint16_t VL53L0X_readRangeContinuousMillimeters(uint8_t add)
{
  startTimeout();
uint16_t range;
  while ( (VL53L0X_ReadByte(add,RESULT_INTERRUPT_STATUS) & 0x07) == 0)
  {
    if (checkTimeoutExpired())
    {
      did_timeout = true;
      return 65535;
    }
  }
  // assumptions: Linearity Corrective Gain is 1000 (default);
  // fractional ranging is not enabled
   range= VL53L0X_ReadBytee_16Bit(add,RESULT_RANGE_STATUS + 10);

  VL53L0X_WriteByte(add,SYSTEM_INTERRUPT_CLEAR, 0x01);

  return range;
}


// Performs a single-shot range measurement and returns the reading in
// millimeters
// based on VL53L0X_PerformSingleRangingMeasurement()
uint16_t VL53L0X_readRangeSingleMillimeters(uint8_t add)
{
  VL53L0X_WriteByte(add,0x80, 0x01);
  VL53L0X_WriteByte(add,0xFF, 0x01);
  VL53L0X_WriteByte(add,0x00, 0x00);
  VL53L0X_WriteByte(add,0x91, stop_variable);
  VL53L0X_WriteByte(add,0x00, 0x01);
  VL53L0X_WriteByte(add,0xFF, 0x00);
  VL53L0X_WriteByte(add,0x80, 0x00);

  VL53L0X_WriteByte(add,SYSRANGE_START, 0x01);

  // "Wait until start bit has been cleared"
  startTimeout();
  while (VL53L0X_ReadByte(add,SYSRANGE_START) & 0x01)
  {
    if (checkTimeoutExpired())
    {
      did_timeout = true;
      return 65535;
    }
  }

  return VL53L0X_readRangeContinuousMillimeters(add);
}

測試結果

測試結果如下所示。
在這里插入圖片描述

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單模塊
    +關注

    關注

    0

    文章

    4

    瀏覽量

    6387
  • TOF
    TOF
    +關注

    關注

    9

    文章

    485

    瀏覽量

    36479
  • stm32cubemx
    +關注

    關注

    5

    文章

    284

    瀏覽量

    15005
  • VL53L0X
    +關注

    關注

    0

    文章

    7

    瀏覽量

    2519
收藏 人收藏

    評論

    相關推薦

    基于STM32CUBEMX驅動TOF模塊VL53l0x(2)----修改設備地址

    本章主要介紹如何修改VL53L0X傳感器的I2C地址,并成功驅動設備以使用新的地址。VL53L0X是一種多功能、高性能的接近和環境光傳感器,常用于測量物體與傳感器之間的距離、檢測物體的
    的頭像 發表于 12-01 15:46 ?1471次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅動</b><b class='flag-5'>TOF</b><b class='flag-5'>模塊</b><b class='flag-5'>VL53l0x</b>(2)----修改設備地址

    基于STM32CUBEMX驅動TOF模塊VL53l0x(3)----驅動多個VL53L0X

    在本章中,我們將探討如何同時驅動多個VL53L0X傳感器進行距離測量。我們將介紹如何有效地管理多個傳感器之間的通信和控制,以確保它們能夠同時進行準確的距離測量。通過本章的學習,將能夠了
    的頭像 發表于 12-01 15:47 ?1111次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅動</b><b class='flag-5'>TOF</b><b class='flag-5'>模塊</b><b class='flag-5'>VL53l0x</b>(3)----<b class='flag-5'>驅動</b>多個<b class='flag-5'>VL53L0X</b>

    CW32模塊使用 VL53L0X激光測距傳感器

    上一代 VL6180X,新的器件將飛行時間測距長度擴展至 2 米,測量速度更快,能效更高。除此之外,為使集成度過程更加快捷方便, ST 公司為此也提供了 VL53L0X 軟件 API(應用編程接口)以及完整的技術文檔,通過主 IIC 接口,向應用端輸出測距的數據,大大降低
    的頭像 發表于 11-26 17:59 ?709次閱讀
    CW32<b class='flag-5'>模塊</b>使用 <b class='flag-5'>VL53L0X</b>激光測距傳感器

    新一代ToF 激光測距模塊VL53L0X

    ,所以回程距離的計算公式也很簡單,即“光速” x “時間延遲”。VL53L0X 是新一代 ToF 激光測距模塊,采用目前市場上最小型的封裝,
    發表于 04-06 14:03

    VL53L0x環境光靈敏度無法測量距離

    你好我正在測試VL53L0X飛行時間傳感器,以便了解它對環境光的抵抗力,結果證明,如果你將一個具有高紅外線含量的光源(如鹵素燈泡)指向傳感器它無法測量距離。即使照度很低。它簡單地說'沒有目標'。角度
    發表于 04-15 16:42

    RT-Thread VL53L0X TOF傳感器驅動設計資料實現

    1、RT-Thread VL53L0X TOF傳感器驅動實現  Time of flight(TOF),中文翻譯為“飛行時間”。飛行時間技術
    發表于 09-15 17:08

    請問VL53L0X的FOV范圍是多少?

    數據表顯示 VL53L0X 具有 25 度的 FOV。然而,每個 VL53L0X 顯示的 FOV 略有不同。比如一只VL53L0X好像是24度,另一只VL53L0X好像是26度。
    發表于 12-08 06:12

    ATK-VL53L0X激光測距傳感器模塊使用說明免費下載

    VL53L0X 芯片作為核心,該芯片內部集成了激光發射器和 SPAD 紅外接收器,采用了第二代 FightSenseTM 技術,通過接收器所接收到的光子時間來計算距離,測距的長度能擴至到兩米,非常適合中短距離測量的應用。
    發表于 03-18 08:00 ?44次下載
    ATK-<b class='flag-5'>VL53L0X</b>激光測距傳感器<b class='flag-5'>模塊</b>使用說明免費下載

    VL53L0X TOF激光測距傳感器的數據手冊免費下載

    VL53L0X是一種新一代飛行時間(TOF)激光測距模塊,安裝在當今市場上最小的封裝中,與傳統技術不同,它提供精確的距離測量,無論目標反射是什么。它可以測量高達2米的絕對
    發表于 07-08 08:00 ?40次下載
    <b class='flag-5'>VL53L0X</b> <b class='flag-5'>TOF</b>激光測距傳感器的數據手冊免費下載

    微雪電子測距傳感器VL53L0X測距模塊簡介

    VL53L0X 飛行時間 測距傳感器模塊 2米 I2C接口 測距頻率可達50Hz,低功耗,抗干擾 型號 VL53L0X Distance Sensor
    的頭像 發表于 01-06 08:56 ?9129次閱讀
    微雪電子測距傳感器<b class='flag-5'>VL53L0X</b>測距<b class='flag-5'>模塊</b>簡介

    dfrobotVL53L0X ToF激光測距傳感器簡介

    VL53L0X激光測距傳感器是一款基于意法半導體(STMicroelectronics)新出的基于飛行時間測距 (ToF) 原理設計的高精度測距傳感器。與傳統的技術不同,VL53L0X無論目標反射率如何,都能提供精確的
    的頭像 發表于 01-02 08:42 ?7404次閱讀
    dfrobotVL<b class='flag-5'>53L0X</b> <b class='flag-5'>ToF</b>激光測距傳感器簡介

    使用STM32F103應用VL53L0X激光測距模塊的測試參考程序免費下載

    本文檔的主要內容詳細介紹的是使用STM32F103應用VL53L0X激光測距模塊的測試參考程序免費下載。
    發表于 06-12 08:00 ?166次下載
    使用<b class='flag-5'>STM32</b>F103應用<b class='flag-5'>VL53L0X</b>激光測距<b class='flag-5'>模塊</b>的測試參考程序免費下載

    VL53L0X激光測距傳感器的數據手冊免費下載

    VL53L0X是新一代飛行時間(ToF)激光測距模塊,封裝在當今市場上最小的封裝中,與傳統技術不同的是,無論目標反射是什么,都能提供精確的距離測量。它可以測量高達2米的絕對
    發表于 12-08 08:00 ?25次下載
    <b class='flag-5'>VL53L0X</b>激光測距傳感器的數據手冊免費下載

    STM32F103+VL53L0X寄存器操作

    這個程序能夠實現STM32F1系列的單片機簡單操作VL53L0x距離傳感器,能夠通過串口輸出測量的距離距離也是比較準確的。但是整個程序比較
    發表于 11-20 12:21 ?58次下載
    <b class='flag-5'>STM32F103+VL53L0X</b>寄存器操作

    基于STM32CUBEMX驅動TOF模塊VL6180與VL6180X(1)----單模塊距離獲取最佳實踐

    VL6180X是基于ST FlightSense?專利技術的最新產品。作為一項突破性技術,它實現了獨立于目標反射率的絕對距離測量。傳統的測量方法通過測量反射光的光量來估算距離,然而這種方法存在一個
    的頭像 發表于 07-27 09:47 ?2082次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b><b class='flag-5'>驅動</b><b class='flag-5'>TOF</b><b class='flag-5'>模塊</b><b class='flag-5'>VL</b>6180與<b class='flag-5'>VL6180X</b>(<b class='flag-5'>1</b>)----<b class='flag-5'>單模塊</b><b class='flag-5'>距離</b><b class='flag-5'>獲取</b>的<b class='flag-5'>最佳</b><b class='flag-5'>實踐</b>
    遵义县| 百家乐电脑游戏高手| 百家乐桌颜色可定制| 玉树县| 百家乐扑克发牌器| 乐九百家乐官网现金网| 都坊百家乐的玩法技巧和规则| 有关百家乐官网玩家论坛| 大发888真钱娱乐下载| 巨星百家乐官网的玩法技巧和规则 | 网页百家乐官网游戏下载| 乐众国际娱乐| 澳门百家乐实战| 百家乐官网必学技巧| 太阳城俱乐部| 百家乐官网群| 侯马市| 百家乐娱乐网网| 百佬汇百家乐官网的玩法技巧和规则 | 太阳城亚洲| 游戏机百家乐的技术| 现场百家乐官网电话投注| 大发888注册送| 百家乐博彩金| 网上百家乐官网有人赢过吗| 大发888博彩官方下载| 永利博百家乐现金网| 娱乐城百家乐官网规则| 威尼斯人娱乐网最新地址| 微信百家乐官网群规则大全| 富阳市| 威尼斯人娱乐场骗人| 罗盘24方位| 百家乐官网是骗人的么| 大发888备用地址| 百家乐信誉平台现金投注| 百家乐官网赢谷输缩| 博E百娱乐城| 百家乐网络游戏信誉怎么样 | 夜总会百家乐官网的玩法技巧和规则| 六安市|