ArduinoとRaspberry PiとIoTを活用すれば、早起きが苦手でめんどくさがりで絵心のない私でもあさがおの観察日記をつけれるんじゃないか。
そんな実験に「大人の自由研究」と称して今夏取り組みました。
今夏の歩み
このブログでほぼ毎週にわたって報告してきましたので、各記事へのリンクをまとめたページを貼っておきます。
また、各記事で1週間分ずつYoutubeにタイムラプス動画をアップしてきましたが、全体で1本の動画としたものを作成しました。
タイムラプス撮影した写真は10000枚を超えました。
結果的にあさがおは枯れてしまい、花が咲く様子のタイムラプス撮影には失敗してしまいました。
来夏、今度はちゃんと花が咲いて種を収穫できるところまでトライしたいので、4つの観点で振り返り、次回に向けた課題を整理しておきたいと思います。
(想定外の)高評価ポイント
〇あさがおの生態について知ることができた
芽が出たときからすでに何かに巻き付こうとくるくるしていることや、
暑い日には葉を自分でしおれさせて水分をキープするといったことを知りました。
タイムラプス撮影により、成長速度鈍化→肥料が要るということに気付いた
肥料が必要ということを知らなかったのですが、タイムラプス動画を見て成長速度が鈍っていることに気付き、そこから肥料が必要とわかりました。
タイムラプス撮影の思わぬ恩恵でした。
タイムラプス撮影面白いじゃん
あさがおが成長していく様子のほかにも、鉢皿からあふれた水が乾燥していく様子や雲行きによって日向になったり日陰になったりする様子が記録できて面白いと感じました。
普段使っているデジカメにもタイムラプスモードがあるのですが、長時間カメラを固定して置いておかなくてはならない、電源を入れっぱなしにしなくてはならないといった理由で使ったことがありませんでした。
思い切ってRaspberry Piで「タイムラプス専用カメラ」を作ってしまってもよさそうです。
(想定内の)高評価ポイント
(多少のトラブルはあったものの)ひと夏運用できた
Raspberry Piも、自分も、まずはお疲れさまでした。
Raspberry Pi・Arduinoについて技術的に知見が深まった
Raspberry PiとArduinoを連携させて制御する方法や、
Ambientへのデータ送信、LINE通知、GoogleドライブへのアップロードといったIoTに関連した技術、(個人的にはLINE通知がこんなに簡単にできるというのは驚きでした)
PyQtを用いたGUI開発や、Raspberry Piそのものについて、非常に勉強になりました。
自動水やり機構の確立
「毎日定時刻に自動で水やりをする」機構については問題なく動作していました。
ハード・ソフトの両面で一つの方法として確立できたように思います。
とはいえ、現在のシステム構成では、システム全体がダウンしてしまうと水やりできなくなるという欠点があるため、ここは今後検討です。
芽が出る様子がタイムラプスで記録できた
花が咲くところは撮影できませんでしたが、芽が出る様子やツルが伸びていく様子の撮影に成功しました。
ちゃんと続けられた
飽き性なもので、ちゃんとひと夏続けられたのは自分で評価したいと思います。
(想定内の)要改善ポイント
花が咲く前に枯れた
後述のネットワーク関連のエラーに起因したシステムトラブル、しかもしばらく発生に気付かなかったことで結果的に枯らしてしまいました。
お世辞にもキレイとは言えないpythonアプリのソースコード
オブジェクト指向ってなんだっけ?ってくらいぐちゃぐちゃのコードです。
運用途中でNode-Redというものを知ったので、こっちで作ってみたいような気もします。
あさがおの栽培に関する知識不足
肥料が必要なことや種をまく時期など、事前にもっと調べておくべきでした。
カメラは複数台ほしい
全体を撮影する用と、その時々でクローズアップしたい場所(花が咲きそうならつぼみとか、ツルが伸びてるならその部分とか)を撮影する用を最低2カメラ構成にしたいです。
赤外線照明を使った夜間撮影
使用したカメラは、赤外線照明を用意すれば夜間撮影が行えるものでした。
今回は夜間は真っ暗な映像が続いていましたが、もちろん夜中にもあさがおは成長しています。
夜間も撮影しておけば成長の様子をより克明に記録できたはずです。
ただ、赤外線照明を当て続けるという行為があさがおに悪影響を与えないか?という点をよく確認する必要があります。
(想定外の)要改善ポイント
Ambientへのデータアップに時々失敗する
失敗するだけなら良かったのですが、システム全体の動作が巻き込まれて止まってしまいます。
これではタイムラプス撮影も水やりもできない、ということで、途中からデータアップロードを停止して運用を続ける羽目に。
これに関して、実を言うと運用途中の8/21にAmbient側でライブラリのアップデートをしてくれていました。
従来はタイムアウトを指定していなかったため、ネットワークが不安定な環境でAmbientにデータ送信をする際、Ambientサーバーへの接続に失敗するとsendなどの関数から戻らなくなることがありましたが、…
運用途中にはライブラリのアップデートは行いませんでしたが、まさにこれで引っかかっていた気がしますが、運用途中でのArduinoスケッチの書き換えということに抵抗があったので今夏は旧ライブラリのままで運用しました。
他にデータ受信監視や欠測通知のサービスも始まったようですが、有料会員のみへの提供ということです。
使用しているネット回線の脆弱さ
上記、Ambientとも関係してきますが、私の家ではWiMaxを使用しています。
契約前にお試し期間もあったのですが、その時に下り(ダウンロード)方向の速度はまあそこそこ出てるなぁというところまで確認して本契約したのですが、肝心の上り(アップロード)速度をあまりちゃんと見ていませんでした。
かなり劇遅なので、Ambientのデータ送信不具合を誘発してしまっていた感あります。
オフラインにもログを残すようにしておけばよかった
写真はずっとローカル(Raspberry PiのSDカード)にも残していましたが、各センサーの値はAmbientに送信してそれっきりになっていました。
各センサーの値もローカルに記録しておけばAmbientにデータを送れなくてもデータを見ることはできたはずです。
本当は日中の気温や日照と花の咲き方とか見えてくるんじゃないかと期待してたんですけどね…。
タンク水センサの検出値乱れ
これは単純な回路の設計ミスです。
右図のような回路になっていますが、水を検知していないときトランジスタのベースがどこにもつながっていない状態になってノイズを拾いやすい回路になっていました。
また、水についていてもノイズの影響を受けやすい状態になります。
これを防ぐために、ベースを10kΩの抵抗でプルダウンしておく必要がありました。
土の水分量をきちんと検出できず
土に含まれる水分量を測定して水やりの条件として活用する予定でしたが、正常にデータ測定できませんでした。
水やりしても土が乾燥しても値が変わらなかったり、かと思えば何かのはずみで乱高下したりといった状況で、水やりするかどうかの判断には到底使えないデータになっていました。
使用した土との相性によるものなのか、使用したセンサーモジュールによるものなのか、今後検証してみます。
気温が高めに出る
温湿度センサを屋外設置するためのモジュールを当初黒いプラスチックで作製したところ、とんでもなく高い気温を検出しました。
「黒いものは熱を吸収して熱くなる」という基本を忘れてしまっていました。
ということでグレーの樹脂でモジュールを作り直したものの、
やっぱり高めに出てしまいます。
百葉箱の仕組みなどを調べて、モジュールの作り方要検討です。
タイムラプス動画を作るのがめんどくさい
今回は、Windows PCに写真データを吸い上げてから、
①タイムスタンプ入れ(フリーソフト「縮小革命」の文字透かし機能で)
②StarTrailでタイムラプス動画作成
③動画ソフト
という手順を踏んで動画を作成しました。
どうやらRaspberry Piで動画エンコードなどもできるようなので、これらの作業もRaspberry Piにお任せできる部分はお任せしたいです。
課題・要検討事項
あさがおの栽培について勉強する
種まきのタイミングや最適な水の量を知っておきたいです。
複数カメラ使えるようにする
場合によっては複数のRaspberry Piが必要になるかもしれませんが、ぜひとも実装したい。
赤外線撮影に対応する
赤外線照明を使った暗視撮影自体はRaspberry Piで写真が撮れている以上そんなに難しいものではありません。
主にあさがおへの影響があるかどうかを検討します。
Ambientへのデータアップロードの安定化
現時点の予想では、タイムアウト処理を追加するというアップデートのされたライブラリに更新するだけである程度安定するのではないかと考えています。
(タイムアウト機能を実装したとのことなので、不安定な場合にはデータの欠測が発生すると思われますが…そこは後述のローカル保存したデータで補完ですかね…)
データ監視サービスは有料会員限定とのこと、この夏の運用実績から言うと有料会員になるという選択はないでしょう。
もしもそれでもうまくいかないようならAmbient以外のIoTデータ収集サービスを探すか、AWSあたりで自分で一から組んでみるのも勉強になっていいかもしれません。
ネット回線の検討
場合によっては光回線などへの乗り換えも必要かもしれません。
この実験以外でも(特にアップロード方向の)通信が遅くてイライラすることが多いので。
あ…でも2年縛り契約や…(´・ω・`)マダイチネンイジョウアル…
すべてのデータをローカルにも保存する
タイムラプス写真以外の観測データをローカルのSDカードにも保存できるようにします。
タンク水位センサ回路の見直し
前述の通り、トランジスタのベースのプルダウン回路を追加すれば測定値がより安定するはずです。
土壌水分量検出機構の見直し
土壌水分量センサでうまく水分量を測定できませんでした。
センサそのものの問題なのか、使用した土との相性(割と粒の大きな土を使用したから)なのか、それ以外の要因なのか、要検討です。
温湿度センサなどの設置方法の再検討
センサが特に直射日光の影響を受けないように設定する方法を検討します。
百葉箱あたりのしくみをよく観察・研究すればよさそうです。
(写真はWikipediaより引用)
Raspberry Piで動画まで作ってしまう方法
手動で行っていた「タイムスタンプ入れ」「タイムラプス写真から動画生成」をRaspberry Piで自動で行えるようにすればより楽に運用できます。
まとめ
結果だけで言えば、あさがおの花を咲かせることはできませんでした。
しかし、改善点を洗い出すことができましたし、予想していなかった評価ポイントや改善ポイントもたくさん見つけることができました。
今後もシステムを改善しながらトライしてみようと思っています。
それでは、この記事をもって2020年分の「あさがおIoT観察日記」を完了とします。
(次回以降に向けて改善は進めていくので、ちょくちょく関連エントリは書きます。)
ご覧いただきありがとうございました。
引き続き本ブログをよろしくお願いいたします。
コメント