miyakeshiのアイコン画像
miyakeshi 2021年05月16日作成 (2021年05月16日更新)
製作品 製作品 閲覧数 895
miyakeshi 2021年05月16日作成 (2021年05月16日更新) 製作品 製作品 閲覧数 895

コーヒーメーカの水位を計測して出来上がりをお知らせ

コーヒーメーカの水位を計測して出来上がりをお知らせ

概要

コーヒーメーカの水位を計測して出来上がりをお知らせするIoTです。
在宅ワークが多くなり、コーヒーメーカを使う機会が増えたので作りました。
コーヒーメーカでコーヒーを作っていたことを忘れて、数時間後に気が付くということありませんか?
本IoTを使用することで、

  • コーヒーが出来る迄の目安時間が分かる
  • コーヒーメーカの近くにいなくても、コーヒーが出来たことが分かる
  • POPが飛び出すことで、コーヒーが出来たことに気が付く

を実現し、コーヒーを作ったのに忘れることを防ぎます。

デモ動画

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

コーヒーが出来る迄の目安時間が分かる

キャプションを入力できます
obnizが残り時間を表示。
水量を計測し出来上がりまでの時間を計算します。

キャプションを入力できます
PC上でも残り時間を確認できます。

コーヒーメーカの近くにいなくても、コーヒーが出来たことが分かる

キャプションを入力できます
PCの画面でコーヒーが出来たことをお知らせします。
出来立てコーヒーを逃しません。

POPが飛び出すことで、コーヒーが出来たことに気が付く

キャプションを入力できます
コーヒーが出来るとPOPが立つので、視覚的に気が付きます。

以上から、
このIoTを導入することでコーヒーを作ったのに忘れることは無くなるでしょう!

部品

部品名 備考
Obniz Board 1Y -
水位センサー(Grove_WaterLevelSensor) -
GROVE - 4ピン - ジャンパオスケーブル 水位センサーとObniz接続用
サーボモーター SG90 他のサーボでも代用可
ジャンパーワイヤ ELEGOO 120pcs多色デュポンワイヤーを購入
コーヒーメーカー象印 EC-TC40 引き出物で入手
本体治具(段ボール) -
カーボン調カッティングシート 段ボールがカッコ悪かったので

設計図

配線図

キャプションを入力できます

サーボモーターSG90がメスのため、オス-オスのジャンパーワイヤーを使えば楽に配線できます。
Grove_WaterLevelSensorに付属しているコネクタは、コネクタ-コネクタの為使い難い。
コネクタ-オスのGROVE - 4ピン - ジャンパオスケーブルを購入すると配線が楽になります。

本体治具設計

キャプションを入力できます
水位計はコーヒーメーカの水入れの中に入れています。
電気部分はテープを巻いて防水処理
固定は防水両面テープで固定しています。

キャプションを入力できます

キャプションを入力できます
サーボモーターは段ボールで固定しています。
特に外れそうな気配はありません。

コード

ソースコード

<html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" /> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script src="https://unpkg.com/obniz@3.x/obniz.js" crossorigin="anonymous" ></script> <style> #button1 { padding: 50px; } </style> </head> <body> <div id="obniz-debug"></div> <div class="wrap"> <div class="print"> <h3 class="text-left" id="waterlevel">[使用量]</h3> </div> <button id="button1">取りました</button> <script> var obniz = new Obniz("OBNIZ_ID_HERE"); var button; let first=0; obniz.onconnect = async function() { obniz.display.clear(); //モータ設定 パルス幅調整 var servo = obniz.wired("ServoMotor", {gnd:0,vcc:1,signal:2}); servo.range = { min: 0.8, max: 2.4 } //以下https://www.1ft-seabass.jp/memo/2020/09/04/grove-connect-grove-water-level-sensor/ を参考 // 黒:0番 obniz.io4.output(false) // 赤:1番 obniz.io5.output(true) obniz.i2c0.onerror = function(err) { console.error(err) } // 接続が整うまでに待ち時間が必要 await obniz.wait(100); // I2C接続 obniz.i2c0.start({mode:"master", sda:6, scl:7, clock:400000 }); // https://wiki.seeedstudio.com/Grove-Water-Level-Sensor/#software を参考 let low_data = []; let high_data = []; let THRESHOLD = 100; let ATTINY1_HIGH_ADDR = 0x78; let ATTINY2_LOW_ADDR = 0x77; while(true){ let touch_val = 0; let trig_section = 0; low_count = 0; high_count = 0; high_data = await obniz.i2c0.readWait(ATTINY1_HIGH_ADDR, 12); low_data = await obniz.i2c0.readWait(ATTINY2_LOW_ADDR, 8); let i; for (i = 0 ; i < 8; i++) { if (low_data[i] > THRESHOLD) { touch_val |= 1 << i; } } for (i = 0 ; i < 12; i++) { if (high_data[i] > THRESHOLD) { touch_val |= 1 << (8 + i); } } while (touch_val & 0x01) { trig_section++; touch_val >>= 1; } //水位から残り時間を計算 let water_level_sec = trig_section * 15; // HTMLに出力 if((water_level_sec<5)&&(first==1)){ $("#waterlevel").html("コーヒーが出来ました " ); //看板を起こす 角度要調整 servo.angle(80.0); $("#button1").on("click",function(){ //看板を倒す 角度要調整 servo.angle(180.0); //終了フラグ first=0; }); } else{ if((water_level_sec<5)&&(first==0)){ $("#waterlevel").html("水を入れてください " ); }else{ $("#waterlevel").html("[残り秒数] " + water_level_sec + "秒"); //看板を倒す 角度要調整 servo.angle(180); //開始フラグ first=1; } } // obnizLEDに出力 obniz.display.clear(); obniz.display.font(null,16) obniz.display.print("[残り時間]"); obniz.display.font(null,30) obniz.display.print(water_level_sec + "秒"); await obniz.wait(1000); } }; </script> </body> </html>

水位計が上手く動かず大苦戦。
下記サイト様のプログラムを参考にしたところ無事に動きました。本当に助かりました。
https://www.1ft-seabass.jp/memo/2020/09/04/grove-connect-grove-water-level-sensor/

所感

動作確認で、LEDに抵抗が必要と知らずにLEDを燃やしたときは本当に焦りました。
電子工作ド素人の私でもなんとか形になったので、obnizって本当に簡単だと思いました。
勝手が分かったのでもっと挑戦してみます!

ログインしてコメントを投稿する