【水耕栽培】豆苗で温度センサー+定点カメラの試験運用
※この記事は活動をちらっと紹介することが目的です。そのため、プログラム等を載せたものとはなっていません(ごめんなさい!)。
また、筆者は独学の初心者なので、もし誤り等があればkaturadafarmアットマークgmail.comまで伝えてくれるとありがたいです!!
こんにちは、桂田農園の右腕の兼田です。
タイトルにある通り、豆苗の水耕栽培をします。
といっても、ただの豆苗を育てるだけなら、スーパーで買ってきたものを水につけておくだけでいいのですが、今回はRaspberry Piと温度センサー、定点カメラのテスト運用をします。
前回はRaspberry Piに温度センサーを付けて、測った室温をグラフに出力しました。
前回の時点では定期的に温度を測ることが出来なかったのですが、あれから1時間に1度の室温測定が可能になりました。これで定期的に測った室温を、グラフにすることができるわけです。
また、久しぶりに定点カメラを使います。
以前定点カメラを使った経緯としては、僕の家と桂田農園は結構距離があるのですが、日々の野菜の成長が見守りたかったので、畑の映像を1週間分撮影して社長にデータで送ってもらっていたのです。
↓実際の映像
↓使っている定点カメラ
今回は、温度センサーと同じタイミングでシャッターを切るように設定します。ある時間の室温と、豆苗の写真が得られるわけです。
しかし、今までの使い方と少し違って、ただ写真を撮るだけではありません。室温のように、ちゃんと豆苗の成長が数値化できるよう挑戦しているのですが、詳しくはまた別の記事で紹介しますね。
さて、色々説明しましたが、つまり豆苗が育つ様子を「室温」と「写真」で観察しているのです。こんな感じに↓
↑実際に僕の部屋で豆苗を育てている様子。右下の黒い箱が定点カメラで、左下の緑の基盤がRaspberry Piです。Raspberry Piから黒いコードが伸びていて、これが温度センサーです。
↑数時間動かしてみました。
グラフ描画はしていないのですが、赤い波線の部分が午前4時までの記録です(夜更かし)。
[(1, '02:00', 24.75), (2, '03:00', 24.937), (3, '04:00', 25.5)]
このようなデータが出ていると思うのですが、各括弧 [] の中に丸括弧()が3つあるのが分かるでしょうか。丸括弧の中の要素は、(データの番号, '何時:何分', 何℃)となっています。
だから、赤い波線部は、「2時00分は24.75℃、3時00分は24.937℃、4時00分は25.5℃」と読むことが出来ます。寒いですね。
温度が何℃以上だったら成長率が悪くて、何℃が調子よさそうで....とか分かるのが理想ですが・・・何分ずっとエアコンが。どうなるんでしょうか、結果が楽しみです。
桂田農園に来てくださりありがとうございます。
4時間ほど前に桂田農園のTwitterでアカウントを間違える誤ツイートをしたのですが・・・。関係ない内容ではないので、せっかくなので補足します。
cron? Schedule?
— 桂田農園 (@YMVo7vnlb1Ot5f9) July 7, 2021
脳死無限ループ😎😎😎😎😎😎😎😎 pic.twitter.com/0iKffJ6DDK
分かる人は、、、分かるのか・・?w 適当にツイートしたもので。
このとき、僕は温度センサーで定期的に室温を測ることが出来るようにプログラムを直していました。「ある時刻になったら温度を測る(プログラムを動かす)」ということをしたいわけですが、若干手こずっていたのです。
恐らく、OSとしてLinux(WindowsやMacOSといった、OSのひとつ)ベースのものが用いられるRaspberry Piではcronを用いる場合が多いと思います。ツイートの最初に「cron?」と言っているやつです。
cronは、簡単に言えば任意の時間に、あるプログラムを動かしてくれる律儀なヤツなのですが、これがなかなかうまくいかなくて・・。そんなに難しそうではないのですが、沼りそうだったので取り敢えず別の方法を探しました。
次に考えたのがScheduleです。
読み方は「スケジュール」で、その名の通りこれを使うことでプログラムを実行する時間を指定することが出来ます。機能としてはcronと似ているのだと思います。
(じゃあ何が違いなのかというと、cronはパソコンの音量設定や日本語入力システムと同じ、常駐プログラムです。UNIX系のOSで利用されています。対してScheduleは、Pythonというプログラミング言語のライブラリです。ライブラリというのは、便利なプログラムを集めてひとまとめにしたようなものです。Scheduleは自分で書くプログラムに使うことが出来るので、UNIX系以外のOSでプログラムを定期的に動かしたいときに使うのだと思います。たぶん。)
そのScheduleなのですが、イメージとしては、実行したいプログラムがあるときに、その関数の「実行指令」は常に出されているのです(無限ループ状態)。しかし、実は実行する時間が指定されているので、その指令が常に届くわけではないという仕組みになっています。(怪しいのでドキュメントを貼っておきます...)
この構造を知ったとき、僕は無限ループの存在を完全に忘れていたことに気づきました・・。
無限ループというのは、永遠に処理が続く状態をいうのですが、普段これをやったらエラーが出てしまったりするのでしないように気を付けているのです。
無限ループがこのように使えるなら、単に今までのプログラムを無限に繰り返せばいいのでは?と思い、実際にそれでうまく室温を測れているのですが・・。
なんとなく気持ち悪い気もしないこともないので、cronの使い方をしっかり覚えてきます!
0コメント