Arduino - PIR感測器



PIR 感測器允許您感知運動。它們用於檢測人是否移入或移出感測器的範圍。它們通常在家用或商用電器和裝置中發現。它們通常被稱為 PIR、 “被動紅外”、“熱釋電”或“紅外運動”感測器。

以下是 PIR 感測器的優點:

  • 體積小巧
  • 廣角鏡頭
  • 易於介面
  • 價格低廉
  • 低功耗
  • 易於使用
  • 不會磨損
PIR Sensor

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

PIR

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

PIR Adjustable Settings

對於許多需要檢測人員何時離開或進入區域的基本專案或產品,PIR 感測器非常適合。請注意,PIR 不會告訴您周圍有多少人或他們與感測器的距離。鏡頭通常固定在一定距離的特定掃描範圍內,有時會被家裡的寵物觸發。

所需元件

您將需要以下元件:

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

步驟

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

PIR Sensor Circuit Connection

草圖

在您的計算機上開啟 Arduino IDE 軟體。使用 Arduino 語言進行編碼將控制您的電路。點選“新建”開啟一個新的草圖檔案。

Sketch

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。連線感測器如下:

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

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

Delay time Adjust

一旦感測器檢測到任何運動,Arduino 將透過序列埠傳送一條訊息,說明檢測到運動。PIR 感知運動將延遲一段時間以檢查是否有新的運動。如果沒有檢測到運動,Arduino 將傳送一條新訊息,說明運動已結束。

結果

如果檢測到運動,您將在序列埠上看到一條訊息,並在運動停止時看到另一條訊息。

廣告