編集履歴一覧に戻る
kyuki3rainのアイコン画像

kyuki3rain が 2021年05月16日20時44分11秒 に編集

コメント無し

本文の変更

# はじめに 電気工作初心者ですが、obnizの発想と仕組みに感銘を受けコンテストに応募しました。 出来のいいものではないですが紹介させていただきます。 # 作ったもの ドアの開閉を検知し、開きっぱなしのときに通知する仕組みを作りました。 ドアが開くとブザーの音がなり、開きっぱなしだと音がなり続けます。 ドアが閉まるとその音より低い音がなり、それ以降は音が鳴らなくなります。 開放したままにしたい場合は、ボタンを押すことで一時的に音を鳴らさないモードにすることができます。 一度閉じてもう一度開くともとに戻ります。

+

@[youtube](https://youtu.be/BeXeyKxinyE)

# 動機 我が家には犬がいるんですが、彼女は自室が少しでも開いていると鼻で突いてドアを開けて中に入ろうとします。 ドアは勢い良く閉めると完全には閉まらず少し開いたままになることが多く、そのせいでよく犬が部屋に入ってしまっていました。 自室にはPCが何台もあり犬の毛が少し怖い環境になっているので、これを防ぐために作成しました。 特にドアが完全には締まりきっていない微妙な時を検知したいというのがあり、ドアの傾きや正面からのセンサーではなく横からのセンシングを導入しました。 # 構成 obniz board 1Y×1 超音波距離センサー×1 通知用ブザー×1 # プログラム modeという変数で、 ①ドアがしまっている状態 ②ドアが開いている状態 ③ブザー停止モード(ドアが開いている状態からのみ遷移) の3状態を管理しています。 距離センサーが提示する距離の値を5つで1まとまりとして、一番大きい値、一番小さい値をとりのぞいた平均値を現在の距離としています。 これが状態①のときの値として考えられる範囲に含まれているかどうかをチェックしています。 チェックのたびに、範囲内をカウントする変数close_count、範囲外をカウントする変数open_countを変化させ、それぞれ10回を超えるとリセットされるようになっています。 状態遷移は基本的に下のような形になっています。 状態①のとき、open_countが5になったら状態②に移行します。 状態②のとき、obniz上部のスイッチが押されたら状態③に移行します。 状態②、③のとき、close_countが3になったら状態①に移行します。 ブザーが作動するのは次の2パターンになります。 状態②で、close_countが5になった場合(状態②の間、5回チェックするたびに音がなります) 状態②で、open_countが3になった場合(ちょうど状態①に遷移するタイミングと同時に鳴ります) これにより、ドアが少しでも開いているとぶざーを一定頻度で鳴らし続け、お知らせしてくれます。 # 詰まった点 ドアの開閉具合によって、得られる距離センサーの値が大きくばらつくのが難点でした。 ①ドアがしまっている場合:845mm程度 ②まだドアの側面に反射する場合:非常に小さい(20mm程度) ③ドアの開き具合が10°〜30°:しまっている場合より少し小さい(830mm程度) ④ドアの開き具合が30°〜45°:とても大きい(1000mm以上) ⑤ドアの開き具合が45°〜50°:しまっている場合とほぼ同じ(850mm程度) ⑥ドアの秋具合が50°以上:ドアの正面の距離を正確に反映(600~750mm程度) ③〜⑤で値がおかしくなるのは、反射して帰ってくる超音波がすくなくなるためだと考えられます。 これを見るとわかるように、①と⑤の差が誤差よりも小さく、判断をつけるのが難しい状態でした。 そこで、閉じている状態のときの距離が②〜⑥のどれにも該当しない300mm程度になるよう、ドアの側面に衝立を設けることで解決しました。 とても不格好なので普段使いするなら別の手段を考えたいところですが、試作なので動けばいいと思うことにします。