Arduino × 人體感測器:讓裝置「看見」你的互動設計指南
你是否想過,家裡的燈可以在你走進房間時自動亮起?展覽的藝術品能在觀眾靠近時啟動音效?或是停車場的設備能在車子靠近時自動開門?
這些場景都不再是未來科技——只要用 Arduino 搭配人體感測器,你也能做出這些東西!今天就來聊聊紅外線測距、PIR 人體感測這些技術的原理,以及實際可以做的互動專案。
🔬 人體感測技術大解析
紅外線測距感測器(IR Distance Sensor)
原理
紅外線測距感測器運作的方式很直覺:發射一束紅外線光,遇到物體後反射回來,感測器測量光線來回的時間或角度,就能計算出物體的距離。
常見的型號有 GP2Y0A21YK(測量範圍 10–80 cm)和 GP2Y0A02YK(測量範圍 20–150 cm)。輸出的是類比電壓訊號,距離越近電壓越高,距離越遠電壓越低。
Arduino 連接方式
紅外線測距感測器 → Arduino
─────────────────────────
VCC (紅線) → 5V
GND (黑線) → GND
Signal (黃線) → A0 (類比輸入)
簡單範例程式
const int IR_SENSOR = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int distance = analogRead(IR_SENSOR);
// 數值轉換為公分的公式(依型號而異)
float cm = 10650.08 / (distance - 10.41);
Serial.print("距離:");
Serial.print(cm);
Serial.println(" cm");
delay(100);
}
PIR 人體紅外線感測器(Passive Infrared Sensor)
原理
PIR 感測器和紅外線測距不同,它不發射任何光線,而是被動接收環境中的紅外線輻射。
人體會發出紅外線(熱輻射),PIR 感測器內部有兩片紅外感應片,正常情況下接收到的熱輻射相同。當有人體移動時,紅外輻射會先落在其中一片、再落在另一片,產生差異訊號,感測器就知道「有人經過」了。
重點:PIR 感測器偵測的是「移動中的熱源」,靜止的人體它可能感應不到。
常用模組:HC-SR501
HC-SR501 是最熱門的 PIR 感測器模組,支援:
- 可調感應距離:約 3–7 公尺
- 可調延遲時間:0.3–25 秒
- 觸發模式切換(H / L)
Arduino 連接方式
HC-SR501 PIR 感測器 → Arduino
─────────────────────────────
VCC → 5V
GND → GND
OUT (輸出) → D2 (數位輸入)
簡單範例程式
const int PIR_SENSOR = 2;
const int LED = 13;
void setup() {
pinMode(PIR_SENSOR, INPUT);
pinMode(LED, OUTPUT);
Serial.begin(9600);
}
void loop() {
int motion = digitalRead(PIR_SENSOR);
if (motion == HIGH) {
digitalWrite(LED, HIGH);
Serial.println("🚶 偵測到人體移動!");
} else {
digitalWrite(LED, LOW);
Serial.println("✅ 無人");
}
delay(500);
}
🛠️ 四大經典互動專案
專案一:智能迎賓門鈴
場景:有訪客靠近門口時,自動播放迎賓音效並閃爍 LED。
所需材料:
- Arduino Uno
- HC-SR501 PIR 感測器
- 蜂鳴器或 MP3 播放模組(如 DFPlayer Mini)
- LED 一顆
- 杜邦線若干
電路圖說明:
- PIR OUT → D2
- 蜂鳴器(或 MP3 模組 TX/RX)→ D9 / D10
- LED → D13(並串聯 220Ω 電阻)
創意延伸:
- 結合 SD 卡模組,播放不同的迎賓語
- 加入光敏電阻,夜晚才啟動(省電)
- 連接 Wi-Fi 模組,發送推播通知到手機
專案二:互動式感應燈光牆
場景:牆面有多顆 LED,當人的手靠近不同位置,對應的燈就會亮起。
所需材料:
- Arduino Nano
- GP2Y0A21YK 紅外線測距感測器 × 5
- RGB LED 燈條(WS2812B)× 30 顆
- 響應式控制程式碼
原理說明:
在牆面後方安裝 5 支紅外線測距感測器,每支監控一個區塊的手部距離。距離變化時,該區段的 RGB LED 就會改變顏色或亮度。
#include <Adafruit_NeoPixel.h>
#define PIXEL_PIN 6
#define PIXEL_COUNT 30
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);
const int SENSOR[5] = {A0, A1, A2, A3, A4};
int lastValue[5] = {0};
void setup() {
strip.begin();
strip.show();
}
void loop() {
for (int i = 0; i < 5; i++) {
int raw = analogRead(SENSOR[i]);
int cm = 10650.08 / (raw - 10.41);
// 根據距離映射亮度
int brightness = map(constrain(cm, 10, 80), 10, 80, 255, 0);
// 設定該區段燈光顏色(每段 6 顆燈)
int start = i * 6;
for (int j = 0; j < 6; j++) {
strip.setPixelColor(start + j, brightness, brightness, brightness);
}
}
strip.show();
delay(50);
}
專案三:停車場車輛偵測系統
場景:汽車靠近柵欄時,柵欄自動升起;離開後自動放下。
所需材料:
- Arduino Mega(需要更多腳位)
- GP2Y0A02YK 紅外線測距感測器(長距離型)
- 伺服馬達(控制柵欄)
- LCD 螢幕(1602 I2C)顯示車位狀態
- 蜂鳴器警示
流程設計:
- 車輛靠近(距離 < 100cm)→ LCD 顯示「歡迎光臨」
- 伺服馬達轉動 90° → 柵欄升起
- 等待 5 秒(車輛通過)
- 柵欄自動放下
專案四:互動式藝術互動牆
場景:在展覽或工作坊中,牆面投影會根據觀眾位置產生粒子效果或波形變化。
所需材料:
- Arduino Uno × 2(分擔訊號處理)
- PIR 感測器 × 3(偵測觀眾方向)
- Processing 軟體(電腦端視覺效果)
- 序列通訊(USB 傳遞資料給電腦)
原理:
Arduino 負責感測觀眾位置與移動方向,透過 Serial 傳送資料到電腦的 Processing 程式,Processing 再即時運算生成視覺效果(粒子系統、聲波、干擾紋理等)。
// Arduino 端
const int PIR[3] = {2, 3, 4};
void setup() {
Serial.begin(9600);
for (int i = 0; i < 3; i++) pinMode(PIR[i], INPUT);
}
void loop() {
String data = "";
for (int i = 0; i < 3; i++) {
data += digitalRead(PIR[i]);
if (i < 2) data += ",";
}
Serial.println(data); // 格式如 "1,0,0"
delay(50);
}
💡 進階技巧:多感測器融合
單一感測器難免有盲點——PIR 會被熱源(暖氣、寵物)干擾,紅外線測距在強光下可能失準。
厲害的設計會這樣做:
PIR + 紅外線測距雙重確認
只有當兩種感測器都偵測到物體,才判定為「有人」。大幅降低誤觸機率。時間窗口過濾
設定一個時間窗口(例如 200ms),只有在這段時間內連續偵測到訊號,才視為有效。這樣可以過濾短暫的干擾。數值平滑化
紅外線測距的原始數值會有跳動,用移動平均法可以讓數據更穩定:
const int SMOOTH = 10;
int readings[SMOOTH];
int index = 0;
int total = 0;
int smoothRead(int pin) {
total -= readings[index];
readings[index] = analogRead(pin);
total += readings[index];
index = (index + 1) % SMOOTH;
return total / SMOOTH;
}
🛒 感測器推薦清單(Amazon / 蝦皮熱賣款)
| 感測器型號 | 類型 | 價格區間 | 適合場景 | 推薦指數 |
|---|---|---|---|---|
| HC-SR501 | PIR 人體紅外線 | $60–120 TWD | 迎賓燈、門鈴、安防 | ⭐⭐⭐⭐⭐ |
| GP2Y0A21YK | 紅外線測距(短距) | $150–250 TWD | 互動藝術、機器人 | ⭐⭐⭐⭐ |
| GP2Y0A02YK | 紅外線測距(長距) | $200–350 TWD | 停車場、門禁 | ⭐⭐⭐⭐ |
| VL53L0X | 雷射測距(ToF) | $300–500 TWD | 高精度需求場景 | ⭐⭐⭐⭐⭐ |
| RCWL-0516 | 微波雷達感測 | $80–150 TWD | 穿透非金屬材質偵測 | ⭐⭐⭐⭐ |
💡 小編推薦:如果你剛開始玩,HC-SR501 + GP2Y0A21YK 這個組合幾乎能應付 80% 的互動專案需求,兩顆加起來不用 $300 超划算!
⚠️ 常見問題 Q&A
Q:PIR 感測器一直誤觸發怎麼辦?
A:檢查環境中是否有熱源(暖氣、電腦主機、陽光直射窗)。另外確認靈敏度與延遲時間旋鈕是否調整到適當位置。
Q:紅外線測距在戶外不準?
A:陽光中含有大量紅外線,會干擾測距結果。戶外建議改用 VL53L0X 雷射 ToF 感測器,不受光線影響。
Q:可以同時用很多顆紅外線測距感測器嗎?
A:可以,但要注意供電與干擾。建議每顆感測器獨立供電(不要串聯取電),且訊號線分開接不同的類比輸入腳位。
Q:Arduino 的類比輸入不夠用怎麼辦?
A:使用 I2C 多工器(如 TCA9548A)或改用 Arduino Mega 獲得更多腳位。
🚀 下一步:加入 IoT 連線能力
現在你已經會用感測器「看到」人了,接下來可以加入網路模組,讓你的裝置會「說話」:
- ESP8266 / ESP32:支援 Wi-Fi,可以用 MQTT 協定發送資料到 Home Assistant 或自建 IoT 平台
- HC-05 藍牙模組:近距離連接手機,用 App 控制燈光或接收通知
- nRF24L01:長距離(室內可達 100m)無線傳輸,適合大型安裝
結合 IoT 之後,你的互動裝置就能做到:LINE 通知、資料上雲、手機遙控、甚至語音助理整合—— DIY 智慧家庭的門檻,真的比你想的還低!
總結
人體感測器是互動裝置的「感官」——沒有它,你的 Arduino 就是個盲啞的機器人。學會紅外線測距與 PIR 感測器的原理與應用,你就能做出:
- ✅ 智能迎賓系統
- ✅ 互動式燈光藝術
- ✅ 停車場自動化管理
- ✅ 展覽互動投影
- ✅ 智慧家居感應設備
重點是先從一個小專案開始——做出來了,你對這些技術的理解才會真正深刻。別等靈感,現在就去淘一顆 HC-SR501 來玩吧!
本文章由內容工作室編寫,合作提案歡迎來信。文中提及之商品連結為聯盟行銷連結,透過購買可能獲得少量佣金,感謝您的支持!
Top comments (0)