今ミニトマトを育てているのですが、栽培中に知りたいことに「株がどれぐらい水を吸って蒸散させているか」というのがあります。
それを測る方法の一つに、栽培鉢を計りに載せっぱなしにしておいて重さを計るというのがありますが、手で記録するのは現実的でないので自動化したいなと思いました。
まずは既製品を探しました。欲しかったものはこんなものです
- 50kgぐらいまでの重さのものをはかれる
- 定期的に重さを計測してクラウドに投げてくれる(もしくは外部から計測するための端子やAPIがある)
- 重りを乗せた状態から計測が開始できる(重りを乗せてONすると、それを0kgとする機能がない)
- 電池で数ヶ月ぐらい稼働する
- 防水
月額1万円〜ぐらいで使えるサービスがありましたので業務で本格的に使うときはそれを使いたいですが今回は実証実験ということで手作りすることにしました。もしこういう製品があればぜひコメントなどで教えてください。
まずネットで2000円で売られていた電池で動くスケールを購入します。スマートマットという製品でした。
分解すると四方に歪みセンサーがあり、中央にESP-WROOM-02があります。ESP-WROOM-02を直接書き換えることができれば最高だったのですが、基盤についているせいか書き込みがうまくいきませんでした。
中身を置き換えます。使ったのは
- ATOM Lite - スイッチサイエンス https://www.switch-science.com/catalog/6262/
- M5Stack用重さユニット(HX711) - スイッチサイエンス https://www.switch-science.com/catalog/6553/
- LXDC55使用DCDCコンバーターキット (降圧 3.3V): 組立キット 秋月電子通商-電子部品・ネット通販 https://akizukidenshi.com/catalog/g/gK-09980/
の3つのパーツです。M5Stack用重さユニット(HX711) が歪みセンサーの値をAD変換し、ATOM Liteがデータをクラウドに投げ、LXDC55使用DCDCコンバーターが単3電池4本直列の電圧を3.3Vに落とします。プログラムはこんな感じです
一部省略してありますが、異常値を弾くため10回センサーの値を読んで、ソートして真ん中の値を読むような処理を`remove_noise`でやっています。値をambientに送信したら、電池節約のため1時間のdeepsleep(省電力モード)にはいります。
上図は1時間に1回計測したものを可視化したもの。
今後の課題としては、消費電力についてM5Atomは素のESP32よりは多いと思うので、あまり電池が長く持たないようなら置き換えたり、電池の残量もクラウドに投げるようにしてもいいかなと思っています。
今回は製品の見た目を変えることなく、もともとあった歪みセンサーや電池ボックスを活用して低予算かつ簡単にIoT重量計ができてとても満足です。
参考サイト
- 8か月以上の長期間動作を確認! 超省エネIoTセンサESP32-WROOM-32 - ボクにもわかる電子工作のブログ https://bokunimo.net/blog/esp/21/
- 車椅子体重計を3000円以内で作ってみた https://strongzero.zatunen.com/entry14.html
追記(2021/06/24)
ゼロリセットができていなかったので下記のようにボタンが押されたらゼロリセットをして、EEPROMに書き込むようにしました。ゼロリセットは単にオフセットを引いているだけかと思っていたらそうではないようです。(歪みのギャップを考慮するようなことをしている)