はじめに
我が家にも自動のアルコールディスペンサーが欲しい!
ということで自作することにしました。
上からプッシュするタイプは大掛かりになりそうだったので
レバーを引くタイプで挑戦。
デモ画面
構成図
超音波センサ"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
に
編集
をしました。
(メッセージ: 初版)
ログインしてコメントを投稿する