miyakeshi が 2021年05月16日15時05分36秒 に編集
コメント無し
記事種類の変更
製作品
本文の変更
# 概要 コーヒーメーカの水位を計測して出来上がりをお知らせするIoTです。 在宅ワークが多くなり、コーヒーメーカを使う機会が増えたので作りました。 コーヒーメーカでコーヒーを作っていたことを忘れて、数時間後に気が付くということありませんか? 本IoTを使用することで、 - **コーヒーが出来る迄の目安時間が分かる** - **コーヒーメーカの近くにいなくても、コーヒーが出来たことが分かる** - **POPが飛び出すことで、コーヒーが出来たことに気が付く** を実現し、コーヒーを作ったのに忘れることを防ぎます。 # デモ動画 @[youtube](https://youtu.be/puH5_nde2Ag) ## コーヒーが出来る迄の目安時間が分かる ![キャプションを入力できます](https://camo.elchika.com/628027d66ebd65c3c753e6bbe6357bb5ef199fd6/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30353037393937322d663031372d346531312d616533382d3063363839373434326163612f65383062383863302d346562342d346262632d613230382d366363383563653437396363/) obnizが残り時間を表示。 水量を計測し出来上がりまでの時間を計算します。 ![キャプションを入力できます](https://camo.elchika.com/5805ce0cf7d7a90f1f8e66b6550446cddc057323/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30353037393937322d663031372d346531312d616533382d3063363839373434326163612f38343234316235632d663435332d343433312d613963622d316262363739663338366332/) PC上でも残り時間を確認できます。 ## コーヒーメーカの近くにいなくても、コーヒーが出来たことが分かる ![キャプションを入力できます](https://camo.elchika.com/49b464a06565a57e5f02de1f44acc05f1c4da898/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30353037393937322d663031372d346531312d616533382d3063363839373434326163612f33396261393935632d616638372d343165622d613162612d313936663533383663303963/) PCの画面でコーヒーが出来たことをお知らせします。 出来立てコーヒーを逃しません。 ## POPが飛び出すことで、コーヒーが出来たことに気が付く ![キャプションを入力できます](https://camo.elchika.com/984efa706542bea40ccf5dd45f49bcccf0788fc5/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30353037393937322d663031372d346531312d616533382d3063363839373434326163612f61303736306561322d613834662d343863392d383737632d346233336238356266303038/) コーヒーが出来るとPOPが立つので、視覚的に気が付きます。 以上から、 **このIoTを導入することでコーヒーを作ったのに忘れることは無くなるでしょう!** # 部品 | 部品名 | 備考 | |:---:|:---:| | Obniz Board 1Y | - | | 水位センサー(Grove_WaterLevelSensor) | - | | GROVE - 4ピン - ジャンパオスケーブル | 水位センサーとObniz接続用 | | サーボモーター SG90 | 他のサーボでも代用可 | | ジャンパーワイヤ | ELEGOO 120pcs多色デュポンワイヤーを購入 | | コーヒーメーカー象印 EC-TC40 | 引き出物で入手 | |本体治具(段ボール)| - | |カーボン調カッティングシート| 段ボールがカッコ悪かったので| # 設計図 ## 配線図 ![キャプションを入力できます](https://camo.elchika.com/506cb5bf803b9fb167decf8eb7579598aedbc479/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30353037393937322d663031372d346531312d616533382d3063363839373434326163612f33336562396137632d656631392d346461312d626537642d373830623433336165333165/) サーボモーターSG90がメスのため、オス-オスのジャンパーワイヤーを使えば楽に配線できます。 Grove_WaterLevelSensorに付属しているコネクタは、コネクタ-コネクタの為使い難い。 コネクタ-オスのGROVE - 4ピン - ジャンパオスケーブルを購入すると配線が楽になります。 ## 本体治具設計 ![キャプションを入力できます](https://camo.elchika.com/29a0649ea0865125f8bcb7f7d6c86bbb2a72c885/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30353037393937322d663031372d346531312d616533382d3063363839373434326163612f32373035356533332d393139662d343133622d396461302d366134386565643765363966/) 水位計はコーヒーメーカの水入れの中に入れています。 電気部分はテープを巻いて防水処理 固定は防水両面テープで固定しています。 ![キャプションを入力できます](https://camo.elchika.com/679d7a2809e5fffb294dbae76d3b8b8fce6773e0/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30353037393937322d663031372d346531312d616533382d3063363839373434326163612f39393731346333342d306361342d343535322d393464632d383536653536613030623638/) ![キャプションを入力できます](https://camo.elchika.com/500f4767fbf489ea4fb17471aa9660b727b1f6b3/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f30353037393937322d663031372d346531312d616533382d3063363839373434326163612f65653235376430612d386464632d346136652d393435642d653764646433313363363862/) サーボモーターは段ボールで固定しています。 特に外れそうな気配はありません。 # コード ```html:ソースコード <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を燃やしたときは本当に焦りました。
電子工作 ・・・ 初めて プログラム ・・・ ド素人 の私が1週間位でここまで出来たので、obnizって本当に簡単だと思いました。
電子工作ド素人の私でもなんとか形になったので、obnizって本当に簡単だと思いました。
勝手が分かったのでもっと挑戦してみます!