あらすじ
M5Stackを使用して室内の観葉植物の土壌水分モニターデバイスを開発した話をそのまま時系列でいくつかに分割してご紹介したいと思います。最終ゴールはAlexaに連携させ、Alexaに尋ねると土壌水分状態を教えてくれるところを目指したいと思います。途中で設計変更など紆余曲折ありますが、果たしてゴールに辿り着けるのか。。。
先に結論を言うと、やり方が分かれば十行足らずのコードとクリックだけでAlexa連携デバイスを実現することも可能であることがわかりました。ただしAlexa連携に関してはついてはいくつか考慮すべき制約があるため、設計段階でそれらを踏まえておくことをオススメします。Alexa連携に関する情報はおいおい纏めて紹介できればと思います。
プロダクトプランニング
最近、何鉢か観葉植物を買ったのですが、水のやり方についてお店の方に尋ねると色々と覚えることが多く、感覚を覚えて習慣化するまでは苦労しそうな感じです。観葉植物は種類によって比較的乾燥を好むものや、逆に沢山の水を好むものなど様々です。いずれの種類においても水を与え過ぎても、与えなさ過ぎても植物にとっては元気を無くしたり枯れさせてしまう原因となり、水をやる量やタイミングが大切です。水をやり過ぎると根腐れという症状で枯れてしまったり、とても暑くなる時間帯に水を与えると土壌の水が煮えて根にダメージを与えたり、逆に凍るほど寒い時期は水分が凍ってやはり根にダメージを与えたりするようです。
今回は室内に置くためタイミングについては枯らしてしまう程の懸念はなさそうなため、土壌の水分量を数値化し水を与える時期と量を知る手がかりとなる様にしたいと思います。ただし、数値化だけだと数値の意味がどの程度の乾燥状態を表しているのかイメージできないので、乾燥状態を把握できるものであって欲しいです。
その他にやりたいこととしては、既に何鉢かあり、後数鉢程増やそうと考えているため、各鉢の水分量を一元管理できるようダッシュボードで確認できるようにしたいです。
また、水を与える時期と量の感覚を覚えるための手がかりとして、水分量の履歴も必要です。履歴を見て植物の種類毎にどれくらいまで乾燥したら水を与えるべきか、感覚が掴めるようにしたいです。
最後にAlexaと連携し、Alexaに尋ねると現在の水分量を教えてもらえるようにする必要があります。ものぐさな私にとってこれは必須事項です。
プロダクトデザイン
ということで、以下のような観葉植物の土壌水分量モニターシステムを作っていこうと思います。
システム要求
- 土壌の乾燥状態が把握できること
- 水分量の履歴が確認できること
- 各鉢の水分量の一元管理できること
- Alexaと連携できること
- モニターデバイスはバッテリー駆動とし、単体で水分量が確認できること
以下は開発対象外とします。
- 各観葉植物の水分量と種類毎の適切な水やり時期と量についての学習は人間が行うことにします。 つまり私の脳みその仕事です。とは言え将来的には最低限閾値による通知を行えるようにしたい。。。
- 水やりも人間が行うことにします。 屋外なら灌漑設備を作るのも面白そうですが、室内のためポンプとかあると見栄えが悪くなります。
システム構成
全てローカル環境で済ませようと思いましたが、Dockerコンテナが使えるNASが壊れているため、Dashboardについては適当なクラウドサービスを使用予定とします。Alexaはホームネットワーク上でローカル接続での連携とします(この部分は後日設計変更を迫られます)。
土壌水分モニターデバイス
土壌水分量の計測値は現在の乾燥状態がイメージできるよう10段階のレベルで出力することにします。また土壌水分量の計測はバッテリー消費を抑制するため一定時間間隔での間欠動作にします。3〜6時間の間隔で測定するくらいで十分そうに思います。この辺りはやってみてから調整することにします。
センサーは個体差があることが予想されるため、値のバラつきを抑えるためキャリブレーション機能を搭載することにします。
土壌水分モニターの制御部分のハードウェアには、バッテリー駆動可能であるのとLCDを備えていることから単体でも利用可能なM5StickC plusを使用することにします。
土壌水分を計測するセンサーには、入手性が良く安価なものとしては抵抗方式と静電容量方式の2つがありますが、抵抗方式はセンサー部分の腐食が問題になるのと精度を考慮し、静電容量方式のものを採用します。
Pythonがマイコンでも使えることを知り使ってみたかったので、開発環境にはmicropythonを使用したいと思います。
ということで要件を整理すると次のような感じです。
要件
- 土壌水分量を測定し、表示する
10段階で数値化します。バッテリー駆動であることを考慮し、間欠動作にします。間隔は調整可能とします。 - センサーをキャリブレーションする
センサーの個体差を吸収し、測定値が同じ基準になるようにします - Alexaと連携する(後に変更を迫られます)
ハードウェア構成
- M5StickC plus
バッテリー及びLCD搭載しており、単体だけで水分量の確認が可能 - 静電容量方式の土壌水分センサー
腐食耐性と精度を考慮
開発環境
- micropython 使ってみたかった(後に環境変更を迫られます)
ダッシュボード要件
Dashboard as a serviceの選定要件としては以下の2つがあれば十分です。
- 現在のデータが確認できること
- 履歴データが確認できること
ひと月程度は欲しいところですが、贅沢は言わないことにします。
Alexa
自宅にあるAmazon Echoを使用します。
次回
大体こんな感じで作って行きたいと思います。今回はここまでにして、次回は土壌水分モニターデバイスを開発するために必要な環境をインストールして行きたいと思います。