micro:bitのオプションパーツを使って、人感センサーを作ってみようと思います。
センサーの前を横切ると音楽が鳴るようにします。
このセンサーは身の回りでもいろいろなところに使われています。
例えば、自動ドアのセンサー、コンビニ入り口でお客さんが来たら音楽が鳴る仕組み、夜人が通ると明るくなる防犯照明などです。
micro:bitを使うとをとても簡単に作れて、応用が利く部品になります。
人感センサー
人感センサーを作ってみます。
今回は、micor:bitのオプションパーツ「超音波センサー」を使います。
その他、補助で「拡張用コネクター(GROVEシールド)」も使います。
これらの部品は、「マイクロビット アドバンスセット V2対応版」に含まれています。
基本的な勉強をするのにいい部品がそろったキットなのでお勧めです。
micro:bitの準備
今回使う備品はこれです。
①micor:bit本体
②超音波センサー
③超音波センサーをつなぐケーブル
④拡張用コネクター(GROVEシールド)
⑤USBケーブル(パソコンとつなぐ用)
これをこのように組み立てておいてください。
MakeCode for micro:bit
アドバンスセットを使えるようにする
超音波センサーなどの部品を使えるようにするためには拡張機能を追加する必要があります。
拡張機能をクリックします。
拡張機能画面で、
検索欄で「Grove」と入力して検索するか、
下のパネルから「Grove」を探して、クリックしてください。
Groveという部品が使えるようになります。
プログラム
プログラムの使い方は、
Aボタンが押されたとき、人が居ない場合の距離を測定します。
Bボタンが押されたら、人がセンサーの前を横切るのを監視開始します。
もう少し細かく見ていきましょう
Aボタンが押されたとき
「Grove – 超音波距離センサー」距離(cm)を読み取る」部品を使います。
超音波センサーが発信する超音波が障害物にぶつかるまでの距離を測定します。
その距離を「初期距離」変数に入れておきます。
この後、「初期距離」と違う値になったら人が横切ったと判断するようにします。
Bボタンが押されたとき
Bボタンが押されたら監視を始めます。
今回のプログラムは1回感知したらプログラムを終了するようにしています。
一般的な人感センサーでは、感知した後、一定の時間を空けて感知を再開します。
少し処理が複雑になるので、今回は簡単にしています。
変数「感知済み」を用意して、「偽」の値を入れておきます。
感知したら「真」を入れて使います。
ループ処理を使って、感知していない間は距離を測定し続けるプログラムを作っていきます。
感知したら「感知済み」に「真」を入れる処理をするので、この繰り返し処理が実行されなくなり、プログラムが終了します。
計測を0.5秒間隔で行う処理にしています。
0.5秒休んで、この後の距離測定処理を行います。
本当はこの処理は必要ありません。
一時停止せずにループを繰り返しても構いません。
消費電力を少なくするために入れた処理です。
この処理を行うデメリットもあります。
0.5秒以下でセンサーの前を通過されると感知できません。
早く動くものを感知したい場合は、もっと短い時間にしてください。
センターの前を横切った物の距離を測ります。
センサーを横切った物が無ければ変数「初期距離」と同じ値が「距離」に入ってくるはずです。
センサーの前を何かが横切れば変数「初期距離」より小さな値が入ってきます。
変数「距離」と変数「初期距離」に差がある場合、感知したと判断します。
センサーはミリ単位で差を検知することができます。
ただ、誤差があるのでそのまま比較すると、誤検知することがあります。
誤検知する場合は、感度を落とすとよいです。
例えば、1センチ未満の差は検知させないようにするためには「少数点以下切り捨て」をして比較するといいです。
このプログラムでは50で割って、小数点以下り捨てをしてます。
これは50センチ以下の誤差を感知しないようにしています。
人が横切ったかを感知する目的なので50センチ程度の差を感知できれば十分です。
センサーが感知したら変数「感知済み」を「真」にして、繰り返し処理を終了させます。
感知したことを知らせるために音楽を鳴らします。
コメント