こんなにおおきくなりました
水耕栽培始めました。 様子はこちらからご覧いただけます。現在までの写真が見れます。 ソースコードはこちら。
はじまり
LLM に IoT でなんか良さそうなこと無い?って聞いて出してくれた案に水耕栽培があり興味出た。 ただ日当たり悪いのとスペース確保できなかったのでしばらくくすぶってたけど部屋の掃除がんばって本棚おいてたスペースを空けることができたので水耕栽培を始めたのであった。
種まきと定植
開始は 11 月の終わり、日本は冬になろうかというところである。 我が家は鉄筋造で半地下のため保温力が高く、体感でも温度差が少ない。 大体 15 ℃ くらいだろうなというところで Gemini にお伺いを立てたところ以下の品種をおすすめされた。
- イタリアンパセリ
- スイスチャード
- サニーレタス
- ルッコラ
- パクチー
言われるがまま種を購入し植えたのが以下の様子である。
タッパーに水を張り切込みを入れたスポンジに水を含ませその上に種まき。アルミホイル乗せてるのは Gemini くん曰くその種子が嫌光性だから……なんだけど調べたらどっちかよくわからなかったし外してもなんとかなった。 これを暖かめの寝室、PC の上で LED 当てながら発芽させる。発芽したら植物用の強い LED で成長を待つ。
Gemini くん曰く本葉がでてきてから定植とのことだったけど種まきから 20 日も経っていたので定植に移ることにした。
定植とは苗をプランターなどに植え付ける作業である。今回の水耕栽培では専用のカップを作りそこにハイドロボールを敷いて苗のスポンジを埋めることにした。カップは 3D プリンターで出力。
そしてスタイロフォームの板に穴を開けて定植したカップを備え付けるとこんな感じになる。
これで後は LED をつけ消しすれば一応は育つ。でもやっぱり自動化しなくちゃな!
自動化
温湿度測定
まずは温湿度の計測を行うことにした。使ったのは M5NanoC6 という ESP32-C6 を積んだ M5Stack シリーズのめっちゃちっちゃいデバイス。 小さくても Wi-Fi や Bluetooth 使えるし USB type-C と GROVE コネクタ備えてあるのでなかなか使えるやつなのだ。ボタンとか RGB LED, IR LED なんかも備えてたりする。 で、これに温湿度センサ SHT40 を搭載した ENV-IV というユニットを接続。(なんかディスコンになってた) NanoC6 で温湿度センサの値を Web API で配信する形になる。 コードは Claude Code でちゃちゃっと書いた。GitHub には特に上げてないけど……いる?
照明制御
続いて照明。持ってる LED 照明は制御とかなんもないのでこれも自作した。制御部にはまた NanoC6 を使用。LED の ON-OFF には Seeed から出てた GROVE コネクタにつながる MOS-FET リレーを使用した。(残念ながらディスコンっぽい) GROVE につなげるが I2C を喋れるわけではないので注意。GPIO で入力が ON のとき閉じるようになっている。 制御プログラムは Wi-Fi 経由の SNTP で時刻合わせをし、時間が来たら ON-OFF するというシンプルなもの。ついでにスイッチの状態を取得する Web API と状態によって違う色で LED を点灯させる機能もつけといた。
システム全体はこんな感じ。
と言っても制御部が小さくてよくわからんね。それほどまでに小さくできるのも NanoC6 の利点。 これで温湿度が 15 ℃ / 50 % 程度と水耕栽培に最適なことがわかり、照明が自動化できたので家を空けても大丈夫になった。
画像配信
植物の成長を定点観測したい!というわけでサクッとシステムを組む。 はじめはリアルタイムの動画配信をしようかと思っていたがさっぱり動かない植物の様子を配信してどうなんねんということで没に。
ハードウェア
使ったものは以下の通り。
- Raspberry Pi 4
- USB type-C 電源
- Camera Module 2
- 固定用の段ボール箱
全部家に転がっていた。組み立てるとこんな感じ。
うーん、DIY!
ソフトウェア&配信
Raspberry Pi 4 の制御はシェルスクリプトと cron の組み合わせでシンプルに行っている。ソースはリポジトリの /rpi 以下においてある。
スチルを撮って Cloudflare R2 にアップロードするスクリプトだが温湿度データを一旦 Sqlite3 に保存し JSON にして R2 に送るということもやっている。
後々特定のデータのみ取り出すなんてこともあるかもしれないと思いとりあえず DB 管理している。
時系列データなので InfluxDB も考えたけど運用が重いのでやめた。
R2 に上げられた JSON にはファイル名と温湿度が書いてある。これを Astro で作られたフロントエンドで取得し表示している。 タイムラプスよろしくスライダーを動かすと過去の画像と温湿度が見られるようになっている。都度画像を取得するので滑らかではないが。
反省と今後の展望
片手間で作ったにしては良いシステムができたのではないかと思う。 制御を Raspberry Pi だけに任せてしまえば良いかもしれないが以下の理由でやめておいた。
- 配線が煩雑になる
- 照明のシステムを切り離しておくことで画像配信のシステムが止まっても栽培はできる
今後の展望は以下の通り。
Raspberry Pi にまともな台を与える
流石に段ボール箱にカメラつけてぽんと置いただけでは取り回しが面倒なのでカメラモジュールと Raspberry Pi のケースを作って三脚とかに乗せてあげたい。
タイムラプス動画の配信
タイムラプス動画を作れるスクリプトは組んではいるがまだ Web サイトで配信はしていないのでできるようにしたい。
エアレーションの追加
自動化した段階であんまり育っていなかったためエアレーション(水の中で空気ブクブクするやつ)は省いていた。機材は買ってあるので取り付ける。
結び
収穫まであと 20 日くらいは掛かりそうだ。楽しみである。サラダにでもしようかな。