測距者 8 路雷射測距 (TOF8)

TOF-08-LSR · ToF 雷射測距陣列
測距者 8 路雷射測距 (TOF8)

8 點雷射涵蓋前方 180°:直接告訴你最近的目標在哪個方向、多遠,相撲與避障不再有超音波鬼影。

建議售價 NT$3,000

選擇版本:
180°前方視角
8雷射測距點
17方位解析
支援版本SPIKE 版、EV3 版、通用 I2C 版
供電由主機供電,不需電池
雷射等級Class 1(IEC 60825-1:2014),可索取護眼安全聲明
保固6 個月

WRO RoboMission:高中組可用;國小、國中組請先向主辦單位確認(Class 1 護眼雷射)
WRO 規則對照 · 其他比賽 · 購買管道

① 選你的主機

只列出這款產品能用的主機;選好主機再選軟體,之後整頁都只講你的軟體。

互動教學

不用接主機,先在網頁上點點看:左邊選功能,右邊的程式或積木跟著長出來,還能拖拉模擬感應器看數值。

全部產品的互動教學 →

告別超音波鬼影:180度零死角,相撲對戰與極速避障的 8 點雷射測距陣列。

產品概述

超音波感應器在機器人競賽中有兩個致命缺點:反應慢(音速限制)與容易產生回波鬼影(干擾數據)。在相撲對戰或高速避障的場景中,這兩個缺點可能直接導致比賽失敗。

測距者 8 路搭載 8 顆雷射測距單元,涵蓋完整的左右各 90 度,共 180 度的全視角,讓機器人一次掌握前方左右的障礙物與目標方位。

核心優勢

  • 180 度零死角覆蓋:左右各 4 顆,涵蓋完整的前方半圓範圍,無死角偵測所有威脅
  • 雷射級極速反應:以光速測距,毫秒級反應,讓機器人在最快的速度下做出判斷
  • 🥊 相撲對戰最強武器:全視角讓對手無所遁形,第一時間鎖定目標並追擊
  • 🔼 無縫升級設計:具備雙 0 度(正前方)雷射點,與 TOF2 程式邏輯完美銜接,升級零成本

角度分佈說明

8 顆雷射測距單元以固定角度分佈,涵蓋完整的 180 度視角:

通道 角度 方向
1 -90° 正左側
2 -60° 左前 60°
3 -30° 左前 30°
4 0° 正前方
5 0° 正前方(與 TOF2 銜接用)
6 +30° 右前 30°
7 +60° 右前 60°
8 +90° 正右側

設計巧思:保留兩顆正前方(0 度)感應器,是為了讓從 TOF2 升級的使用者可以無縫延續原本的程式邏輯,只需新增額外通道的處理即可。

產品規格

項目 規格
感測元件 8 組雷射飛行時間 (ToF) 測距單元
量測範圍 0 ~ 1200 mm(讀到 1200 mm/120 cm = 該方向沒有目標)
偵測視角 前方 180°(左右各 90°)
方位解析 17 個方位(0 ~ 16,8 = 正前方)
開機時間 約 2 ~ 4 秒完成 8 顆初始化(期間與主機的連線會持續維持,不會斷線)
故障偵測 自動偵測每一顆的初始化失敗、通訊錯誤與逾時,可由主機讀取

支援平台

平台 支援方式
LEGO SPIKE Prime / Robot Inventor 官方 App、Pybricks(👉 SPIKE 新手範例:官方 App/MBC 積木網站/Pybricks 各 5 個)
LEGO SPIKE Essential 不支援
LEGO MINDSTORMS EV3 EV3 官方軟體、Pybricks(EV3 新手範例)
Arduino / ESP32 / 樹莓派 通用 I2C(位址 0x29)
MATRIX Mini R4 I2C
MakeBlock(mBot 等) 專屬版本,積木與接法

重要

每個平台是不同的出廠版本(接頭與韌體不同),請依你的主機選購對應版本。不確定請 聯絡我們。

範例下載

主機 檔案
SPIKE(Pybricks 4.1) 全部下載(.zip)・不用函式庫(積木)・函式庫範例(積木)・函式庫 MBC_laser8_obj_Lib.py・共用函式庫 MBC_sensors.py(新專案用)
SPIKE(Pybricks 3.6.1,不再更新) 舊版檔案在下載專區的「舊版(不再更新)」
Arduino(通用 I2C 版) 新手範例 6 個(含逐步說明)・全部範例(.zip)
mBot 等(MakeBlock) 積木擴展與避障範例

用函式庫時,把函式庫檔匯入同一個 Pybricks 專案,檔名不要改。

輸出資料

