在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

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

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

概述

在本章中,我們將探討如何同時驅動多個VL53L0X傳感器進行距離測量。我們將介紹如何有效地管理多個傳感器之間的通信和控制,以確保它們能夠同時進行準確的距離測量。通過本章的學習,將能夠了解如何利用多個VL53L0X傳感器的優勢,為應用程序提供更全面的環境感知能力。
最近在弄ST的課程,需要樣片的可以加群申請:615061293 。

在這里插入圖片描述

視頻教學

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

樣品申請

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

源碼下載

[https://download.csdn.net/download/qq_24312945/88332775]

修改設備地址

VL53L0X使用I2C總線進行通信。默認情況下,VL53L0X的7位地址為0x29。然而,為了避免地址沖突并允許多個傳感器共享相同的I2C總線,用戶可以通過向寄存器I2C_SLAVE_DEVICE_ADDRESS(寄存器地址為0x8A)寫入自定義的7位地址來修改傳感器的地址。

在這里插入圖片描述

修改后如下所示。

// Public Methods //////////////////////////////////////////////////////////////

void VL53L0X_setAddress(uint8_t add,uint8_t new_addr)
{
  VL53L0X_WriteByte(add,I2C_SLAVE_DEVICE_ADDRESS, new_addr & 0x7F);

}

在VL53L0X.h文件,該文件包含了VL53L0X傳感器的相關定義和配置。
在VL53L0X.h文件中,可以定義2個設備的地址常量,分別表示不同的傳感器。例如,可以使用以下方式定義地址常量:

#define VL53L0X_DEFAULT_I2C_ADDR1 0x29  ///< The fixed I2C addres
#define VL53L0X_DEFAULT_I2C_ADDR2 0x30  ///< The fixed I2C addres

以上示例展示了兩個設備地址常量的定義,分別表示不同的傳感器。可以根據您實際使用的傳感器數量和配置需求,增加或減少設備地址常量的定義。
在代碼中,可以使用這些設備地址常量來指定不同傳感器的地址。例如,如果想要使用第一個傳感器的地址,可以使用VL53L0X_DEFAULT_I2C_ADDR1來表示該地址。請注意,需要根據實際情況將這些地址常量與傳感器的物理連接和配置相對應。確保將正確的地址常量分配給相應的傳感器,以確保正確的通信和操作。
在進行地址常量定義時,建議參考VL53L0X傳感器的數據手冊和相關文檔,以了解更多關于傳感器地址和配置的詳細信息
這里的地址值是根據實際需求和硬件連接情況選擇的,確保每個設備具有唯一的地址是非常重要的。通過使用定義的設備地址常量,可以輕松地管理和操作多個VL53L0X傳感器。通過為每個傳感器分配唯一的設備地址常量,可以在代碼中使用這些常量來指定與每個傳感器對應的地址。這樣,可以輕松地區分不同的傳感器,并發送適當的命令和配置來與每個傳感器進行通信和操作。通過使用定義的設備地址常量,可以輕松管理和操作多個傳感器,無需手動跟蹤和設置每個傳感器的地址。這提供了方便和靈活性,特別適用于需要同時使用多個VL53L0X傳感器的應用場景。

配置VL53L0X

在對應的demo板子中,管腳圖如下所示。
在這里插入圖片描述

在下面代碼中,展示了對多個VL53L0X傳感器進行初始化和配置的過程。每個傳感器通過不同的管腳連接到主板上,并通過控制GPIO引腳的電平來選擇對應的傳感器進行操作。
以下是對代碼的擴展說明:

  1. 首先,通過控制GPIO引腳的電平,將相應的引腳設置為RESET狀態,以準備初始化對應的傳感器。具體來說,對于每個傳感器,通過控制兩個GPIO引腳,即片選,將它們設置為RESET狀態。
  2. 然后,通過控制GPIO引腳的電平,將相應的引腳設置為SET狀態,以選擇對應的傳感器進行操作。對于每個傳感器,通過控制兩個GPIO引腳,即片選,將它們設置為SET狀態。
  3. 在每次切換傳感器之后,添加了一段延時,以確保引腳狀態的切換穩定。這段延時的長度可以根據實際需求進行調整。
    對每個傳感器執行以下操作:
    a. 初始化傳感器,使用VL53L0X_Init函數,將傳感器的地址作為參數傳遞。
    b. 通過VL53L0X_setAddress函數,修改傳感器的地址,使用VL53L0X_DEFAULT_I2C_ADDR2作為源地址。

通過代碼,可以初始化和配置多個VL53L0X傳感器,并根據需要選擇不同的傳感器進行操作。請注意,以上代碼示例僅為參考,您需要根據自己的硬件連接和需求進行相應的修改和調整。確保參考VL53L0X傳感器的文檔和數據手冊,以了解更多關于初始化、配置和操作傳感器的詳細信息。

/* USER CODE BEGIN 2 */
	// 啟動第一個VL53L0X傳感器并關閉第二個VL53L0X傳感器
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_RESET);

	// 等待200ms以確保第一個VL53L0X傳感器啟動完成
	HAL_Delay(200);

	// 使用默認地址初始化第一個VL53L0X傳感器
	if (!VL53L0X_Init(VL53L0X_DEFAULT_I2C_ADDR1, true))
	{
			printf("Failed to detect and initialize sensor!");
			while (1) {}  // 如果初始化失敗,則無限循環
	}

	// 修改第一個VL53L0X的I2C地址,以便我們可以與第二個VL53L0X傳感器通信
	VL53L0X_setAddress(VL53L0X_DEFAULT_I2C_ADDR1, VL53L0X_DEFAULT_I2C_ADDR2);

	// 啟動第二個VL53L0X傳感器
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_SET);
	HAL_Delay(200);  // 等待200ms以確保第二個VL53L0X傳感器啟動完成

	// 使用之前的默認地址初始化第二個VL53L0X傳感器
	if (!VL53L0X_Init(VL53L0X_DEFAULT_I2C_ADDR1, true))
	{
			printf("Failed to detect and initialize sensor!");
			while (1) {}  // 如果初始化失敗,則無限循環
	}
	
  /* USER CODE END 2 */

