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

8 點雷射涵蓋前方 180°:直接告訴你最近的目標在哪個方向、多遠,相撲與避障不再有超音波鬼影。
建議售價 NT$3,000
| 支援版本 | SPIKE 版、EV3 版、通用 I2C 版 |
|---|---|
| 供電 | 由主機供電,不需電池 |
| 雷射等級 | Class 1(IEC 60825-1:2014),可索取護眼安全聲明 |
| 保固 | 6 個月 |
WRO RoboMission:高中組可用;國小、國中組請先向主辦單位確認(Class 1 護眼雷射)
WRO 規則對照 · 其他比賽 · 購買管道

① 選你的主機
只列出這款產品能用的主機;選好主機再選軟體,之後整頁都只講你的軟體。
SPIKE樂高 SPIKE Prime(黃色主機)與 Robot Inventor(藍綠色主機)樂高官方 App・MBC 積木網站・Pybricks
EV3樂高 MINDSTORMS EV3 主機(RJ12 接頭)EV3-G 官方軟體・EV3 Classroom・Pybricks・clev3r
ArduinoArduino UNO、Nano、UNO R4、ESP32,用 I2C 接Arduino IDE
mBlockmBot、Ranger、Orion、MegaPi,用 mBlock 5 積木mBlock 5
MATRIXMATRIX Mini R4 主機,用 MATRIXblock 積木MATRIXblock 原廠積木
micro:bitmicro:bit V1/V2,用 MakeCode 積木MakeCode互動教學
不用接主機,先在網頁上點點看:左邊選功能,右邊的程式或積木跟著長出來,還能拖拉模擬感應器看數值。
SPIKEMicroPython(Pybricks)Pybricks 積木Pybricks 內建積木(不匯入函式庫)MBC 積木網站樂高官方 SPIKE App官方 SPIKE App Python
EV3Pybricks/EV3 MicroPythonclev3rEV3 ClassroomEV3-G 官方軟體
ArduinoArduino IDE
mBlockmBlock 5
MATRIXMATRIXblock
micro:bitMakeCode
告別超音波鬼影: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)
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 = 正前方
}
}硬體接線
- SPIKE/EV3 版:使用標準連接線插上 SPIKE(Port A
F)或 EV3(Port 14) 通用 I2C 版:VCC → 5V、GND → GND、SDA → A4、SCL → A5(Arduino UNO/Nano),詳見 Arduino 範例 - 開機後約 2 ~ 4 秒完成初始化,確認感應器指示燈正常亮起即可使用
常見問題 FAQ
- 讀到 120 cm(1200 mm)? → 表示該方向在量測範圍內沒有物體,屬於正常現象(EV3 上會讀到 100)。
- 同一角度兩個感應器數值不同? → 兩顆 0 度感應器的細微角度差異可能造成數值略有不同,建議取平均值使用(EV3 模式 0 已自動平均)。
- 某一顆一直沒有數值? → 讀取故障位元圖(SPIKE 模式 9 或 I2C
0x34~`0x36`)確認是哪一顆,再 聯絡我們 協助檢修。