You are currently viewing 結合PIR移動感測器的Arduino

結合PIR移動感測器的Arduino

在這節項目中,您將使用可以檢測運動的Arduino和PIR物體移動感測器建立一個簡單的電路。檢測到物體移動時,LED指示燈將點亮。

介紹PIR移動感測器

PIR移動感測器非常適合檢測物體移動。PIR代表“被動紅外線”。基本上,PIR移動感測器測量其視場中物體的紅外光。 因此,它可以根據環境中紅外光的變化檢測運動。理想的是檢測人員是否已移入或移出感測器範圍。

上圖中的感測器具有兩個內置電位器,用於調節延遲時間(左側的電位器)和靈敏度(右側的電位器)。

引腳排列

將PIR移動感測器連接到Arduino非常簡單-感測器只有3個引腳。

  • GND –接地
  • OUT –連接到Arduino數字引腳
  • 5V –連接至5V

所需零件

這是該項目所需的零件

  • 1個PIR運動傳感器(HC-SR501)
  • Arduino UNO
  • 1個LED
  • 跨接電線

原理圖

請按照以下示意圖組裝所有零件。

程式碼

上傳下面程式碼。

/*  
    完整程式碼說明,請參閱: https://honeststore.com.tw/blog/arduino-pir/
    Modified by Terry Lee based on PIR sensor by Limor Fried
*/
 
int led = 13;                // the pin that the LED is atteched to
int sensor = 2;              // the pin that the sensor is atteched to
int state = LOW;             // by default, no motion detected
int val = 0;                 // variable to store the sensor status (value)

void setup() {
  pinMode(led, OUTPUT);      // initalize LED as an output
  pinMode(sensor, INPUT);    // initialize sensor as an input
  Serial.begin(9600);        // initialize serial
}

void loop(){
  val = digitalRead(sensor);   // read sensor value
  if (val == HIGH) {           // check if the sensor is HIGH
    digitalWrite(led, HIGH);   // turn LED ON
    delay(100);                // delay 100 milliseconds 
    
    if (state == LOW) {
      Serial.println("Motion detected!"); 
      state = HIGH;       // update variable state to HIGH
    }
  } 
  else {
      digitalWrite(led, LOW); // turn LED OFF
      delay(200);             // delay 200 milliseconds 
      
      if (state == HIGH){
        Serial.println("Motion stopped!");
        state = LOW;       // update variable state to LOW
    }
  }
}

總結

這篇文章展示了一個簡單的範例,說明如何在Arduino上使用PIR物體移動感測器。現在,您可以在更高級的項目中使用PIR移動感測器。例如,您可以建立一個 夜間安全燈項目

如果您是絕對的初學者,並且還只是入門,那麼我們建議您看一下我們的免費Arduino課程。

謝謝閱讀。如果您喜歡這篇文章,也許您可能會喜歡我們的下一篇文章,那麼請訂閱我們的Blog來支持我們。

發佈留言