Arduinoで人感センサーHC-SR501入門|配線・コード・感度調整を徹底解説
HC-SR501は、人の動きを検知する赤外線センサーです。廊下の自動照明や、簡易的な防犯用途で人気の部品です。本記事では、配線とコードの基本を解説します。さらに、基板上のポテンショメータを使った感度・時間の調整方法や、誤検知を防ぐ注意点まで、初心者の方に向けて順を追って紹介します。
01HC-SR501とは|人感センサーの仕組み

何を検知しているのか
HC-SR501は、PIR(パッシブ赤外線)方式の人感センサーです。人を含む温かい物体は、赤外線を放射しています。このセンサーは、視野内の赤外線量が変化した瞬間を検知します。つまり、正確には「人」を検知しているのではありません。「赤外線の変化」、いわば「動き」を検知しているのです。この仕組みには注意点があります。対象が完全に静止していると、検知されなくなるのです。
3本のピンの役割
HC-SR501には、VCC・OUT・GNDという3本のピンがあります。VCCとGNDは電源用です。OUTは検知結果を出力するピンです。動きを検知するとHIGHに、検知していないときはLOWになります。この単純な出力方式には利点があります。タクトスイッチと同じような感覚でコードを書けるのです。
玄関の自動照明を作りたいNさんは、HC-SR501を購入した。タクトスイッチの読み取りを学んでいたNさんは、HIGH・LOWで状態を判定する考え方にすぐ馴染めた。「押されたか」が「動きがあったか」に変わっただけだ。コードの骨格はよく似ています。既存の知識を新しい部品に応用できた、良い例です。
02基礎知識|感度・時間調整とトリガーモード

感度調整用ポテンショメータ
HC-SR501の基板には、2つのオレンジ色のポテンショメータが載っています。1つ目は、検知距離を調整する感度調整用です。時計回りに回すと検知距離が伸びます。最大で約7mまで反応するようになります。反時計回りに回すと検知距離は縮みます。最小で約3m程度になります。
時間調整用ポテンショメータ
2つ目は、出力がHIGHを保つ時間を調整するポテンショメータです。動きを検知してからLOWに戻るまでの時間を設定できます。目安として、最短で約3秒、最長で約300秒(5分)まで調整できます。時計回りに回すほど、保持時間は長くなります。
トリガーモードのジャンパー
基板にはジャンパーピンもあります。これは、動作モードを選ぶためのものです。HとLの2種類から選べます。Hモードでは、検知が続く限り出力のHIGHが延長され続けます。自動照明のような用途では、Hモードが選ばれることが多いです。
| 調整項目 | 役割 | 目安の範囲 |
|---|---|---|
| 感度調整(SENS) | 検知できる距離を調整 | 約3m(反時計回り)〜約7m(時計回り) |
| 時間調整(TIME) | 検知後にHIGHを保つ時間を調整 | 約3秒(反時計回り)〜約300秒(時計回り) |
| トリガーモード(ジャンパー) | 検知の継続時の挙動を選択 | H=リピート可能/L=単発 |
※ポテンショメータの配置は、モジュールによって多少異なります。基板の印字も確認してください。
03配線方法:Arduinoとの接続
3本のピンをつなぐだけ
配線はとてもシンプルです。VCCをArduinoの5Vに、GNDをArduinoのGNDにつなぎます。OUTはArduinoのデジタルピン(例:D2)につなぎます。ブレッドボードを使わなくても、ジャンパーワイヤ3本があれば配線できます。
電源電圧に関する注意
HC-SR501の内蔵レギュレータには条件があります。動作に最低4.5V程度を必要とするのです。3.3V系のボードで動かす場合は、電源電圧に注意してください。出力信号自体は3.3V程度のロジックレベルです。それでも、多くの場合Arduino UnoのデジタルピンでHIGHとして問題なく認識されます。
04基本のコード|digitalReadで動きを検知する
最小構成のコード
配線ができたら、コードを書いてみましょう。Arduino公式のdigitalRead()リファレンスの通りです。OUTピンの状態を読み取るだけの、シンプルな例です。
// HC-SR501の検知状態をシリアルモニタに表示するコード
const int pirPin = 2;
void setup() {
pinMode(pirPin, INPUT);
Serial.begin(9600);
}
void loop() {
int state = digitalRead(pirPin);
if (state == HIGH) {
Serial.println("動きを検知しました");
} else {
Serial.println("動きはありません");
}
delay(200);
}
LEDと組み合わせる
動きを検知したらLEDを点灯させる、という応用も簡単です。digitalWrite()を組み合わせるだけで実現できます。
// 動きを検知したらLEDを点灯させるコード
const int pirPin = 2;
const int ledPin = 13;
void setup() {
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
int state = digitalRead(pirPin);
digitalWrite(ledPin, state); // HIGH/LOWをそのままLEDに反映
}
05感度・時間の調整方法

