46yomuのアイコン画像
46yomu 2021年05月11日作成 (2021年05月13日更新)
製作品 製作品 閲覧数 1104
46yomu 2021年05月11日作成 (2021年05月13日更新) 製作品 製作品 閲覧数 1104

冷蔵庫の食材在庫量の定期通知装置

冷蔵庫の食材在庫量の定期通知装置

デモ動画

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

概要

冷蔵庫の扉に冷蔵庫の中にあるもの(在庫)を表示させ、それを毎日決まった時間にメールで送信し、食材の在庫量を通知する装置

作成した理由

職場の近くに、安いスーパーがあるので、何か買うものがあるのかを毎回妻にLINEで聞いている。そのため、外出していても、冷蔵庫の食材の在庫量が定期的に知ることができれば、何を買わないといけないかを覚えたり、聞く必要がなくなる。

また、簡単に使えるように、冷蔵庫にある食材の量をトグルスイッチで入力できるようにした(料理中に食材が切れたら、その時、その場で入力できる!)。そして、フルカラーLEDで表示することで、冷蔵庫の扉を開けずとも在庫量が分かるようにした。

装置の動き

①あらかじめ、よく食べる物(買う頻度が高いもの)のリスト(卵、ヨーグルト、葉物野菜、根菜、豆腐)を挙げる。

②トグルスイッチで入力すると、LEDが青色、緑色、赤色とLEDの色が切り替わり、青色だと冷蔵庫にまだある、緑色だともう少し、赤色だと無いことを意味し、冷蔵庫を開けずとも、中にあるものの状況が分かるようにする。

③毎日16:15に、食材在庫量をメールで、通知する。

部品表

部品名 型番 メーカー名 個数
obniz Board Y1 obniz009 obniz 1
フルカラーLED NESM026DT-RGB-R-T 日亜化学工業 4
トグルスイッチ 2UD3-T1-A1-M2-R-E Linkman 4
抵抗330Ω - - 16
抵抗220Ω - - 4
ユニバーサル基板 ICB-293V サンハヤト 1

設計図

回路図

※トグルスイッチはON(1-3)-OFF(3)-ON(2-3)の接続となります。
※obnizの入力1~4の電圧は、RGBのダイオードのVfの電圧が異なることにより、
3色の点灯状態をAD変換で判別します。

電子回路の製作過程

回路図に従って、ユニバーサル基板に、トグルスイッチ、フルカラーLED、抵抗をはんだ付けした。
obnizとの接続は、簡単にできるように刺すだけにできるように抵抗のリードの残りを加工したピンを製作した。フルカラーLEDはユニバーサル基板に穴をあけ、埋め込みした。

ソースコード

プログラムの説明は、ソースコード内のコメントで記載しています。

冷蔵庫の食材在庫量の定期通知装置

<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> <script src="https://smtpjs.com/v3/smtp.js"></script> </head> <body> <script> var obniz = new Obniz("OBNIZ_ID_HERE"); // obniz id var obniz, state, egg, soy_milk, leaf, yogurt; //冷蔵庫にあるものリスト 値格納用 var message1; //メールで送る文章格納用 state =0; egg =0; soy_milk=0; leaf=0; yogurt=0; obniz.onconnect = async function() { //トグルスイッチの2端子の電圧をADで取り込み、物がある(LED 青点灯)/もう少し(LED 緑点灯)/ない(LDE 赤点灯)のどの状態かを判別する function read_ad_input(ad_val) { let level; if(ad_val > 0.45){ //電圧0.45V以上 : ない(LDE 赤点灯) level = "無かよ😫"; } else{ if(ad_val > 0.25){ //電圧0.25V~0.45V : もう少し(LED 緑点灯) level = "少ししかなか😧"; } else{ //電圧0.25V以下 : 物がある(LED 青点灯) level = "あるばい😊"; } } return level; //判定した結果のメール文章を返す(福岡市在住のため、博多弁にしとっと) } obniz.display.print("冷蔵庫"); obniz.display.print("残り状態取得"); await obniz.wait(2000); //トグルスイッチの2端子の電圧をADで取り込み値を格納する egg = (await obniz.ad1.getWait()); // 卵の残り状態取得 soy_milk = (await obniz.ad2.getWait()); //豆乳の残り状態取得 leaf = (await obniz.ad3.getWait()); //葉物野菜の残り状態取得 yogurt = (await obniz.ad4.getWait()); //ヨーグルトの残り状態取得 //メールで送信する文章の作成 message1 = "卵 : " + read_ad_input(egg) +'\r\n' + "豆乳 : " + read_ad_input(soy_milk) + '\r\n' + "葉物:" + read_ad_input(leaf) + '\r\n' + "ヨーグルト:" + read_ad_input(yogurt) + '\r\n'; await obniz.wait(2000); obniz.display.clear(); obniz.display.print("メール送信完了"); obniz.display.print(""); Email.send({ Host : "**********", //SMTPアドレス Username : "**********@gmail.com", //送信元メールアドレス Password : "**********", //送信元メールのパスワード To : '**********@**********', //送信先メールアドレス From : "**********@gmail.com", // Subject : "冷蔵庫からお知らせ", //メールの件名 Body : message1 //メールの文章 }).then( // message => alert(message1) ); await obniz.wait(2000); obniz.display.clear(); obniz.display.print("送信しました"); obniz.display.print(""); //obniz.display.print(message1); await obniz.wait(2000); if(typeof done === "function") { done(); } } </script> </body> </html>

obnizのアプリ設定

毎日定期的に冷蔵庫の食材在庫量をメールで送信するため、obnizのアプリ設定をした。
キャプションを入力できます

参考

メール送信のために、SmtpJS.comを使用しました。
SmtpJS.com

  • 46yomu さんが 2021/05/11 に 編集 をしました。 (メッセージ: 初版)
  • 46yomu さんが 2021/05/11 に 編集 をしました。 (メッセージ: デモ動画を埋め込みに変更しました。)
  • 46yomu さんが 2021/05/13 に 編集 をしました。 (メッセージ: 説明文章修正。電子回路製作の説明追加。)
ログインしてコメントを投稿する