主程序

在代碼中,展示了如何在主程序中循環讀取2個VL53L0X傳感器的數據。以下是代碼的擴展說明:

  1. 在主程序的while循環中,首先使用VL53L0X_readRangeSingleMillimeters函數從VL53L0X傳感器2(設備地址為VL53L0X_DEFAULT_I2C_ADDR2)讀取距離數據然后,使用printf函數打印輸出距離值。
  2. 之后等待0.5秒。
  3. 接下來,使用VL53L0X_readRangeSingleMillimeters函數從VL53L0X傳感器1(設備地址為VL53L0X_DEFAULT_I2C_ADDR1)讀取距離數據然后,使用printf函數打印輸出距離值。
  4. 之后等待0.5秒。
    請注意,代碼示例僅為參考,您需要根據您的實際硬件配置、VL53L0X庫和應用需求進行相應的修改和調整。確保參考VL53L0X傳感器的文檔和數據手冊,以了解更多關于數據讀取和解析的詳細信息。
/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    // 從第二個VL53L0X傳感器讀取距離值(單位:毫米)
    L = VL53L0X_readRangeSingleMillimeters(VL53L0X_DEFAULT_I2C_ADDR2);
    printf("L=%d", L);  // 打印從第二個VL53L0X傳感器讀取的距離值
    HAL_Delay(500);  // 延遲500ms(0.5秒)

    // 從第一個VL53L0X傳感器讀取距離值(單位:毫米)
    R = VL53L0X_readRangeSingleMillimeters(VL53L0X_DEFAULT_I2C_ADDR1);
    printf("R=%d", R);  // 打印從第一個VL53L0X傳感器讀取的距離值
    HAL_Delay(500);  // 延遲500ms(0.5秒)
		
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

測試結果

測試距離結果如下所示。

在這里插入圖片描述

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

    關注

    12

    文章

    1840

    瀏覽量

    85291
  • TOF
    TOF
    +關注

    關注

    9

    文章

    483

    瀏覽量

    36349
  • stm32cubemx
    +關注

    關注

    5

    文章

    283

    瀏覽量

    14809
  • VL53L0X
    +關注

    關注

    0

    文章

    7

    瀏覽量

    2490
