人感センサー(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)

人感センサー(HC-SR501)

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

作業内容
配線図
HC-SR501 とは OUTピンに GPIO 16 を接続します。

HC-SR501 | ESP32開発ボード(38Pin) |
VCC | 5V |
OUT | GPIO 16 |
GND | GND |
調整

左まわし | 右まわし | |
Time Delay Adjust (遅延時間調整) | 最小約1秒 | 最小約240秒 |
Sensitivity Adjust (感度調整) | 最大約3m | 最大約7m |
※遅延時間の秒数は、実際に計測すると約1秒~240秒ぐらいでした。個体差もあると思われます。
Repeat Trigger | Single 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 の読み取り
動作確認
動作させてみると、シリアルモニタに取得した値が表示されます。


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