[ESP32]人感センサー(HC-SR501) with Arduino IDE

ESP32
スポンサーリンク

人感センサー(HC-SR501) with Arduino IDE

はじめに

HC-SR501とは、赤外線による温度変化を検出することにより、人がいるかどうかを判定します。
温度を持つものから自然に放射されている赤外線による温度変化を検出するため、人以外の動物などでも検知します。
また、静止している場合は温度変化がないため、検知しません。
遅延時間、感度、トリガーモードを調整することができます。

<<販売元情報>>
動作電圧:DC4.5V-20V
出力電圧:HIGH 3.3V/LOW 0V
遅延時間:0.3秒~200秒で調整可能
トリガーモード:I 繰り返し無し、h 繰り返し有り
誘導範囲:120度未満の円錐角、最大3m~7mで調整可能
動作温度:-15℃~+70℃

開発環境

OS : Windows 11 Pro
ESP32:ESP-WROOM-32
統合開発環境 : Arduino IDE 2.3.2
Arduino core for the ESP32:1.0.6
使用ライブラリ:なし

使用パーツ

ESP32開発ボード(38Pin)

\ポイント最大11倍!/
楽天市場
\ポイント最大24.5%還元!/
Yahooショッピング
\管理人おすすめ!/
Aliexpress

人感センサー(HC-SR501)

\ポイント最大11倍!/
楽天市場
\ポイント最大24.5%還元!/
Yahooショッピング
\管理人おすすめ!/
AliExpress

ジャンパーワイヤー(メスーメス)

作業内容

配線図

HC-SR501 とは OUTピンに GPIO 16 を接続します。

HC-SR501ESP32開発ボード(38Pin)
VCC5V
OUTGPIO 16
GNDGND

調整

左まわし右まわし
Time Delay Adjust
(遅延時間調整)
最小約1秒最小約240秒
Sensitivity Adjust
(感度調整)
最大約3m最大約7m

※遅延時間の秒数は、実際に計測すると1秒~240秒ぐらいでした。個体差もあると思われます。

Repeat TriggerSingle Trigger
Trigger Mode検知中に再度検知すると
遅延時間が伸びる
検知中に再度検知しても
遅延時間は伸びない

また、遅延時間終了後にブロック時間(検知できない状態)が2.5秒程度あるようです。

ライブラリインストール

なし。

スケッチ作成

距離を計測するスケッチを作成します。

#define SENSOR_PIN 16

void setup()
{
  Serial.begin(115200);
  pinMode(SENSOR_PIN, INPUT);
}

void loop()
{
  delay(500);

  byte reedDigital = digitalRead(SENSOR_PIN);
  if (reedDigital) {
    Serial.println("=== SENSOR ON ===");
  } else {
    Serial.println("=== SENSOR OFF ===");
  }
}

500ms毎に人感センサー(HC-SR501)のOUTピンを確認し、HIGH/LOWで人を検知しているか確認しています。

コード説明
#define SENSOR_PIN 16

SENSOR_PIN を16に設定

  pinMode(SENSOR_PIN, INPUT);

ピンモードをINPUTに設定

  byte reedDigital = digitalRead(SENSOR_PIN);

SENSOR_PIN の読み取り

動作確認

動作させてみると、シリアルモニタに取得した値が表示されます。

おわりに

これを使用すれば、人感センサー付きライトなど様々なものへ応用できそうです。

コメント

タイトルとURLをコピーしました