【Arduino】モーションセンサ(HC-SR501)を使う

it

動いたものに反応するモーションセンサーを使ってみます。

モーションセンサ(HC-SR501)

簡単紹介

動きや変化を検出すると信号が出力される。

センサーの検出時間と距離はポテンショにより調整できます。
手元のセンサーで確認した時間と距離の結果は以下です。
個体差や確認方法によりばらつきもあるので参考の結果です。

電子部品通販で1個500円前後、Ali Expressでは350円(送料込み)くらいで手に入る。
そのほか、ダイソーなど300円商品に使われていることもあるので分解して入手できる。

◆関連記事

ピン配置

外観

使ってみた


◆使ってみた

電源、GNDと信号線の3本で、動きを検出するとしばらく信号を出力する簡単なものです。
マイコンを使わなくても簡単な部品と回路でガジェットを作ることができます。

センサーにバッテリーとLEDを付けた簡単な防犯照明です。

動画では期待通りLEDの点灯が確認できています。
何回か繰り返していると、時々動きの検出をしないこともありました。


ピンヘッダーが取り付けられていますが、両サイドにコンデンサがついているのでブレッドボードに挿して使用することができない。
ジャンパワイヤーのメスが必要です。


◆分解

カバーを外しました。
樹脂の軽い圧入なので引っ張れば外せます。
シルクにより端子名が書かれていますが、カバーで隠れて見えません。
中央にセンサーが実装されています。


スペック上ではカバーをした正常状態での検出範囲は120°となっていますが、おおむね90°弱ほど。
カバーを外した状態でもセンサーの検出はしますが、検出範囲は目測で10°強程度でした。
期待値ほどではないがカバーも仕事をしている模様です。

◆信号

動きを検出すると3Vの信号が出力されました。
出力される時間はポテンショで設定できます。

信号の出力が終わってから次の検出をするまでに5秒間は動作検出をしない時間があるようです。

まとめ

GOOD

・簡単なLEDとバッテリーの組み合わせで防犯照明を作れる。
・信号がシンプルなのでマイコンからも扱いやすい

BAD

・センサーの検出範囲や感度はイマイチで期待通りの検出ができないことがある
・ポテンショの分解能が粗いので細かい設定がシビア

準備

使うもの

画像名称、型番用途
モーションセンサ
HC-SR501
対象物の動きの変化を検知します
Raspberry Pi Picoモーションセンサの信号を読み取ります。
記事は後日掲載します
高輝度LEDモジュール
HW-269
強力に光ってもらいます
ブレッドボード配線します
LEDセンサー検出時に光ってもらいます
抵抗LEDの保護抵抗です。
使用するLEDに合わせて選定してください。
今回200Ωを使用します
ジャンパワイヤ数本配線します

Arduino環境

Arduino環境でRaspberryPi Picoを使用します。
Arduino環境の準備はこちらの記事で紹介しています。

ボードライブラリ

今回Raspberry Pi Picoを使用します。
Arduino IDEのボードマネージャからRP2040用のライブラリのインストールとボードの選択をします。
ボードライブラリには「Raspberry Pi Pico/RP2040 by Earle F. Philhower, III」を使用します。
Generic RP2040またはRaspberry Pi Picoを使用します。

追加のボードマネージャのURLhttps://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
検索RP2040
ボードライブラリRaspberry Pi RP2040 Boards(x.x.x)※
選択するボードRaspberry Pi RP2040 Boards(x.x.x) > Raspberry Pi Pico
※動作確認はバージョン 4.1.1です

モジュールライブラリ

モジュールライブラリのインストールは不要です。

使い方

簡単防犯照明

説明

モーションセンサーが検知するとLEDが点灯します。
マイコンを使用しない簡単な配線で作成できます。
屋内では廊下や階段に設置することで、夜間の安心照明になります。

LEDの点灯時間はポテンショメータで調整します。
このサンプルの電源はUSBから5Vを供給していますが、モバイルバッテリーに置き換えることで設置場所の自由度があがります。

配線

結果

今回信号の出力時間は最小に設定しています。
モバイルバッテリーから電源供給したりLEDを高輝度に変更すると防犯照明の出来上がりです。

マイコンを使った防犯照明

説明

モーションセンサーが検知するとLEDを点滅させます。

モーションセンサーの信号をマイコン(Raspberry Pi Pico)で読み取り、マイコンでLEDを点滅させます。
LEDには高輝度LED(HW-269)を使いました。
モーションセンサーからの信号出力中は1秒周期(点灯0.5秒、消灯0.5秒)の点滅を行い、信号停止後の5秒程度は検出できないようなので、その5秒間も引き続き点滅させています。

配線

スケッチ

#define HCSR501_PIN     (0)
#define BLINKLED_PIN    (1)
#define BLINK_MS        (500)

void setup()
{
  pinMode(HCSR501_PIN, INPUT);
  pinMode(BLINKLED_PIN,OUTPUT);
}

void loop()
{
  if(digitalRead(HCSR501_PIN) == HIGH)
  {
    //信号検出中は点滅する
    while(digitalRead(HCSR501_PIN) == HIGH)
    {
      digitalWrite(BLINKLED_PIN, HIGH);
      delay(BLINK_MS);
      digitalWrite(BLINKLED_PIN, LOW);
      delay(BLINK_MS);
    }

    //信号の検出が終わった後、1回1秒の点滅を5回繰り返し5秒経過させる
    for(int16_t i = 0; i < 5; i ++)
    {
      digitalWrite(BLINKLED_PIN, HIGH);
      delay(BLINK_MS);
      digitalWrite(BLINKLED_PIN, LOW);
      delay(BLINK_MS);
    }
  }
}

結果
手を近づけると点滅動作をしました。
注意:再生するとフラッシュを伴う動画が再生されます。

コメント

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