46yomu が 2021年05月13日14時15分46秒 に編集
説明文章修正。電子回路製作の説明追加。
タグの変更
obnizBoard1Y
obnizIoTコンテスト
メイン画像の変更
記事種類の変更
製作品
本文の変更
1. デモ動画
# デモ動画
@[youtube](https://youtu.be/AxmmwP0bPNw)
1. 概要
# 概要
冷蔵庫の扉に冷蔵庫の中にあるもの(在庫)を表示させ、それを毎日決まった時間にメールで送信し、食材の在庫量を通知する装置
1. 作成した理由 職場の近くに、安いスーパーがあるので、何か買うものがあるのかを毎回妻にLINEで聞いているが、冷蔵庫にある食材の量をトグルスイッチの3状態を入力として切り替え、フルカラーLEDで表示し、冷蔵庫の扉を開けずとも分かり、外出先でも、毎日、その情報がメールで得られて買い物リストとしても使えると考えた。
# 作成した理由 職場の近くに、安いスーパーがあるので、何か買うものがあるのかを毎回妻にLINEで聞いている。そのため、外出していても、冷蔵庫の食材の在庫量が定期的に知ることができれば、何を買わないといけないかを覚えたり、聞く必要がなくなる。
1. 装置の動き あらかじめ、よく食べる物のリスト(卵、ヨーグルト、葉物野菜、根菜、豆腐など)を作り、リストの横にトグルスイッチとフルカラーLEDを備え付ける。 トグルスイッチで、LEDが青色、緑色、赤色とLEDの色が切り替わり、青色だと冷蔵庫にまだある、緑色だともう少し、赤色だと無いことを意味し、冷蔵庫を開けずとも、中にあるものの状況が分かるようにする。 そして、毎日16:15に、食材在庫量をメールで、通知する。
また、簡単に使えるように、冷蔵庫にある食材の量をトグルスイッチで入力できるようにした(料理中に食材が切れたら、その時、その場で入力できる!)。そして、フルカラーLEDで表示することで、冷蔵庫の扉を開けずとも在庫量が分かるようにした。
1. 部品表
# 装置の動き ①あらかじめ、よく食べる物(買う頻度が高いもの)のリスト(卵、ヨーグルト、葉物野菜、根菜、豆腐)を挙げる。
②トグルスイッチで入力すると、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 |
6. 設計図 ![キャプションを入力できます](https://camo.elchika.com/e811618e67fee7329d1be6d097f18267f062f7de/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f31643238303130372d663332352d346662302d386165332d3361303033656362356238372f65356338623065332d326662352d346131612d386564332d613430323039396138626130/)
# 設計図 ![回路図](https://camo.elchika.com/3a45c632af0e77909175977e8e2984a54a3348a5/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f31643238303130372d663332352d346662302d386165332d3361303033656362356238372f38663863326634312d653032362d343930392d623865352d313334613436316538616662/)
※トグルスイッチはON(1-3)-OFF(3)-ON(2-3)の接続となります。 ※obnizの入力1~4の電圧は、RGBのダイオードのVfの電圧が異なることにより、 3色の点灯状態をAD変換で判別します。
7. ソースコード
# 電子回路の製作過程 回路図に従って、ユニバーサル基板に、トグルスイッチ、フルカラーLED、抵抗をはんだ付けした。 obnizとの接続は、簡単にできるように刺すだけにできるように抵抗のリードの残りを加工したピンを製作した。フルカラーLEDはユニバーサル基板に穴をあけ、埋め込みした。 ![](https://camo.elchika.com/a483a9ce6415577844e6f4898c8c4f7ba852e62d/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f31643238303130372d663332352d346662302d386165332d3361303033656362356238372f66643637663539322d313562312d343333322d616430342d366331666639303366356130/) # ソースコード プログラムの説明は、ソースコード内のコメントで記載しています。
```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> <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> ```
8. obnizのアプリ設定
# obnizのアプリ設定
毎日定期的に冷蔵庫の食材在庫量をメールで送信するため、obnizのアプリ設定をした。 ![キャプションを入力できます](https://camo.elchika.com/0bbc3c3fed1e75819c20c4bcbf018117b747dcfe/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f31643238303130372d663332352d346662302d386165332d3361303033656362356238372f37363161303361392d623834332d343130372d393937312d323433656538353938363966/)
9. 参考
# 参考
メール送信のために、SmtpJS.comを使用しました。 [SmtpJS.com](https://smtpjs.com/)