TY桃園智造感測器教學庫
感測器教學庫/距離感測器/VL53L5CX 8×8 ToF 影像
BATCH 03 · 已完成

SENSOR / VL53L5CX

VL53L5CX 8×8 ToF 距離感測器把一個視野拆成 64 個距離區域,做出簡易深度地圖

VL53L5CX 是 ST 的多區域 ToF 距離感測器,能以 8×8 區域回傳距離。本課使用桃園版 Blockly 的更新、中央距離、最短距離與指定區域積木,練習把距離資料轉成障礙物提示。

入門45 分鐘Arduino UNO(I2C,SparkFun VL53L5CX Library)
READYDATA
SIGNAL STABLE
VL53L5CX 8×8 ToF
VIN/VCC / 依轉接板規格GND / GND
01 / PREPARE

課前準備

先確認這一課要學會什麼,以及桌面上需要哪些材料。

學習目標

  1. 理解 ToF 飛行時間與多區域量測概念。
  2. 使用 0x29 初始化並更新 8×8 距離資料。
  3. 比較中央、最短與指定區域的距離。

材料清單

1 個VL53L5CX 8×8 ToF 模組確認模組是否有電平轉換與穩壓。
1 組Arduino UNO 與 I2C 線材UNO 使用 A4/SDA、A5/SCL。
數個紙盒或積木障礙物用不同距離測試 64 區資料。
適用對象國中生活科技與 Arduino 初學者
建議課時45 分鐘
示範平台Arduino UNO(I2C,SparkFun VL53L5CX Library)
02 / HOW IT WORKS

光飛出去再回來,時間差變成距離

感測器發出近紅外光並計算反射光回來的時間,再把視野切成最多 64 個區域。資料是距離,不是影像色彩;每一格都要留意無效值與量測範圍。

01

建立 I2C

接妥 3.3V、GND、SDA、SCL,確認位址為 0x29。

02

啟動 8×8

設定解析度並開始 ranging,等待資料可用。

03

整理區域

從 64 格取出中央或最短距離,用來判斷前方障礙。

DISTANCE FORMULAdistance_mm = VL53L5CX distance_mm[zone]

指定區域編號由左上角第 1 格到第 64 格;程式內部索引是 0 到 63。

03 / WIRING

接線配置

VL53L5CX 是 I2C 模組,UNO 以 A4/A5 連接;請依轉接板標示使用 3.3V 或可接受的 VIN。

MODULEVL53L5CX 8×8 ToFVIN/VCCGNDSDASCL
CONTROLArduino UNO(I2C,SparkFun VL53L5CX Library)依轉接板規格GNDA4 / SDAA5 / SCL
模組腳位接到控制板訊號方向檢查重點
VIN/VCC依轉接板規格電源裸晶片與有穩壓的 breakout 供電要求不同。
GNDGND地線所有裝置要共地。
SDAA4 / SDAI2C 資料UNO 的 SDA。
SCLA5 / SCLI2C 時脈UNO 的 SCL,範例使用 400 kHz。
✓ WIRING ROWS ALIGNED

已將 4 條線路依同一筆資料逐列對齊;電壓仍須依手上模組版本確認。

04 / BLOCK GUIDE

本課會用到的積木

積木名稱與型別以桃園版 Blockly 現行程式為準,不以通用積木替代。

VL53L5CX 初始化I2C_ADDR 0x29
BLOCK 01playrobot_vl53l5cx_setup

VL53L5CX 初始化

設定 I2C 位址 0x29 並啟動感測器。

位置:感測器 → 距離感測器 → VL53L5CX 8×8 ToF 影像
I2C_ADDR
0x29依桃園版 Blockly 的固定位址選項設定。
VL53L5CX 更新資料
BLOCK 02playrobot_vl53l5cx_update

VL53L5CX 更新資料

讀取一筆新的感測資料。

位置:感測器 → 距離感測器 → VL53L5CX 8×8 ToF 影像
中央平均距離(mm)
BLOCK 03playrobot_vl53l5cx_center_distance

中央平均距離(mm)

讀取中央四格的平均距離。

位置:感測器 → 距離感測器 → VL53L5CX 8×8 ToF 影像
最短距離(mm)
BLOCK 04playrobot_vl53l5cx_min_distance

最短距離(mm)

找出有效區域中的最近物體。

位置:感測器 → 距離感測器 → VL53L5CX 8×8 ToF 影像
指定區域距離(mm)
BLOCK 05playrobot_vl53l5cx_point_distance

指定區域距離(mm)

用 ZONE 選取 1~64 的區域。

