umasa89のアイコン画像
umasa89 2021年05月16日作成
製作品 製作品 閲覧数 2951
umasa89 2021年05月16日作成 製作品 製作品 閲覧数 2951

手を近づけたら自動で噴射!アルコールディスペンサー!

手を近づけたら自動で噴射!アルコールディスペンサー!

はじめに

我が家にも自動のアルコールディスペンサーが欲しい!
ということで自作することにしました。

上からプッシュするタイプは大掛かりになりそうだったので
レバーを引くタイプで挑戦。

デモ画面

ここに動画が表示されます

構成図

キャプションを入力できます
超音波センサ"HC-SR04"で手の接近を検知、サーボモータ"SG-90"にてアルコールボトルのレバーを制御する構成としました。

部品

・スプレータイプの除菌スプレー
・超音波距離センサ HC-SR04
・Servomotor SG-90

上記のほか、固定用の針金やL字金具、両面テープなど

組み立て

まずは噴射口の上部に距離センサを取り付けます。
キャプションを入力できます
※L字金具に貼り付けた距離センサを両面テープで貼り付け

次に、サーボモータをレバーの反対側に取り付け、固定します。
キャプションを入力できます

レバー部とサーボモータの可動部をつないだら完成!
キャプションを入力できます
※ここの調整が案外難しかった

キャプションを入力できます
(どっかの宇宙戦争映画にこんなやついたような...)

ソースコード

利用したモジュールがいずれもobniz Starter Kitに含まれていたため、そちらを参考にしました。
→ https://obniz.com/ja/doc/guides/obniz-starter-kit/iot-by-html-and-javascript/
手が20cmの距離まで来たら噴射するように設定しています。

<html>

<head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://obniz.com/js/jquery-3.2.1.min.js"></script>
    <script src="https://unpkg.com/obniz@3.x/obniz.js"></script>
</head>

<body>
    <script>

  var obniz = new Obniz("OBNIZ_ID_HERE"); 
    obniz.onconnect = async function () { 

    const hcsr04 = obniz.wired("HC-SR04", {gnd:8, echo:9, trigger:10, vcc:11});
  var servo = obniz.wired("ServoMotor", { gnd: 0, vcc: 1, signal: 2 });
  servo.angle(90.0);

    obniz.onloop = async function(){
      let avg = 0;
      let count = 0;
      for (let i=0; i<3; i++) { 
        const val = await hcsr04.measureWait();
        if (val) {
          count++;
          avg += val;
        }
      }
      if (count > 1) {
        avg /= count;
      }
      console.log(avg);
            if (avg < 200){
                servo.angle(0);
            }else{
                servo.angle(90);
      await obniz.wait(1000);
            }
    }
  };
    </script>
</body>

</html>

さいごに

当方、プログラム初心者です。
プログラミングに挑戦してみようと思っていた際にコンテストのことを知り、ブロックプログラミングであれば自分にもできるのではないかということで参加させていただきました。
ブロックプログラミングの率直な感想としては、直感的に操作できる点は良かったが、もう少し柔軟性が欲しかった、というところです。勉強不足の可能性も大いにありますが、当初予定していたモジュールがブロックプログラミングで使いこなせず、予定を変更しての応募となりました。(規約に違反していたらすみません。。)
ちなみに使用を予定していたモジュールはロードセルです。https://akizukidenshi.com/catalog/g/gP-13042/

とはいえおかげさまで私のような初心者でも楽しくプログラミングに触れることができました。
企画、準備、対応してくださったみなさまにこの場を借りてお礼申し上げます。ありがとうございました。

引き続き下記のようなことがやりたかったのですが現時点では達成できず、継続して勉強を続けていこうと思います。

・使用回数のカウント、記録
・重量センサを接続してセンシング、なくなったらアラート

おまけ

これ、手の消毒用じゃなかったのですね。
みなさま、ご注意ください。。。
キャプションを入力できます

  • umasa89 さんが 2021/05/16 に 編集 をしました。 (メッセージ: 初版)
ログインしてコメントを投稿する