ArduinoでHC-SR501人感センサーを使う方法|配線・コード・感度調整を解説

プログラミング・電子工作






Arduinoで人感センサーHC-SR501入門







実装 / Arduino

Arduinoで人感センサーHC-SR501入門|配線・コード・感度調整を徹底解説

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

YOFUKASI LAB編集部
公開日:2026年8月27日
読了目安:13分

執筆・実機検証:YOFUKASI LAB運営者

理学療法士/Arduino・Pythonを使った医療機器制作・学会発表経験あり

Chapter 01 / Basics

01HC-SR501とは|人感センサーの仕組み

HC-SR501人感センサーが赤外線の変化を検知しHIGH・LOWを出力する仕組み

何を検知しているのか

HC-SR501は、PIR(パッシブ赤外線)方式の人感センサーです。人を含む温かい物体は、赤外線を放射しています。このセンサーは、視野内の赤外線量が変化した瞬間を検知します。つまり、正確には「人」を検知しているのではありません。「赤外線の変化」、いわば「動き」を検知しているのです。この仕組みには注意点があります。対象が完全に静止していると、検知されなくなるのです。

3本のピンの役割

HC-SR501には、VCC・OUT・GNDという3本のピンがあります。VCCとGNDは電源用です。OUTは検知結果を出力するピンです。動きを検知するとHIGHに、検知していないときはLOWになります。この単純な出力方式には利点があります。タクトスイッチと同じような感覚でコードを書けるのです。

編集部想定シナリオ

玄関の自動照明を作りたいNさんは、HC-SR501を購入した。タクトスイッチの読み取りを学んでいたNさんは、HIGH・LOWで状態を判定する考え方にすぐ馴染めた。「押されたか」が「動きがあったか」に変わっただけだ。コードの骨格はよく似ています。既存の知識を新しい部品に応用できた、良い例です。



Chapter 02 / Concept

02基礎知識|感度・時間調整とトリガーモード

HC-SR501の感度SENS・時間TIME・トリガーモードの調整方法

感度調整用ポテンショメータ

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=単発

※ポテンショメータの配置は、モジュールによって多少異なります。基板の印字も確認してください。

Chapter 03 / Wiring

03配線方法:Arduinoとの接続

3本のピンをつなぐだけ

配線はとてもシンプルです。VCCをArduinoの5Vに、GNDをArduinoのGNDにつなぎます。OUTはArduinoのデジタルピン(例:D2)につなぎます。ブレッドボードを使わなくても、ジャンパーワイヤ3本があれば配線できます。

[画像挿入位置]Arduino UnoとHC-SR501の配線図(VCC・OUT・GNDの接続関係がわかるもの)

電源電圧に関する注意

HC-SR501の内蔵レギュレータには条件があります。動作に最低4.5V程度を必要とするのです。3.3V系のボードで動かす場合は、電源電圧に注意してください。出力信号自体は3.3V程度のロジックレベルです。それでも、多くの場合Arduino UnoのデジタルピンでHIGHとして問題なく認識されます。



Chapter 04 / Code

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に反映
}
Chapter 05 / Tuning

05感度・時間の調整方法

HC-SR501のウォームアップ時間と設置場所による誤検知対策

実機で少しずつ調整する

感度・時間の調整は、コードでは行いません。基板上のポテンショメータを直接回して行います。小型のプラスドライバーがあると作業しやすいです。まずは感度を低めに設定します。検知してほしい範囲だけで反応するか確認しながら、少しずつ調整していきましょう。

時間調整のコツ

動作確認をする際は、コツがあります。時間調整のポテンショメータを短め(反時計回りいっぱい)に設定しておくのがおすすめです。こうすることで、1回の検知ごとにすぐ次の反応を確認できます。テストのテンポが良くなるのです。実際の運用では、用途に応じて延ばすとよいでしょう。例えば、廊下の照明であれば30秒〜1分程度に設定するといった具合です。

編集部見解

調整は一度に大きく回さず、少しずつ試すのがコツです。特に感度には注意が必要です。最大にすると、小さな動物や空調の風にも反応しやすくなります。実際に使う場所で、必要最小限の感度に留めることをおすすめします。



Chapter 06 / False Trigger

06誤検知対策|ウォームアップと設置場所の注意点

電源投入直後は不安定

!

1. ウォームアップタイムを確保する

HC-SR501には特徴があります。電源を入れた直後、内部のセンサーが安定するまでに時間がかかるのです。目安として30〜60秒程度のウォームアップ時間が必要です。この間は誤検知が起きやすいです。電源投入直後の反応をもって「壊れている」と判断しないよう注意してください。

誤検知を招きやすい設置環境

!

2. 空調の風や熱源を避ける

エアコンの風や暖房器具などは、空気の温度変化を生み出します。これがセンサーに拾われ、誤検知の原因になることがあります。センサーの向きは、こうした風や熱源を直接受けない位置に調整しましょう。

!

