嵌入式硬件篇---Tof

TOF 的原理與本質

TOF(Time of Flight,飛行時間)是一種通過測量信號(通常是光)在空間中傳播時間來計算距離的技術。其本質是利用 “距離 = 速度 × 時間” 的物理公式:通過發射信號(如激光、紅外光),記錄信號到達目標并反射回接收器的時間差(Δt),再結合信號傳播速度(如光速 c),計算出發射器到目標的距離(d = c × Δt / 2,除以 2 是因為信號往返一次)。

1. 工作原理分類

TOF 技術根據信號測量方式可分為兩類,核心差異在于如何計算 “時間差”:

  • 直接 TOF(dTOF)
    直接測量光脈沖從發射到接收的時間間隔。原理:發射極短的光脈沖(如納秒級激光),接收器通過高精度計時器記錄脈沖發出和返回的時刻,直接計算 Δt。
    特點:精度高(毫米級),但對計時電路要求極高(需納秒級精度),適合中長距離測量(如 10 米以上)。

  • 間接 TOF(iTOF)
    通過測量調制光的相位差間接計算時間。原理:發射被高頻信號(如 10MHz)調制的連續光(如紅外光),接收器檢測反射光與發射光的相位差(Δφ),利用 Δt = Δφ/(2πf)(f 為調制頻率)換算時間。
    特點:電路實現簡單,成本低,適合短距離(如 10 米以內),廣泛用于消費電子。

2. 核心參數
  • 量程:可測量的最大距離(如 0.1m~2m、0.5m~10m),不同場景需求差異大(如手機人臉識別只需 0.3m 內,無人機避障可能需要 50m)。
  • 精度:測量值與真實值的偏差(如 ±1% FS、±3mm),直接影響應用可靠性(如工業檢測需高精度)。
  • 刷新率(幀率):每秒輸出距離數據的次數(如 30Hz、100Hz),高刷新率適合快速移動場景(如機器人避障)。
  • 視場角(FOV):可檢測的空間角度范圍(如 25°×25°),小視場角適合點測距,大視場角可同時檢測多個目標(如 3D 成像)。
  • 抗干擾性:對環境光(如陽光)、反射率差異(如黑色物體反射弱)的抵抗能力,影響復雜環境下的穩定性。

TOF 的使用場景

TOF 的核心價值是快速、精確地獲取距離信息,甚至通過陣列化實現 3D 空間感知,因此應用場景廣泛:

  1. 消費電子

    • 智能手機:人臉識別(判斷用戶與屏幕距離,防止誤觸)、相機對焦(快速測距輔助對焦)、手勢控制(通過 3D 深度感知識別手勢)。
    • 平板電腦 / 筆記本:自動調節屏幕亮度(根據用戶距離調整)、防窺模式(檢測多人觀看時模糊屏幕)。
  2. 機器人與無人機

    • 避障:實時測量與障礙物的距離,觸發減速或轉向(如掃地機器人避開家具、無人機避開樹木)。
    • 導航:結合距離數據構建環境地圖,實現自主定位(SLAM 技術)。
  3. 工業與倉儲

    • 流水線檢測:測量產品尺寸、判斷是否缺件(如飲料瓶液位檢測)。
    • 倉儲物流:無人機或 AGV(自動導引車)定位貨架位置、測量貨物堆疊高度。
  4. AR/VR 與安防

    • AR/VR:通過 3D 深度感知構建真實空間的數字模型,讓虛擬物體與現實環境自然交互(如虛擬家具放置在真實房間)。
    • 安防監控:檢測異常行為(如有人翻越圍墻)、人數統計(通過深度信息區分人體)。
  5. 汽車與交通

    • 自動駕駛:短距離 TOF 用于檢測車輛周圍障礙物(如行人、其他車輛),輔助緊急制動。
    • 智能停車:測量車位大小與車輛距離,輔助自動泊車。

常用的 TOF 模塊

TOF 模塊根據應用場景可分為 “單點測距” 和 “3D 成像” 兩類,以下是常用型號:

模塊型號類型量程精度通信方式特點與適用場景
VL53L0X單點 iTOF0.05~2m±3%I2C低成本、小體積,適合消費電子(如 Arduino/ESP32 入門項目)
VL53L1X單點 iTOF0.05~4m±1%I2C量程更遠、精度更高,適合機器人避障
TFmini-S單點 dTOF0.1~12m±2cmUART/I2C激光測距,抗干擾強,適合無人機、戶外場景
LIDAR-Lite v4單點 dTOF0.02~40m±2cmI2C/SPI工業級精度,用于自動駕駛、測繪
PMD CamBoard3D iTOF0.3~5m±5mmUSB3D 成像(輸出深度圖),適合 AR/VR、手勢識別
Intel RealSense D4353D iTOF0.1~10m±2%USB高性能 3D 相機,支持 SLAM,適合機器人導航

ESP32 驅動 VL53L0X TOF 模塊的代碼示例

VL53L0X 是 ST 推出的低成本單點 TOF 模塊(iTOF),適合入門級測距項目,以下代碼演示如何在 ESP32 上通過 I2C 讀取其距離數據。

硬件連接
  • VCC → ESP32 的 3.3V(VL53L0X 僅支持 3.3V,接 5V 會燒壞)
  • GND → ESP32 的 GND
  • SCL → ESP32 的 GPIO22(默認 I2C SCL)
  • SDA → ESP32 的 GPIO21(默認 I2C SDA)
  • XSHUT → 可選(用于模塊復位,可不接或接 ESP32 GPIO,此處簡化不接)
代碼實現(使用 Adafruit_VL53L0X 庫)

ESP32讀取VL53L0X TOF模塊距離數據

#include <Wire.h>
#include <Adafruit_VL53L0X.h>// 創建VL53L0X對象
Adafruit_VL53L0X lox = Adafruit_VL53L0X();void setup() {Serial.begin(115200);Wire.begin(21, 22); // 初始化I2C(SDA=GPIO21, SCL=GPIO22)// 初始化VL53L0X模塊Serial.println("初始化VL53L0X TOF模塊...");if (!lox.begin()) {Serial.println("初始化失敗!請檢查接線或模塊是否正常");while (1); // 初始化失敗則死循環}Serial.println("VL53L0X初始化成功,開始測距...");
}void loop() {VL53L0X_RangingMeasurementData_t measure;// 觸發一次測距lox.rangingTest(&measure, false); // false表示不打印調試信息// 檢查測量是否有效if (measure.RangeStatus != VL53L0X_ERROR_NONE) {Serial.print("測距錯誤,狀態碼:");Serial.println(measure.RangeStatus);} else {// 輸出距離(單位:毫米)Serial.print("距離:");Serial.print(measure.RangeMilliMeter);Serial.println(" mm");}delay(500); // 每500ms測一次
}
代碼說明
  1. 庫依賴:使用Adafruit_VL53L0X庫簡化模塊操作,需在 Arduino IDE 中通過 “庫管理器” 安裝(搜索 “Adafruit VL53L0X”)。
  2. 初始化:通過lox.begin()初始化模塊,失敗則提示錯誤(常見原因:接線錯誤、模塊損壞、I2C 地址沖突)。
  3. 測距過程lox.rangingTest()觸發測距,結果存儲在measure結構體中,包括距離值(RangeMilliMeter)和狀態碼(RangeStatus)。
  4. 狀態碼說明VL53L0X_ERROR_NONE表示測量有效;其他值(如VL53L0X_ERROR_OUT_OF_RANGE)表示超出量程或異常。
進階優化
  • 調整測距模式:VL53L0X 支持 “短距離高精度”(默認,0.05~1.3m)和 “長距離”(0.5~2m)模式,可通過setMeasurementTimingBudget()修改測量時間(時間越長精度越高,刷新率越低)。
  • 抗干擾處理:對連續多次測量結果取平均值,過濾突發誤差(如環境光干擾導致的跳變)。
  • 多模塊組網:若需多個 VL53L0X,可通過 XSHUT 引腳單獨控制每個模塊的復位,修改 I2C 地址(默認 0x29)避免沖突。

TOF 與其他測距技術的對比

技術原理優勢劣勢適合場景
TOF光飛行時間精度高(mm 級)、速度快成本較高、受強光影響消費電子、機器人、AR/VR
超聲波聲波反射時間低成本、抗光干擾精度低(cm 級)、速度慢倒車雷達、簡單避障
紅外反射式光反射強度極低成本精度差(受反射率影響大)接近開關(如手靠近亮屏)

TOF 憑借 “高精度 + 高速度” 的優勢,正在逐步替代傳統測距技術,成為主流的距離感知方案。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/96036.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/96036.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/96036.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue diff簡介