位置:感測器 → 距離感測器 → VL53L5CX 8×8 ToF 影像
VL53L5CX 資料已更新
BLOCK 06playrobot_vl53l5cx_data_ready

VL53L5CX 資料已更新

確認新資料是否已準備好。

位置:感測器 → 距離感測器 → VL53L5CX 8×8 ToF 影像
05 / BLOCK EXAMPLE

用中央距離控制障礙物警示

當中央距離小於門檻時,讓序列埠顯示「靠近」,練習把距離資料接到條件判斷。

桃園版 BLOCKLY / WORKSPACE● BLOCK STYLE
Arduino 程式
初始化
VL53L5CX 初始化I2C_ADDR 0x29playrobot_vl53l5cx_setup
重複執行arduino_delay
VL53L5CX 更新資料playrobot_vl53l5cx_update
中央平均距離(mm)playrobot_vl53l5cx_center_distance
序列埠列印距離arduino_serial_print
重複執行
VL53L5CX 初始化I2C_ADDR 0x29playrobot_vl53l5cx_setup
重複執行arduino_delay
VL53L5CX 更新資料playrobot_vl53l5cx_update
中央平均距離(mm)playrobot_vl53l5cx_center_distance
序列埠列印距離arduino_serial_print
X / 010Y / 024

組合步驟

01
先看中央四格

把紙盒放在模組正前方,觀察中央平均距離。

為什麼:中央區域較適合做前方障礙判斷。
02
移動障礙物

以 10 公分為間隔移動紙盒。

為什麼:比較距離變化與實際位置。
03
加入最短距離

用最短距離偵測側邊突然出現的物體。

為什麼:理解中央值與全視野值的差異。
積木使用重點先辨認積木是「回傳值」還是「執行動作」,再放到正確的拼接位置。

playrobot_vl53l5cx_setup設定 I2C 位址 0x29 並啟動感測器。

EXAMPLE DOWNLOAD下載後即可練習

下載桃園版 Blockly 專案或對應的文字程式。

預期觀察結果

測試情境可能讀值判讀
紙盒靠近中央中央距離變小ToF 量測到反射物距離縮短。
區域沒有有效反射可能出現 0 或無效值程式要先檢查資料是否 ready。
06 / CODE EXPLAINED

範例程式逐段解說

這段程式把「VL53L5CX 8×8 ToF 距離感測器」的實體接線、桃園版 Blockly 積木與 Arduino 執行流程接在一起。先對照腳位,再看初始化、讀值、輸出與等待的順序;每一步都可以回到本頁的積木範例實測。

GENERATED LOGIC / EXCERPT積木背後的程式碼收合程式碼 −
TAOYUAN BLOCKLY / ARDUINO C++READ ONLY
#include <Wire.h>
#include <SparkFun_VL53L5CX_Library.h>

SparkFun_VL53L5CX sensor;
VL53L5CX_ResultsData data;

void setup() {
  Serial.begin(115200);
  Wire.begin();
  Wire.setClock(400000);
  if (sensor.begin(0x29)) {
    sensor.setResolution(8 * 8);
    sensor.startRanging();
  }
}

void loop() {
  if (sensor.isDataReady() && sensor.getRangingData(&data)) {
    Serial.println(data.distance_mm[27]);
  }
  delay(100);
}
SELF STUDY GUIDE先看哪一段、為什麼?
01
先載入函式庫與建立裝置#include <Wire.h>

函式庫提供桃園版 Blockly 產生器所需的底層功能;若這裡的函式庫或物件名稱不對,後面的 playrobot_vl53l5cx_setup 就算接線正確也無法使用。

02
把程式腳位對回接線表// VIN/VCC → 依轉接板規格、GND → GND、SDA → A4 / SDA、SCL → A5 / SCL

本頁接線是 VIN/VCC → 依轉接板規格、GND → GND、SDA → A4 / SDA、SCL → A5 / SCL。程式常數、積木欄位與實體線材必須使用同一組設定;若改了其中一邊,另外兩邊也要一起改。

