toyoshiの日記

株式会社トクイテンを有名にするための日記です

IoTの重量計(体重計)の自作

ミニトマトを育てているのですが、栽培中に知りたいことに「株がどれぐらい水を吸って蒸散させているか」というのがあります。

それを測る方法の一つに、栽培鉢を計りに載せっぱなしにしておいて重さを計るというのがありますが、手で記録するのは現実的でないので自動化したいなと思いました。

まずは既製品を探しました。欲しかったものはこんなものです

  • 50kgぐらいまでの重さのものをはかれる
  • 定期的に重さを計測してクラウドに投げてくれる(もしくは外部から計測するための端子やAPIがある)
  • 重りを乗せた状態から計測が開始できる(重りを乗せてONすると、それを0kgとする機能がない)
  • 電池で数ヶ月ぐらい稼働する
  • 防水

月額1万円〜ぐらいで使えるサービスがありましたので業務で本格的に使うときはそれを使いたいですが今回は実証実験ということで手作りすることにしました。もしこういう製品があればぜひコメントなどで教えてください。

f:id:toyoshi:20210622175658p:plain

まずネットで2000円で売られていた電池で動くスケールを購入します。スマートマットという製品でした。

f:id:toyoshi:20210623092616j:image

分解すると四方に歪みセンサーがあり、中央にESP-WROOM-02があります。ESP-WROOM-02を直接書き換えることができれば最高だったのですが、基盤についているせいか書き込みがうまくいきませんでした。

f:id:toyoshi:20210622180207p:plain

中身を置き換えます。使ったのは

の3つのパーツです。M5Stack用重さユニット(HX711) が歪みセンサーの値をAD変換し、ATOM Liteがデータをクラウドに投げ、LXDC55使用DCDCコンバーターが単3電池4本直列の電圧を3.3Vに落とします。プログラムはこんな感じです

f:id:toyoshi:20210622180642p:plain

一部省略してありますが、異常値を弾くため10回センサーの値を読んで、ソートして真ん中の値を読むような処理を`remove_noise`でやっています。値をambientに送信したら、電池節約のため1時間のdeepsleep(省電力モード)にはいります。

このように鉢の下におきました

f:id:toyoshi:20210627202554p:plain

左軸はグラム。水をやるたびに重量が増え、徐々に下がっていくのがわかります

上図は1時間に1回計測したものを可視化したもの。

今後の課題としては、消費電力についてM5Atomは素のESP32よりは多いと思うので、あまり電池が長く持たないようなら置き換えたり、電池の残量もクラウドに投げるようにしてもいいかなと思っています。

今回は製品の見た目を変えることなく、もともとあった歪みセンサーや電池ボックスを活用して低予算かつ簡単にIoT重量計ができてとても満足です。

参考サイト

追記(2021/06/24)

ゼロリセットができていなかったので下記のようにボタンが押されたらゼロリセットをして、EEPROMに書き込むようにしました。ゼロリセットは単にオフセットを引いているだけかと思っていたらそうではないようです。(歪みのギャップを考慮するようなことをしている)

f:id:toyoshi:20210624121044p:plain