搜尋程式碼

ESP32 教學 21/55 - 用 PIR 動作感應器偵測人體 | SunFounder 嘅 ESP32 IoT 學習套件

ESP32 教學 21/55 - 用 PIR 動作感應器偵測人體 | SunFounder 嘅 ESP32 IoT 學習套件

喺呢個教學入面,我哋會學吓點樣用PIR動作感應器配合ESP32嚟偵測人類存在。ESP32係一個功能強大嘅微控制器,同時具備Wi-Fi同藍牙功能,好啱用喺IoT項目度。透過整合PIR感應器,我哋可以建立一個系統,喺偵測到動作嘅時候啟動LED或者蜂鳴器,提供一個簡單但有效嘅方法嚟監測人類活動。

PIR感應器 RE 200B

PIR(被動紅外線)感應器透過感應物件發出嘅紅外線輻射嚟偵測動作,特別係好似人類咁有溫暖身體嘅物件。當偵測到動作嘅時候,感應器會發送訊號畀ESP32,然後ESP32可以觸發輸出,例如點亮LED或者令蜂鳴器發聲。呢個教學會引導你完成硬件設置、接線同代碼,令系統正常運作(喺影片00:45位置)。

ESP32-21動作感應器-電路圖

硬件解說

呢個項目涉及幾個主要組件。ESP32微控制器作為操作嘅大腦,負責處理感應器數據同控制輸出。PIR動作感應器透過量度紅外線輻射嘅變化嚟偵測移動。LED或者蜂鳴器喺偵測到動作嘅時候提供視覺或者聽覺警報。

ESP32配備Wi-Fi同藍牙,容許擴展功能好似雲端連接。PIR感應器包含一個透鏡,將紅外線聚焦喺熱電感應器上面,當佢偵測到紅外線水平變化嘅時候會產生電壓訊號,表示有移動。

數據表詳情

製造商 SunFounder
零件編號 PIR感應器模組
邏輯/IO電壓 3.3 V
供電電壓 3.3 V
輸出電流(每通道) 最大20 mA
峰值電流(每通道) 最大50 mA
PWM頻率指引 唔適用
輸入邏輯閾值 0.3 V(低),2.0 V(高)
電壓降 / RDS(on) / 飽和 唔適用
熱限制 0至70 °C
封裝 模組
備註 / 變體 可調較靈敏度同延遲

 

  • 確保正確供電(3.3 V)以避免損壞。
  • 為LED使用電阻嚟限制電流。
  • 保持正確接線以防止短路。
  • 按需要調整PIR感應器旋鈕嚟設定靈敏度同延遲。
  • 喺唔同環境測試感應器以獲得最佳性能。

接線指示

ESP32-21_motion_sensor-wiring

要將PIR動作感應器同LED接線到ESP32,首先將PIR感應器嘅VCC引腳連接到ESP32嘅3.3 V輸出。跟住將PIR感應器嘅接地引腳連接到ESP32嘅接地引腳。PIR感應器嘅訊號引腳(通常標示為S)應該連接到ESP32嘅GPIO引腳14。

對於LED,將較長嘅腳(陽極)透過220歐姆電阻連接到GPIO引腳26,然後將較短嘅腳(陰極)連接到接地。確保所有連接穩固以確保正常功能。如果你用蜂鳴器代替LED,將蜂鳴器嘅一個引腳連接到GPIO引腳26,另一個連接到接地,取代LED設置。

代碼示例同解說

喺代碼入面,我哋定義PIR感應器同LED嘅引腳號碼。我哋用const int pirPin = 14;嚟設定PIR引腳,用const int ledPin = 26;嚟設定LED引腳。呢啲常數確保引腳號碼喺程式執行期間保持不變。

const int pirPin = 14;  // PIR引腳號碼
const int ledPin = 26;     // LED引腳

呢段代碼初始化我哋會用嘅引腳。喺setup()函數入面,我哋將PIR引腳配置為輸入,LED引腳配置為輸出。呢個設置對於讀取感應器狀態同控制LED好重要。

void setup() {
  Serial.begin(115200);  
  pinMode(pirPin, INPUT);  // 將PIR引腳初始化為輸入
  pinMode(ledPin, OUTPUT);  // 將LED引腳初始化為輸出
}

loop()函數入面,我哋用digitalRead(pirPin);持續讀取PIR感應器嘅狀態。如果感應器偵測到動作(以HIGH狀態表示),我哋用digitalWrite(ledPin, HIGH);點亮LED。否則,我哋熄滅LED。

if (pirState == HIGH) {
    digitalWrite(ledPin, HIGH);  // 點亮LED
} else {
    digitalWrite(ledPin, LOW);    // 熄滅LED
}

呢個邏輯令LED可以回應PIR感應器偵測到嘅動作。確保上傳文章下面提供嘅完整代碼以獲得完整功能。

示範 / 預期效果

當一切設置好並且代碼上傳之後,當PIR感應器偵測到動作嘅時候,LED會亮起。你可以透過喺感應器前面移動嚟測試;LED應該即刻亮起。如果感應器設定咗延遲,佢會喺指定時間內保持亮住,然後先至熄滅(喺影片12:15位置)。

常見問題包括接線錯誤,咁會令感應器無法正常運作。確保PIR感應器有正確供電,而且訊號腳要連接到ESP32上正確嘅GPIO腳位。調整PIR感應器上面嘅靈敏度同延遲旋鈕,都可以幫你根據環境優化效能。

影片時間標記

  • 00:00 開始
  • 1:54 PIR感應器簡介
  • 6:38 接線講解
  • 10:21 Arduino程式碼講解
  • 12:45 喺Arduino IDE入面選擇ESP32開發板同COM埠
  • 14:27 PIR感應器示範同校準

圖片

ESP32-21_motion_sensor-wiring
ESP32-21_motion_sensor-wiring
PIR SENSOR RE 200B
PIR SENSOR RE 200B
ESP32-21_motion_sensor-schematic
ESP32-21_motion_sensor-schematic
820-ESP32 Tutorial 21/55- Arduino code for motion sensor
語言: C++
// set pin numbers
const int pirPin = 14;  // the number of the pir pin
const int ledPin = 26;     // LED pin

// variable for storing the pir status 
int pirState = 0;

void setup() {
  Serial.begin(115200);  
  // initialize the pir pin as an input
  pinMode(pirPin, INPUT);
  // initialize the LED pin as an output
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // read the state of the pir value
  pirState = digitalRead(pirPin);
  Serial.println(pirState);
  delay(100);

  // if the pir is pressed, the pirState is HIGH
  if (pirState == HIGH) {
    // turn LED on
    digitalWrite(ledPin, HIGH);

  } else {
    // turn LED off
    digitalWrite(ledPin, LOW);
  }
}

資源與參考資料

暫時冇資源。

文件📁

数据表 (pdf)

其他文件