Arduino PIR傳感器

2018-11-21 16:53 更新

PIR傳感器可以讓你感知運動。它們用于檢測人是否進入或離開傳感器的范圍。通常出現(xiàn)在家庭或企業(yè)使用的電器和小工具中。它們通常被稱為PIR,“被動紅外”,“熱電”或“IR運動”傳感器。

以下是PIR傳感器的優(yōu)點:

  • 體積小
  • 鏡頭范圍廣
  • 易于界面
  • 廉價
  • 低電量
  • 使用方便
  • 不會磨損

PIR傳感器


PIR由熱電傳感器制成,圓形金屬罐中央有一個矩形晶體,可以檢測紅外輻射的水平。所有東西都發(fā)射出低水平的輻射,而東西越熱發(fā)射的輻射就越多。運動檢測器中的傳感器分成兩半。這是為了檢測運動(變化)而不是平均IR水平。兩個半部分相互連接,以便彼此抵消。如果一半看到比另一半更多或更少的紅外輻射,則輸出將擺動高或低。

PIR


PIR具有可調(diào)設置,并在3引腳ground/out/power板上安裝了一個接頭。

可調(diào)設置

對于許多需要在人們離開或進入該區(qū)域進行檢測的基礎項目或產(chǎn)品,PIR傳感器是非常有用的。請注意,PIR不會告訴你周圍的人數(shù)或與傳感器的距離。鏡頭通常固定在有一定距離的掃描范圍內(nèi),有時候它們會被房子里的寵物帶走。

必需的組件

你將需要以下組件:

  • 1 × Breadboard 面包板
  • 1 × Arduino Uno R3
  • 1 × PIR傳感器(MQ3)

程序

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

電路圖

草圖

在計算機上打開Arduino IDE軟件。使用Arduino語言進行編碼控制你的電路。通過單擊“New”打開一個新的草圖文件。

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板上的數(shù)字引腳2。
  • 將GND連接到Arduino上的GND。

您可以通過位于傳感器板底部的兩個可變電阻器來調(diào)節(jié)傳感器靈敏度和延遲時間。

可變電阻器

一旦傳感器檢測到任何運動,Arduino將通過串口發(fā)送一條消息,表示檢測到運動。PIR感測運動將延遲一定時間以檢查是否存有新的運動。如果沒有檢測到運動,Arduino將發(fā)送一條新消息,說明運動已經(jīng)結束。

結果

如果檢測到運動,你將在串口上看到一條消息,并在運動停止時看到另一條消息。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號