03
在 setup 只做一次初始化void setup() {

啟動序列埠、I²C/UART 或感測器初始化通常只需要做一次,所以要放在「初始化」區,不要每一圈重複建立裝置。這也對應範例中的啟動積木。

04
在 loop 更新並取得資料VL53L5CX_ResultsData data;

重複執行區先讓感測器更新,再讀取 VL53L5CX 初始化。若元件有 data ready、可用性或逾時條件,先判斷狀態再使用數值,避免把無效資料當成真實測量。

05
輸出結果並控制取樣速度if (sensor.begin(0x29)) {

先把原始值、單位或狀態送到序列埠,才能和預期結果比較;等待時間則決定更新速度。若看到亂碼,先檢查鮑率;若數值跳動,先增加合理的取樣間隔或做校正。

自學檢查
  • 實體接線:VIN/VCC → 依轉接板規格、GND → GND、SDA → A4 / SDA、SCL → A5 / SCL。
  • 主要積木:playrobot_vl53l5cx_setup;先確認它是回傳值還是執行動作。
  • 本課板子:Arduino UNO(I2C,SparkFun VL53L5CX Library);更換控制板或模組版本時,電壓、腳位與函式庫都要重新確認。
07 / DEBUG

常見問題與故障排除

先從「電源、接線、腳位、物體」四個方向檢查,再修改程式。

ERR 01

初始化失敗

先檢查:確認電源、SDA/SCL 與 0x29。

處理方式:先用 I2C 掃描器確認裝置,再檢查 breakout 的供電規格。

ERR 02

距離一直是 0

先檢查:確認是否等待 isDataReady。

處理方式:先更新資料再讀取區域值,並讓障礙物有明顯反射面。

ERR 03

數值跳動

先檢查:檢查環境光、距離與固定方式。

處理方式:固定模組並改用中央平均或多次取樣。

08 / NEXT MISSION

延伸挑戰

從顯示數值,逐步走向條件判斷、燈號回饋與雷達專題。

L1

中央距離尺

題目:列印中央距離並與尺量結果比較。

解題方向

這題要延伸「VL53L5CX 初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。

  1. 先匯入本頁 Blockly 範例,確認感測器在沒有加入挑戰功能時能穩定讀值。
  2. 保留 playrobot_vl53l5cx_setup,先把讀值送到序列埠,建立正常範圍或基準值。
  3. 依題目「列印中央距離並與尺量結果比較。」加入比較、分類、累計或時間判斷;門檻要用實測資料決定,不要直接猜一個數字。
  4. 用至少三種不同情境測試,記錄輸入、程式判斷與輸出結果,再修正門檻或取樣間隔。
完成檢核:完成後應能指出:哪一個積木取得資料、哪一段負責判斷或換算、先把資料整理成可觀察的序列埠或表格結果是否在所有測試情境都正確反應。
L2

障礙物警示

題目:中央距離小於 300 mm 時亮 LED。

解題方向

這題要延伸「VL53L5CX 初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。把結果接到題目指定的輸出元件。

  1. 先匯入本頁 Blockly 範例,確認感測器在沒有加入挑戰功能時能穩定讀值。
  2. 保留 playrobot_vl53l5cx_setup,先把讀值送到序列埠,建立正常範圍或基準值。
  3. 依題目「中央距離小於 300 mm 時亮 LED。」加入比較、分類、累計或時間判斷;門檻要用實測資料決定,不要直接猜一個數字。
  4. 用至少三種不同情境測試,記錄輸入、程式判斷與輸出結果,再修正門檻或取樣間隔。
完成檢核:完成後應能指出:哪一個積木取得資料、哪一段負責判斷或換算、把結果接到題目指定的輸出元件是否在所有測試情境都正確反應。
L3

8×8 小地圖

題目:輪流列印 64 格距離,找出最近區域。

解題方向

這題要延伸「VL53L5CX 初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。

  1. 先匯入本頁 Blockly 範例,確認感測器在沒有加入挑戰功能時能穩定讀值。
  2. 保留 playrobot_vl53l5cx_setup,先把讀值送到序列埠,建立正常範圍或基準值。
  3. 依題目「輪流列印 64 格距離,找出最近區域。」加入比較、分類、累計或時間判斷;門檻要用實測資料決定,不要直接猜一個數字。
  4. 用至少三種不同情境測試,記錄輸入、程式判斷與輸出結果,再修正門檻或取樣間隔。
完成檢核:完成後應能指出:哪一個積木取得資料、哪一段負責判斷或換算、先把資料整理成可觀察的序列埠或表格結果是否在所有測試情境都正確反應。
教師快速檢核4 POINT CHECK
  • 能說明 ToF 是以光的飛行時間估算距離。
  • 能正確使用 I2C 位址與更新積木。
  • 能分辨中央、最短與指定區域距離。
09 / EVIDENCE資料來源與版本展開查看 +
官方資料
VL53L5CX datasheetSTMicroelectronics

確認 8×8 多區域 ToF、65° 視角與 I2C 感測器特性。

桃園版 Blockly
桃園版 Blockly VL53L5CX 積木桃園版 Blockly

確認 setup、update、zone、center、min 與 data ready 積木。

LOCAL
LAST REVIEWED / 2026-08-13

本頁使用零件圖鑑標準範本,內容可由網站編輯模式持續維護。

返回教學庫 →