搜尋程式碼

Arduino代碼同影片,用於HC-SR501動作感應器

Arduino代碼同影片,用於HC-SR501動作感應器

喺呢個教學入面,我哋會探討HC-SR501動作感應器,佢係透過紅外線技術嚟偵測動作。感應器可以觸發輸出,令你可以根據動作偵測嚟控制LED或者警報等裝置。完成呢個教學之後,你就會清楚明白點樣接線感應器同埋實作Arduino程式碼令佢有效運作。(喺影片00:45)

硬件解說

HC-SR501動作感應器係一個細小模組,尺寸係32乘24毫米,可以喺5至20伏特嘅電壓範圍內運作。佢嘅核心係LHI 778紅外線感應器,透過感應紅外線輻射嘅變化嚟偵測動作。咁令到佢適合各種應用,包括保安系統同機械人項目。

呢個模組有三個主要針腳:VCC用嚟供電,GND用嚟接地,同埋OUT用嚟輸出訊號。當偵測到動作嘅時候,OUT針腳會送出高電平訊號(3.3伏特TTL),可以用嚟觸發警報或者其他裝置。感應器仲有可調較嘅靈敏度同時間延遲設定,令你可以根據自己嘅特定需要嚟自訂操作。

數據表詳情

製造商HC-SR501
零件編號HC-SR501
邏輯/IO電壓3.3 V
供電電壓5–20 V
輸出電流(每通道)≤ 20 mA
峰值電流(每通道)≤ 50 mA
PWM頻率指引唔適用
輸入邏輯閾值0.8 V(LOW),2.0 V(HIGH)
電壓降 / RDS(on) / 飽和0.1 V
熱限制0°C至70°C
封裝模組
備註 / 變體可調較靈敏度同時間延遲

  • 確保供電電壓正確(5-20 V)。
  • 同LED串聯電阻嚟限制電流。
  • 調整靈敏度電位器嚟設定偵測範圍。
  • 設定時間延遲嚟控制輸出保持高電平嘅時間。
  • 留意浮空輸入;需要時使用上拉或下拉電阻。

接線指示

Arduino wiring for HC-SR501 Motions sensor
Arduino wiring for HC-SR501 Motions sensor

要接線HC-SR501動作感應器,首先將VCC針腳連接到Arduino嘅5V輸出。跟住將GND針腳連接到Arduino嘅接地(GND)。OUT針腳應該連接到Arduino嘅數碼針腳2,用嚟讀取動作偵測訊號。

如果你用LED嚟做視覺反饋,將LED嘅陽極(長針腳)連接到Arduino嘅數碼針腳8。陰極(短針腳)應該連接到一個680歐姆電阻嘅一端,而電阻嘅另一端接地。呢個設定令Arduino可以根據動作偵測嚟控制LED。

程式碼範例同講解

呢個設定嘅Arduino程式碼初始化序列監視器,並配置輸入同輸出針腳。程式碼入面嘅主要識別符包括motion,用嚟儲存動作感應器嘅狀態,以及用嚟讀取輸入同控制LED嘅數碼針腳。

void setup() {
  Serial.begin(9600);// 設定序列監視器嚟顯示資訊
  pinMode(2, INPUT);// 感應器輸入
  pinMode(8, OUTPUT);// 輸出到警報或LED
}

喺呢段節錄入面,setup()函數初始化序列通訊,並設定感應器同LED嘅針腳模式。針腳2設定為輸入嚟讀取動作感應器嘅輸出,而針腳8設定為輸出嚟控制LED。

void loop() {
  int motion = digitalRead(2);
  if(motion){
    Serial.println("偵測到動作");
    digitalWrite(8, HIGH);
  }else{
    Serial.println("===冇嘢移動");
    digitalWrite(8, LOW);
  }
  delay(500);
}

呢段程式碼係主迴圈,程式會持續檢查動作感應器嘅狀態。如果偵測到動作,就會喺序列監視器印出「偵測到動作」並開啟LED。如果冇偵測到動作,就會印出「===冇嘢移動」並關閉LED。

示範 / 預期效果

當設定完成並將程式碼上傳到Arduino之後,你應該會見到當HC-SR501感應器偵測到動作嘅時候LED會著燈。另外,序列監視器會顯示訊息話你知係咪偵測到動作。如果你調整感應器上面嘅靈敏度同時間延遲設定,你可能會注意到感應器對動作嘅反應速度有變化(喺影片05:30)。

常見錯誤包括接線唔正確,例如將VCCGND嘅連接調轉,咁可能會整壞感應器。確保感應器嘅輸出針腳正確連接到Arduino上指定嘅輸入針腳,以避免浮空輸入。

影片時間標記

  • 00:00 介紹
  • 00:45 硬件概覽
  • 02:30 接線指示
  • 04:00 程式碼解說
  • 05:30 示範

圖片

HC-SR501 back
HC-SR501 back
HC-SR501 module
HC-SR501 module
Arduino wiring for HC-SR501 Motions sensor
Arduino wiring for HC-SR501 Motions sensor
48-This is the Arduino code for the HC-SR501 motion sensor.
語言: C++
/*
 * This is the Arduino code for HC-SR501 Motion Sensor
 * to detect motion of humans or objects using Arduino for robotic car and other applications
 * Watch the video https://youtu.be/mZCJNOf69JI
 * 
 * Written by Ahmad Shamshiri for Robojax Video
 * Date: Dec 27, 2017, in Ajax, Ontario, Canada
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: this code is "AS IS" and for educational purposes only.
 * 
 */

void setup() {
  Serial.begin(9600);// setup Serial Monitor to display information
  pinMode(2, INPUT);// Input from sensor
  pinMode(8, OUTPUT);// OUTPUT to alarm or LED
}

void loop() {
  int motion =digitalRead(2);
  if(motion){
    Serial.println("Motion detected");
    digitalWrite(8,HIGH);
  }else{
     Serial.println("===nothing moves");
     digitalWrite(8,LOW);
  }
  delay(500);

}

資源與參考資料

暫時冇資源。

文件📁

其他文件