Arduino - PIR 感測器

PIR 感測器可讓你感知運動。它們用於檢測人是否已移入或移出感測器的範圍。它們常見於家庭或企業使用的家用電器和小工具中。它們通常被稱為 PIR,“被動紅外”,“熱電”或“IR 運動”感測器。

以下是 PIR 感測器的優點 -

  • 體積小
  • 寬鏡頭範圍
  • 易於介面
  • 便宜
  • 低電量
  • 使用方便
  • 不要磨損

PIR 感測器

PIR 由熱釋電感測器製成,圓形金屬罐中心有一個矩形晶體,可以檢測紅外輻射水平。一切東西都發出低水平的輻射,更熱的東西是,輻射越多。運動檢測器中的感測器分成兩半。這是為了檢測運動(變化)而不是平均 IR 水平。連線兩半使它們相互抵消。如果有一半看到的 IR 輻射比另一半更多或更少,則輸出會高或低。

PIR

PIR 具有可調節的設定,並在 3 針接地/輸出/電源墊中安裝了接頭。

PIR 可調節設定

對於許多需要檢測人員何時離開或進入該區域的基本應用或產品,PIR 感測器非常棒。請注意,PIR 不會告訴你周圍的人數或他們與感測器的接近程度。

需要的元件

你將需要以下元件 -

  • 1×麵包板
  • 1×Arduino Uno R3
  • 1×PIR 感測器(MQ3)

程式

按照電路圖進行連線,如下圖所示。

PIR 感測器電路連線

草圖

在你的計算機上開啟 Arduino IDE 軟體。用 Arduino 語言編碼將控制你的電路。單擊“新建”開啟新的草圖檔案。

草圖

Arduino 程式碼

#define pirPin 2
int calibrationTime = 30;
long unsigned int lowIn;
long unsigned int pause = 5000;
boolean lockLow = true;
boolean takeLowTime;
int PIRValue = 0;

void setup() {
   Serial.begin(9600);
   pinMode(pirPin, INPUT);
}

void loop() {
   PIRSensor();
}

void PIRSensor() {
   if(digitalRead(pirPin) == HIGH) {
      if(lockLow) {
         PIRValue = 1;
         lockLow = false;
         Serial.println("Motion detected.");
         delay(50);
      }
      takeLowTime = true;
   }
   if(digitalRead(pirPin) == LOW) {
      if(takeLowTime){
         lowIn = millis();takeLowTime = false;
      }
      if(!lockLow && millis() - lowIn > pause) {
         PIRValue = 0;
         lockLow = true;
         Serial.println("Motion ended.");
         delay(50);
      }
   }
}

程式碼注意

PIR 感測器有三個端子 - Vcc,OUT 和 GND。按如下方式連線感測器 -

  • 在 Arduino 板上將+Vcc 連線到+5v。
  • 將 OUT 連線到 Arduino 板上的數字引腳 2。
  • 在 Arduino 上連線 GND 和 GND。

你可以通過位於感測器板底部的兩個可變電阻來調整感測器靈敏度和延遲時間。

延遲時間調整

一旦感測器檢測到任何動作,Arduino 將通過串列埠傳送訊息,表示檢測到動作。PIR 感應運動將延遲一定時間以檢查是否存在新動作。如果沒有檢測到動作,Arduino 將傳送一條新訊息,說明動作已經結束。

結果

如果檢測到動作,你將在串列埠上看到一條訊息,當動作停止時,你將看到另一條訊息。