方位的意思: 方位 0 ~ 16,8 = 正前方,數字越小越偏左、越大越偏右;有目標時只會是 1 ~ 15,讀到 0 或 16 代表 120 cm 內沒有目標(沿用上次偏的那一側,不是最左/最右)。I2C 版會換算成 -7(最左)~ +7(最右),0 = 正前方;讀到 ±8 代表 120 cm 內沒有目標(不是最左/最右)。EV3 版:單顆方位是 -7 ~ +7(負=左、正=右),讀到 ±8 代表 120 cm 內沒有目標(不是最左/最右)。

SPIKE 模式(Pybricks 用 PUPDevice(Port.X).read(模式) 讀取)

模式 內容
1 最近目標方位(有目標 1 ~ 15;0 或 16 = 沒有目標)
2 最近目標距離(cm,0 ~ 120)
3 方位、最近距離、最左那顆的距離(3 個值;最右距離讀不到,要用模式 9)
9 完整資訊:8 顆距離(cm)、最近方位與距離、最遠方位與距離、初始化成功位元圖、故障位元圖

EV3 模式

模式 內容
0 正前方距離(兩顆 0° 平均,0 ~ 100:1 格=1.2 cm,100=沒有目標)
1 8 顆距離(各 0 ~ 100)
2 最近方位(-7 ~ +7,±8=沒有目標)、最近距離、最遠方位、最遠距離

∿ 通用 I2C 暫存器(位址 0x29)

共通規則與 Arduino 函式請看 MBC 通用 I2C 協議。距離一律為 uint16、單位 mm:**1200 = 範圍內沒有目標、0xFFFF = 該顆故障**。

提示

不會寫程式也能用: 看 Arduino 範例,每個範例都能直接複製上傳,每一行都有中文說明。

暫存器 方向 長度 內容
0x01 R 17 版本合併包(型號、韌體版本等,見通用協議)
0x11 R 6 方位合併包(= 0x12 ~ 0x15)
0x12 R 1 最近目標方位 int8:有目標時 -7(左)~ +7(右),0 = 正前方;±8 = 8 顆都沒有目標。先看 0x13 < 1200 再用方位
0x13 R 2 最近距離 mm
0x14 R 1 最遠目標方位 int8(8 顆都沒有目標時 = 0)
0x15 R 2 最遠距離 mm
0x21 R 16 8 顆距離合併包(= 0x22 ~ 0x29)
0x22 ~ 0x29 R 2 第 0 ~ 7 顆距離 mm(第 0 顆 = 最左、第 7 顆 = 最右)
0x30 W 1 0x01 = 重新開機
0x31 R 9 狀態合併包(= 0x32 ~ 0x37)
0x32 R 1 bit0 = 就緒(8 顆初始化完成,開機約 2 ~ 4 秒)、bit1 = 有任一顆故障。就緒前所有距離都讀到 0,請先等 bit0 = 1
0x34 / 0x35 / 0x36 R 1 初始化成功/通訊錯誤/逾時 位元圖(bit i = 第 i 顆)

0x06 款式 = [8, 120](顆數、距離上限 ×10 mm),0x07 型號 = LASER8。

// 先等就緒(開機約 2 ~ 4 秒;就緒前距離都是 0)
uint8_t flags = 0;
while (!(iicRead(0x29, 0x32, &flags, 1) && (flags & 0x01))) delay(100);

// 讀最近目標的方位與距離
uint8_t d[6];
if (iicRead(0x29, 0x11, d, 6)) {
  uint16_t dist = ((uint16_t)d[1] << 8) | d[2];   // mm,1200 = 沒有目標
  if (dist < 1200) {
    int8_t dir = (int8_t)d[0];                     // -7 左 ~ +7 右,0 = 正前方
  }
}

硬體接線

  1. SPIKE/EV3 版:使用標準連接線插上 SPIKE(Port AF)或 EV3(Port 14) 通用 I2C 版:VCC → 5V、GND → GND、SDA → A4、SCL → A5(Arduino UNO/Nano),詳見 Arduino 範例
  2. 開機後約 2 ~ 4 秒完成初始化,確認感應器指示燈正常亮起即可使用

常見問題 FAQ

  • 讀到 120 cm(1200 mm)? → 表示該方向在量測範圍內沒有物體,屬於正常現象(EV3 上會讀到 100)。
  • 同一角度兩個感應器數值不同? → 兩顆 0 度感應器的細微角度差異可能造成數值略有不同,建議取平均值使用(EV3 模式 0 已自動平均)。
  • 某一顆一直沒有數值? → 讀取故障位元圖(SPIKE 模式 9 或 I2C 0x34~`0x36`)確認是哪一顆,再 聯絡我們 協助檢修。

想購買或詢價?

個人購買、學校 / 社團大量採購、代理洽談都歡迎,工程師 3 個工作天內回覆。

LINE 詢價選購指南