3. 直射日光や窓の外に向けない

直射日光や、窓の外を通る人・車の動きも誤検知の原因になります。HC-SR501が利用する赤外線は、一般的なガラスをほとんど透過しません。それでも、窓自体の温度変化を拾ってしまうことがあります。窓に向けての設置は避けましょう。



Chapter 07 / Troubleshooting

07よくあるトラブルと対処法

症状別の対処早見表

症状 主な原因 対処法
電源投入直後だけ誤反応する ウォームアップ時間内の一時的な不安定動作 電源投入から1分ほど待ってから確認する(6章参照)
まったく反応しない 配線ミス、または感度設定が低すぎる VCC・OUT・GNDの配線を確認し、感度を上げてみる
意図しないタイミングで頻繁に反応する 空調の風、直射日光、感度の設定が高すぎる 設置場所を見直し、感度を下げる(6章参照)
検知後、出力がなかなかLOWに戻らない 時間調整ポテンショメータが長めに設定されている ポテンショメータを反時計回りに回して時間を短くする
じっとしている人に反応しない HC-SR501の仕様上の制約(動きのみ検知) 常時の在室検知が必要ならマイクロ波センサーを検討する

原因を素早く切り分けるコツ

編集部想定シナリオ

Kさんは玄関にHC-SR501を設置したが、誰もいないのに何度もLEDが点灯してしまった。最初は配線ミスを疑った。しかし、シリアルモニタで確認しても配線自体には問題がなかった。そこで設置場所を見直してみた。すると、センサーが窓の近くを向いていたことに気づいた。外を通る車のヘッドライトや温度変化を拾っていたのだ。センサーの向きを室内側に変えると、誤検知はほぼなくなった。

Chapter 08 / FAQ

08よくある質問

基本のQ&A

Q.電源を入れてすぐに誤反応します。故障でしょうか?
A.故障ではなく、多くの場合は正常な仕様です。HC-SR501は電源投入直後の30〜60秒程度、内部センサーが安定するまでのウォームアップ時間が必要です。この間は誤検知が起きやすいため、電源を入れてから1分ほど待ってから動作確認を始めてください。

Q.感度・時間調整のポテンショメータは、どちらがどちらですか?
A.基板の印字を確認するのが確実です。一般的には「SENS」や「感度」と書かれた側が検知距離(約3〜7m)を調整するポテンショメータです。「TIME」や「Delay」と書かれた側が、検知後に出力がHIGHを保つ時間(約3秒〜300秒)を調整するポテンショメータです。

応用のQ&A

Q.人が静止していると検知されなくなるのはなぜですか?
A.HC-SR501は「動き」を検知するセンサーだからです。赤外線の変化を捉える仕組みのため、対象が完全に静止していると、変化が起きず検知されなくなります。常時の在室検知が必要な場合は、マイクロ波センサーなど別方式のセンサーを検討してください。

Q.ガラス越しに人の動きを検知できますか?
A.基本的には検知できません。HC-SR501が利用する赤外線は、一般的なガラスをほとんど透過しないためです。窓の外の動きに反応してしまう場合は、センサーが窓に向かないよう設置場所を見直すか、感度を下げて対応してください。

関連記事・参考資料

基礎を学べる記事

  1. YOFUKASI LAB「Arduinoでタクトスイッチ入力|配線とコード」2026年, https://yofukasi-lab-wp.com/2026/08/27/arduino-tact-switch-input/
  2. YOFUKASI LAB「Arduinoに必要な工具・部品リスト」2026年, https://yofukasi-lab-wp.com/2026/08/22/arduino-tools-parts/
  3. YOFUKASI LAB「Arduinoのピンモード(pinMode)の基礎解説」2026年, https://yofukasi-lab-wp.com/2026/08/02/pinmode/

応用・トラブルシューティング記事

  1. YOFUKASI LAB「ArduinoでCdS光センサーを使う方法」2026年, https://yofukasi-lab-wp.com/2026/08/27/arduino-cds-photoresistor/
  2. YOFUKASI LAB「Arduinoのシリアルモニタ活用術」2026年, https://yofukasi-lab-wp.com/2026/08/22/arduino-serial-monitor-debugging/
  3. YOFUKASI LAB「Arduinoのコンパイルエラー一覧」2026年, https://yofukasi-lab-wp.com/2026/07/30/error/

参考資料(外部・一次情報)

  1. Arduino Documentation「digitalRead()」, https://docs.arduino.cc/language-reference/en/functions/digital-io/digitalRead/
  2. Handson Technology「HC-SR501 PIR Motion Sensor Datasheet」, http://www.handsontec.com/dataspecs/SR501%20Motion%20Sensor.pdf

※本記事は個人の学習・電子工作用途を対象にしています。実際の製品や医療機器へ組み込む場合は、電気安全・製品規格の専門家に別途ご相談ください。


関連記事

特集記事

コメント

この記事へのコメントはありません。

TOP
CLOSE