收藏 人收藏

    評論

    相關推薦

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

    VL53L0X是新一代飛行時間(ToF)激光測距模塊(不同于傳統技術),采用目前市場上最小的封裝,無論目標反射率如何,都能提供精確的距離測量。它可以測量2m的絕對距離,為測距性能等級設定了新的基準,為各種新應用打開了大門。
    的頭像 發表于 12-01 15:45 ?2310次閱讀
    基于<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>(1)----單<b class='flag-5'>模塊</b>距離獲取的最佳實踐

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

    本章主要介紹如何修改VL53L0X傳感器的I2C地址,并成功驅動設備以使用新的地址。VL53L0X是一種多功能、高性能的接近和環境光傳感器,常用于測量物體與傳感器之間的距離、檢測物體的接近程度以及
    的頭像 發表于 12-01 15:46 ?1369次閱讀
    基于<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)----修改設備地址

    新一代ToF 激光測距模塊VL53L0X

    ,所以回程距離的計算公式也很簡單,即“光速” x “時間延遲”。VL53L0X 是新一代 ToF 激光測距模塊,采用目前市場上最小型的封裝,可基于各種目標物顏色和反射特性進行精確測距。
    發表于 04-06 14:03

    VL53L0X可以永久更改I2C地址嗎?

    大家好!關于VL53L0X飛行時間測距和手勢檢測傳感器的簡短問題。數據表提到了“可編程I2C地址”。是否可以永久地將默認I2C地址更改為另一個地址?新的I2C地址是否會永久存儲在VL53L0X中?我
    發表于 10-23 16:46

    如何減少VL53L0X FOV?

    你好。有誰知道是否有可能減少VL53L0X FOV放在它前面一小塊塑料(黑暗?)管道? 它可以運作得足夠好還是串擾會變得不可接受?任何其他選項,以減少檢測FOV?提前感謝
    發表于 11-29 10:21

    VL53L0x不會受到什么樣的材料干擾

    大家好,在我的項目中,它有一個覆蓋VL53L0x(約5厘米)以上。我想知道VL53L0x不會受到什么樣的材料干擾。這意味著VL53L0x在其上方有蓋子時可以正常工作。非常感謝。火星
    發表于 04-12 15:17

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

    ?Best regardsSoren #light-intensity #light #vl53l0x #vl53l0 #tof #ir #time-of-flight #ambient-light #halogen
    發表于 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

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

    VL53L0X是一種新一代飛行時間(TOF)激光測距模塊,安裝在當今市場上最小的封裝中,與傳統技術不同,它提供精確的距離測量,無論目標反射是什么。它可以測量高達2米的絕對距離,設置一個新的B。Enchmark在各種性能級別,為各
    發表于 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 ?9011次閱讀
    微雪電子測距傳感器<b class='flag-5'>VL53L0X</b>測距<b class='flag-5'>模塊</b>簡介

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

    本文檔的主要內容詳細介紹的是使用STM32F103應用VL53L0X激光測距模塊的測試參考程序免費下載。
    發表于 06-12 08:00 ?165次下載
    使用<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>激光測距傳感器的數據手冊免費下載

    使用VL53L0X激光傳感器的Arduino高度測量

    電子發燒友網站提供《使用VL53L0X激光傳感器的Arduino高度測量.zip》資料免費下載
    發表于 11-01 09:53 ?0次下載
    使用<b class='flag-5'>VL53L0X</b>激光傳感器的Arduino高度測量

    Arduino和VL53L0X飛行時間+OLED顯示教程

    電子發燒友網站提供《Arduino和VL53L0X飛行時間+OLED顯示教程.zip》資料免費下載
    發表于 07-03 09:37 ?2次下載
    Arduino和<b class='flag-5'>VL53L0X</b>飛行時間+OLED顯示教程
    主站蜘蛛池模板: 最新亚洲人成网站在线影院| 性欧美久久| 色网站在线| 国产日韩三级| 久久免费看| 成人国产三级在线播放| 欧洲精品码一区二区三区免费看| 永久免费视频| 好大好猛好爽好深视频免费| 五月六月伊人狠狠丁香网| 国产三级a三级三级天天| 国产成人1024精品免费| 亚洲人成电影在线小说网色 | 色婷婷综合和线在线| 爱逼综合| 992tv国产精品福利在线| 色吧五月婷婷| 五月天婷婷色综合| 欧美成人h精品网站| 久久久综合色| 国产中文99视频在线观看| 亚洲电影在线播放| 国产handjob手交在线播放| 在线h网站| 日韩免费视频一区二区| 天天狠天天透| 最近2018年中文字幕免费图片| 户外露出精品视频国产| 91福利网站| 色吧综合| 男人资源网| 五月激情站| 天天操综合视频| 永久免费看mv网站入口| 成人三级电影在线观看| 亚洲综合一二三区| 久久频这里精品99香蕉久网址| 99热这里只有精品69| 日韩精品毛片| 久久精品看片| 色视频在线观看在线播放|