Vue3 diff 最長遞增子序列雙端diff 理念 相同的前置和后置元素的預處理&#xff0c;考慮邊界情況&#xff0c;減少移動&#xff1b;最長遞增子序列&#xff08;動態規劃、二分法&#xff09;&#xff0c;判斷是否需要移動 操作 前置與后置預處理判斷是否需要移動 遞增法&#x…

羅技MX Anywhere 2S鼠標修復記錄

【現象】單擊時總是出現雙擊的現象 【問題原因】從網絡收集&#xff1a; 說法1&#xff0c;歐姆龍微動損壞&#xff1b;說法2&#xff0c;按鍵磨損導致按鍵和微動開關接觸不良&#xff1b; 【問題排查】 微動損壞&#xff1a;拆掉殼子后&#xff0c;用手按住左鍵的微動開關&…

常見IP模塊的仲裁策略和實現

在一個 Message Unit 中包含兩個 Core&#xff08;處理器核心&#xff09;&#xff0c;它們之間訪問共享資源&#xff08;如寄存器、FIFO、buffer 等&#xff09;時&#xff0c;仲裁機制&#xff08;Arbitration&#xff09; 是確保系統穩定性和正確性的關鍵。以下是常見的仲裁…

上周60+TRO案件,波比的游戲時間/丹迪世界/飛盤/迪奧/多輪維權,手表/汽車品牌持續發力,垃圾桶專利等新增侵權風險!

賽貝整理上周&#xff08;2025年8月11日-8月15日&#xff09;的TRO訴訟案件發案情況&#xff0c;根據賽貝TRO案件查詢系統了解到&#xff0c;上周合計發起了超60起訴訟案件&#xff0c;涵蓋 IP /品牌、版權、專利等多個領域&#xff0c;涉及影視、奢侈品、汽車、游戲、日常用品…

用 Python 在 30 分鐘內搭一個「可回放的實時日志」——把攻擊流量變成可視化劇情

業務背景 我們運營一款 FPS 端游&#xff0c;外掛作者常把 DDoS 偽裝成「玩家掉線」來騙客服。以前排查要撈 CDN 日志、對時間戳、人工比對&#xff0c;平均 2 小時才能定位。現在用一條 30 行的 Python 腳本把邊緣節點日志實時打到 Kafka&#xff0c;再回放到 Grafana&#xf…

如何將 LM Studio 與 ONLYOFFICE 結合使用,實現安全的本地 AI 文檔編輯

人工智能正在改變我們的工作方式——但如今大多數 AI 工具都存在弊端&#xff1a;速度和便利性雖有所提升&#xff0c;但也意味著數據需要發送到外部服務器。對于教育工作者、企業、非政府組織以及任何處理敏感信息的人來說&#xff0c;這都是不可接受的風險。 LM Studio 和 O…

超市電商銷售分析項目:從數據分析到業務決策

國際超市電商銷售數據分析實戰&#xff1a;從數據清洗到業務決策的完整流程 在電商行業&#xff0c;數據是驅動業務增長的核心引擎。本文將以國際超市電商銷售數據為研究對象&#xff0c;完整拆解從數據準備 → 深度分析 → 策略輸出的實戰流程&#xff0c;涵蓋數據清洗、多維度…

GitHub 熱榜項目 - 日榜(2025-08-17)

GitHub 熱榜項目 - 日榜(2025-08-17) 生成于&#xff1a;2025-08-17 統計摘要 共發現熱門項目&#xff1a;12 個 榜單類型&#xff1a;日榜 本期熱點趨勢總結 本期GitHub熱榜呈現三大技術趨勢&#xff1a;1) AI基礎設施持續爆發&#xff0c;Archon OS和Parlant聚焦AI任務管…

記憶翻牌游戲 greenfoot 開發

記憶翻牌游戲是一種經典的益智游戲&#xff0c;玩家需要翻開卡片并記住它們的位置&#xff0c;然后找到所有匹配的卡片對。 核心玩法 游戲開始時&#xff0c;所有卡片都是背面朝上玩家每次可以翻開兩張卡片如果兩張卡片圖案相同&#xff0c;則保持翻開狀態&#xff08;匹配成功…

【lucene】SegmentInfos