実機で少しずつ調整する
感度・時間の調整は、コードでは行いません。基板上のポテンショメータを直接回して行います。小型のプラスドライバーがあると作業しやすいです。まずは感度を低めに設定します。検知してほしい範囲だけで反応するか確認しながら、少しずつ調整していきましょう。
時間調整のコツ
動作確認をする際は、コツがあります。時間調整のポテンショメータを短め(反時計回りいっぱい)に設定しておくのがおすすめです。こうすることで、1回の検知ごとにすぐ次の反応を確認できます。テストのテンポが良くなるのです。実際の運用では、用途に応じて延ばすとよいでしょう。例えば、廊下の照明であれば30秒〜1分程度に設定するといった具合です。
調整は一度に大きく回さず、少しずつ試すのがコツです。特に感度には注意が必要です。最大にすると、小さな動物や空調の風にも反応しやすくなります。実際に使う場所で、必要最小限の感度に留めることをおすすめします。
06誤検知対策|ウォームアップと設置場所の注意点
電源投入直後は不安定
1. ウォームアップタイムを確保する
HC-SR501には特徴があります。電源を入れた直後、内部のセンサーが安定するまでに時間がかかるのです。目安として30〜60秒程度のウォームアップ時間が必要です。この間は誤検知が起きやすいです。電源投入直後の反応をもって「壊れている」と判断しないよう注意してください。
誤検知を招きやすい設置環境
2. 空調の風や熱源を避ける
エアコンの風や暖房器具などは、空気の温度変化を生み出します。これがセンサーに拾われ、誤検知の原因になることがあります。センサーの向きは、こうした風や熱源を直接受けない位置に調整しましょう。
3. 直射日光や窓の外に向けない
直射日光や、窓の外を通る人・車の動きも誤検知の原因になります。HC-SR501が利用する赤外線は、一般的なガラスをほとんど透過しません。それでも、窓自体の温度変化を拾ってしまうことがあります。窓に向けての設置は避けましょう。
07よくあるトラブルと対処法
症状別の対処早見表
| 症状 | 主な原因 | 対処法 |
|---|---|---|
| 電源投入直後だけ誤反応する | ウォームアップ時間内の一時的な不安定動作 | 電源投入から1分ほど待ってから確認する(6章参照) |
| まったく反応しない | 配線ミス、または感度設定が低すぎる | VCC・OUT・GNDの配線を確認し、感度を上げてみる |
| 意図しないタイミングで頻繁に反応する | 空調の風、直射日光、感度の設定が高すぎる | 設置場所を見直し、感度を下げる(6章参照) |
| 検知後、出力がなかなかLOWに戻らない | 時間調整ポテンショメータが長めに設定されている | ポテンショメータを反時計回りに回して時間を短くする |
| じっとしている人に反応しない | HC-SR501の仕様上の制約(動きのみ検知) | 常時の在室検知が必要ならマイクロ波センサーを検討する |
原因を素早く切り分けるコツ
Kさんは玄関にHC-SR501を設置したが、誰もいないのに何度もLEDが点灯してしまった。最初は配線ミスを疑った。しかし、シリアルモニタで確認しても配線自体には問題がなかった。そこで設置場所を見直してみた。すると、センサーが窓の近くを向いていたことに気づいた。外を通る車のヘッドライトや温度変化を拾っていたのだ。センサーの向きを室内側に変えると、誤検知はほぼなくなった。
08よくある質問
基本のQ&A
応用のQ&A
関連記事・参考資料
基礎を学べる記事
- YOFUKASI LAB「Arduinoでタクトスイッチ入力|配線とコード」2026年, https://yofukasi-lab-wp.com/2026/08/27/arduino-tact-switch-input/
- YOFUKASI LAB「Arduinoに必要な工具・部品リスト」2026年, https://yofukasi-lab-wp.com/2026/08/22/arduino-tools-parts/
- YOFUKASI LAB「Arduinoのピンモード(pinMode)の基礎解説」2026年, https://yofukasi-lab-wp.com/2026/08/02/pinmode/
応用・トラブルシューティング記事
- YOFUKASI LAB「ArduinoでCdS光センサーを使う方法」2026年, https://yofukasi-lab-wp.com/2026/08/27/arduino-cds-photoresistor/
- YOFUKASI LAB「Arduinoのシリアルモニタ活用術」2026年, https://yofukasi-lab-wp.com/2026/08/22/arduino-serial-monitor-debugging/
- YOFUKASI LAB「Arduinoのコンパイルエラー一覧」2026年, https://yofukasi-lab-wp.com/2026/07/30/error/
参考資料(外部・一次情報)
- Arduino Documentation「digitalRead()」, https://docs.arduino.cc/language-reference/en/functions/digital-io/digitalRead/
- Handson Technology「HC-SR501 PIR Motion Sensor Datasheet」, http://www.handsontec.com/dataspecs/SR501%20Motion%20Sensor.pdf
※本記事は個人の学習・電子工作用途を対象にしています。実際の製品や医療機器へ組み込む場合は、電気安全・製品規格の専門家に別途ご相談ください。
コメント