成長期のこどもたちがいる我が家
最近では牛乳の消費量が日々増しております。
そこでいつでもどこからでも自宅の牛乳在庫を知ることができる牛乳残量計システムを製作しました。
デモ動画
システム概要
obnizに牛乳の在庫本数を設定する可変抵抗と開封済み牛乳の残量を計測するロードセルを接続して、1時間に一度測定してデータをサーバにアップします。
データアップ後にスリープし、1時間後に起床して計測データをアップしスリープを繰り返します。
obniz Board 1Yにはスリープ機能があり、スリープ中の消費電流は 20uA-40uAとのことです。
https://obniz.com/ja/doc/reference/board-1y/sleep-function
冷蔵庫内で単3電池3本で長期間動作させるために極力消費電力を抑える構成にいたしました。
構成
部品
- obniz Board 1Y
- 10 kohm 可変抵抗
- 5kg ロードセル
- 電池ボックス 単3×3本
計測
牛乳在庫の計測方法を記します。
未開封在庫
未開封の牛乳在庫本数は可変抵抗で手動で設定するようにしました。
0~5本をツマミで設定できるようにしました。
開封済残量
開封済 牛乳の残量はロードセルで重量を測り算出しました。
使用したロードセルのA/DコンバータにはHX711が使用されていました。
obnizによるHX711の制御には以下を参考にしました。
https://obniz.com/ja/sdk/parts/hx711/README.md
setOffsetでゼロ補正を行い、
setScaleでスケール設定します。
測定した重量から紙パックの重量(35g)を差し引いて、牛乳の比重1.03より残量を算出します。
筐体
データ送信
計測したデータ(在庫本数、開封済み牛乳残量)はUrlにパラメータとして付与して自宅サーバにアップします。
自宅サーバでデータと受信時間を保持してブラウザ表示できるようにしました。
これで、いつでもどこでも自宅の牛乳の在庫を知ることができ外出時に牛乳の買い忘れを防ぎ
子の育成の促進をはかることができるようになりました。
ソースコード
牛乳残量計コア部
<script>
$("#bploading").text("RUNNING...");
//type in your obniz ID
var obniz = new Obniz("OBNIZ_ID_HERE");
var label, cnt = 0;
label = new ObnizUI.Label('label');
const milkDensity = 1.03;
const packWeight = 35;
var sensor ,value = 0;
//during obniz connection
obniz.onconnect = async function() {
// 重量測定
sensor = obniz.wired("hx711" , {gnd:4, dout:3, sck:2, vcc:1} );
sensor.setOffset(180800);
sensor.setScale(441.9);
value = (await sensor.getValueWait(1) - packWeight) / milkDensity;
//牛乳在庫本数
obniz.io5.output(false);
cnt = ((await obniz.ad6.getWait()) / 33) * 50;
//ブラウザ・LCD表示
obniz.display.clear();
obniz.display.print('牛乳在庫');
obniz.display.print(([' ',cnt.toFixed(),'本と', value.toFixed(), 'ml'].join('')));
label.setText((['牛乳在庫は',cnt.toFixed(),'本と', value.toFixed(), 'ml'].join('')));
//サーバ送信
var request = new XMLHttpRequest();
request.open('GET', 'https://自宅サーバ' + '?count=' + cnt.toFixed() + '&value=' + value.toFixed());
request.send(null);
//スリープ
obniz.sleepMinute(60);
};
</script>
投稿者の人気記事
-
HomeMadeGarbage
さんが
2021/04/12
に
編集
をしました。
(メッセージ: 初版)
ログインしてコメントを投稿する