TY桃園智造感測器教學庫
感測器教學庫/距離感測器/毫米波人體存在(C4002)
BATCH 01 · 已發布

SENSOR / MMWAVEPRESENCE

毫米波人體存在感測器(C4002)分辨無人、有人存在與有人移動

C4002 使用 24 GHz FMCW 毫米波偵測人體存在與移動,並透過 UART 回傳資料。本篇將『存在』、『移動』與距離資料拆開教學,避免把毫米波誤解成單純的紅外線開關。

入門45 分鐘Arduino UNO(SoftwareSerial)/ESP32(Serial1)
READYDATA
SIGNAL STABLE
毫米波人體存在感測器(C4002
VCC / 依模組規格供電GND / GND
01 / PREPARE

課前準備

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

學習目標

  1. 理解毫米波對靜止與移動人體的偵測概念。
  2. 以 UART 腳位與回報週期設定 C4002。
  3. 讀取存在狀態、距離與移動速度,設計教室情境應用。

材料清單

1 個DFRobot C4002 毫米波模組避開金屬遮蔽物,正面朝向偵測區。
1 組Arduino UNO 與 USB 線UNO 範例 RX=D4、TX=D5。
1 組符合規格的電源與跳線UART 與 Arduino 必須共地。
適用對象國中生活科技與 Arduino 初學者
建議課時45 分鐘
示範平台Arduino UNO(SoftwareSerial)/ESP32(Serial1)
02 / HOW IT WORKS

用頻率變化觀察空間中的目標

毫米波模組分析反射訊號的變化,除了移動目標,也能在條件適合時判斷有人停留。偵測結果會受安裝高度、背景、金屬與環境校正影響。

01

建立 UART 連線

Arduino 以 SoftwareSerial 或 Serial1 與 C4002 溝通。

02

更新感測資料

在迴圈中取得模組最新回報。

03

判斷目標狀態

分別讀取無目標、有人存在與有人移動。

DISTANCE FORMULAstate ∈ {無目標, 有人存在, 有人移動}

狀態是模組分析後的結果,不代表所有環境都能保證偵測正確;正式安全用途需要專用認證設備。

03 / WIRING

接線配置

UNO 的 RX/TX 要交叉接到模組 TX/RX;使用 5V 或 3.3V 時請依 C4002 模組版本與電平規格確認。

MODULE毫米波人體存在感測器(C4002VCCGNDTXRX
CONTROLArduino UNO(SoftwareSerial)/ESP32(Serial1)依模組規格供電GNDD4(UNO RX)D5(UNO TX)
模組腳位接到控制板訊號方向檢查重點
VCC依模組規格供電電源不要只依接頭外觀猜電壓。
GNDGND地線UART 通訊一定要共地。
TXD4(UNO RX)UART 資料模組 TX 接 Arduino 軟體序列埠 RX。
RXD5(UNO TX)UART 資料模組 RX 接 Arduino 軟體序列埠 TX。
✓ WIRING ROWS ALIGNED

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

04 / BLOCK GUIDE

本課會用到的積木

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

C4002 初始化RX_PIN / TX_PIN 4 / 5REPORT_PERIOD 10
BLOCK 01playrobot_c4002_setup

C4002 初始化

設定 UART 腳位與回報週期

位置:感測器 → 距離感測器 → 毫米波人體存在
RX_PIN / TX_PIN
4 / 5UNO 範例交叉接線;ESP32 請依 Serial1 腳位。
REPORT_PERIOD
10每 0.1 秒的回報週期數值。
C4002 更新資料
BLOCK 02playrobot_c4002_update

C4002 更新資料

讀取最新 UART 資料

位置:感測器 → 距離感測器 → 毫米波人體存在
C4002 偵測到人體存在?
BLOCK 03playrobot_c4002_presence

C4002 偵測到人體存在?

判斷目前是否有目標

位置:感測器 → 距離感測器 → 毫米波人體存在
C4002 目標狀態為STATE ePresence / eMotion
BLOCK 04playrobot_c4002_target_state

C4002 目標狀態為

選擇無目標、有人存在或有人移動

位置:感測器 → 距離感測器 → 毫米波人體存在
STATE
ePresence / eMotion用下拉選單選擇狀態。
存在目標距離(mm)
BLOCK 05playrobot_c4002_presence_distance

存在目標距離(mm)

取得存在目標距離

位置:感測器 → 距離感測器 → 毫米波人體存在
移動目標速度(mm/s)
BLOCK 06playrobot_c4002_motion_speed

移動目標速度(mm/s)

取得移動目標速度

位置:感測器 → 距離感測器 → 毫米波人體存在
05 / BLOCK EXAMPLE

有人停留時點亮教室提示燈

更新 C4002 後,當模組判斷有人存在時控制 LED。

桃園版 BLOCKLY / WORKSPACE● BLOCK STYLE
Arduino 程式
初始化
C4002 初始化(RX 4、TX 5、週期 10)RX_PIN / TX_PIN 4 / 5playrobot_c4002_setup
重複執行arduino_delay
C4002 更新資料playrobot_c4002_update
C4002 目標狀態為「有人存在」STATE ePresence / eMotionplayrobot_c4002_target_state
控制 LED 或蜂鳴器arduino_serial_print
重複執行
C4002 初始化(RX 4、TX 5、週期 10)RX_PIN / TX_PIN 4 / 5playrobot_c4002_setup
重複執行arduino_delay
C4002 更新資料playrobot_c4002_update
C4002 目標狀態為「有人存在」STATE ePresence / eMotionplayrobot_c4002_target_state
控制 LED 或蜂鳴器arduino_serial_print
X / 010Y / 024

組合步驟

01
先做環境校正

依模組教學在無人環境執行校正。

為什麼:背景反射會影響存在判斷。
02
每圈更新資料

把更新積木放入迴圈,再讀取狀態或數值。

為什麼:狀態值必須來自最新 UART 回報。
03
區分存在與移動

分別測試人站著與走動時的狀態。

為什麼:這兩種狀態適合不同的互動設計。
積木使用重點先辨認積木是「回傳值」還是「執行動作」,再放到正確的拼接位置。

playrobot_c4002_setup設定 UART 腳位與回報週期

預期觀察結果

測試情境可能讀值判讀
偵測區無人狀態接近無目標模組未判斷到可追蹤目標。
人站在偵測區可能回報有人存在毫米波能觀察到停留目標的反射變化。
人走過偵測區可能回報有人移動並提供速度移動造成更明顯的頻率變化。
06 / CODE EXPLAINED

範例程式逐段解說

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

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

SoftwareSerial c4002Serial(4, 5); // Arduino RX, TX
DFRobot_C4002 c4002(&c4002Serial, 115200);

void setup() {
  Serial.begin(115200);
  while (c4002.begin() != true) delay(1000);
  c4002.setReportPeriod(10);
}

void loop() {
  c4002.getNoteInfo();
  Serial.println(c4002.getTargetState() != eNoTarget);
  delay(100);
}
SELF STUDY GUIDE先看哪一段、為什麼?
01
先載入函式庫與建立裝置#include <SoftwareSerial.h>

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

02
把程式腳位對回接線表// VCC → 依模組規格供電、GND → GND、TX → D4(UNO RX)、RX → D5(UNO TX)

本頁接線是 VCC → 依模組規格供電、GND → GND、TX → D4(UNO RX)、RX → D5(UNO TX)。程式常數、積木欄位與實體線材必須使用同一組設定;若改了其中一邊,另外兩邊也要一起改。

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

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

04
在 loop 更新並取得資料void loop() {

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

05
輸出結果並控制取樣速度while (c4002.begin() != true) delay(1000);

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

自學檢查
  • 實體接線:VCC → 依模組規格供電、GND → GND、TX → D4(UNO RX)、RX → D5(UNO TX)。
  • 主要積木:playrobot_c4002_setup;先確認它是回傳值還是執行動作。
  • 本課板子:Arduino UNO(SoftwareSerial)/ESP32(Serial1);更換控制板或模組版本時,電壓、腳位與函式庫都要重新確認。
07 / DEBUG

常見問題與故障排除

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

ERR 01

初始化一直失敗

先檢查:確認 RX/TX 是否交叉、共地與供電。

處理方式:模組 TX 接 Arduino RX、模組 RX 接 Arduino TX,並依規格供電。

ERR 02

無人時仍判斷有人

先檢查:檢查安裝角度、金屬反射與校正流程。

處理方式:清空偵測區後重新做環境校正,並縮小教學範圍。

ERR 03

資料更新不穩

先檢查:確認回報週期、序列埠速度與線材長度。

處理方式:降低回報頻率、固定接線,避免在同一序列埠混用除錯訊息。

08 / NEXT MISSION

延伸挑戰

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

L1

有人亮燈

題目:有人存在時點亮 LED,無人時熄滅。

解題方向

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

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

區分停留與移動

題目:為 ePresence 與 eMotion 設計不同顏色的 LED。

解題方向

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

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

教室節能情境

題目:偵測到有人且光照不足時才啟動燈光提示。

解題方向

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

  1. 先匯入本頁 Blockly 範例,確認感測器在沒有加入挑戰功能時能穩定讀值。
  2. 保留 playrobot_c4002_setup,先把讀值送到序列埠,建立正常範圍或基準值。
  3. 依題目「偵測到有人且光照不足時才啟動燈光提示。」加入比較、分類、累計或時間判斷;門檻要用實測資料決定,不要直接猜一個數字。
  4. 用至少三種不同情境測試,記錄輸入、程式判斷與輸出結果,再修正門檻或取樣間隔。
完成檢核:完成後應能指出:哪一個積木取得資料、哪一段負責判斷或換算、把結果接到題目指定的輸出元件是否在所有測試情境都正確反應。
教師快速檢核4 POINT CHECK
  • 能畫出 UART 交叉接線。
  • 能說明更新積木與狀態讀取積木的先後關係。
  • 能分辨存在、移動與距離資料的用途。
09 / EVIDENCE資料來源與版本展開查看 +
LAST REVIEWED / 2026-08-13

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

返回教學庫 →