デモ動画
概要
冷蔵庫の扉に冷蔵庫の中にあるもの(在庫)を表示させ、それを毎日決まった時間にメールで送信し、食材の在庫量を通知する装置
作成した理由
職場の近くに、安いスーパーがあるので、何か買うものがあるのかを毎回妻に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
に
編集
をしました。
(メッセージ: 説明文章修正。電子回路製作の説明追加。)
ログインしてコメントを投稿する