SegmentInfos 類中文說明 ———————————— **一句話** SegmentInfos 是 segments_N 文件的**內存表示**。它把磁盤上的 segments_N 讀進來&#xff0c;變成一堆 SegmentInfo 的集合&#xff1b;當你增刪改索引、合并段、提交時&#xff0c;再把它寫回磁盤&#x…

Read Frog:一款開源AI瀏覽器語言學習擴展

Read Frog&#xff1a;一款開源AI瀏覽器語言學習擴展 來源&#xff1a;Poixe AI Read Frog&#xff08;中文名&#xff1a;陪讀蛙&#xff09;是一款開源的瀏覽器擴展&#xff0c;旨在通過人工智能技術&#xff0c;將常規網頁瀏覽轉化為一種沉浸式的語言學習體驗。該工具通過…

天地圖應用篇:增加全屏、圖層選擇功能

天地圖應用篇&#xff1a;增加全屏、圖層選擇功能本節說明&#xff1a; 目的&#xff1a; 實現地圖的圖層切換全屏顯示 / 退出全屏案例截圖 示下&#xff1a;案例代碼示例代碼&#xff1a; <template><div class"tianditu-map-container"><!-- 頂部搜…

從零開始,系統學習AI與機器學習:一份真誠的學習路線圖

人工智能&#xff08;AI&#xff09;和機器學習&#xff08;ML&#xff09;正在深刻改變眾多行業的面貌&#xff0c;掌握這些技術已成為許多技術從業者提升競爭力的重要路徑。無論你是希望進入這個充滿潛力的領域&#xff0c;還是期望在現有技術基礎上進行拓展&#xff0c;一份…

NVIDIA CWE 2025 上海直擊:從 GPU 集群到 NeMo 2.0,企業 AI 智能化的加速引擎

前言 8 月 8 日&#xff0c;我受邀參加了在上海舉辦的 NVIDIA CWE 大會。作為一個正在企業內部推動 AI 落地的從業者&#xff0c;這場會議對我來說不僅是“充電”&#xff0c;更像是一場“解題會”。參會感受 在分享干貨之前&#xff0c;我先談談這次參會的不同感受。給我感受特…

Web攻防-大模型應用LLM安全提示詞注入不安全輸出代碼注入直接間接數據投毒

知識點&#xff1a; 1、WEB攻防-LLM安全-API接口安全&代碼注入 2、WEB攻防-LLM安全-提示詞注入&不安全輸出 Web LLM&#xff08;Large Language Model&#xff09;攻擊指針對部署在Web端的AI大語言模型的攻擊行為。攻擊者通過惡意提示詞注入、訓練數據竊取、模型逆向工…

docker compose再阿里云上無法使用的問題

最原始的Dokcerfile # 使用官方Python 3.6.8鏡像 FROM python:3.6.8-slimWORKDIR /app# 復制依賴文件 COPY requirements.txt .RUN pip install --upgrade pip # 檢查并安裝依賴&#xff08;自動處理未安裝的包&#xff09; RUN pip install --no-cache-dir -r requirements.tx…

C++STL容器List的模擬實現

一、引言list的實現&#xff0c;還是比較簡單的&#xff0c;大家只要想著土家樓的形狀&#xff0c;畫出圖來就好了&#xff0c;不需要過多擔心。本次的博客會發出一個完整的實現List的List.hpp&#xff0c;以后也會這樣&#xff0c;主要是分段發被說孩子分段生。二、模擬List由…

區塊鏈 + 域名Web3時代域名投資的新風口(上)

關于Dynadot Dynadot是通過ICANN認證的域名注冊商&#xff0c;自2002年成立以來&#xff0c;服務于全球108個國家和地區的客戶&#xff0c;為數以萬計的客戶提供簡潔&#xff0c;優惠&#xff0c;安全的域名注冊以及管理服務。 Dynadot平臺操作教程索引&#xff08;包括域名郵…

電子電氣架構 --- 軟件會給汽車帶來哪些變化?

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

在rtthread中,互斥量不能在中斷服務例程中使用?以及線程多次持有互斥量的情況怎么理解?

互斥鎖的所有權&#xff1a;互斥量的狀態只有兩種&#xff0c;開鎖或閉鎖&#xff08;兩種狀態值&#xff09;。當有線程持有它時&#xff0c;互斥量處于閉鎖狀態&#xff0c;由這個線程獲得它的所有權。相反&#xff0c;當這個線程釋放它時&#xff0c;將對互斥量進行開鎖&…