長期休暇に備えてArduinoで噴霧式水耕栽培システムを作ってみた

#苗をいただきました
2018年7月上旬。水耕栽培を行っている同僚から、ミニトマトとゴーヤの苗を頂きました。
ミニトマトの栽培は種まきが3月中旬で植え付けが5月のようで、すでに2ヶ月遅れのスタートです。

水耕栽培とは土を使わずに液肥で育てる栽培方法です。
土を使わない分、病気になるリスクが減るらしいです。

始めのうちは水耕栽培用のポットに入れて毎日水を換えていたのですが、このままでは長期不在の際に水を換えることができません。となると、水やりを自動化するしかありません。※今回はお盆帰省がきっかけで作成しました。

今回のシステム制作にあたって、こちらの方の記事を参考にさせていただきました。
[【arduino管理】噴霧（エアロポニック）自作栽培装置](http://nomad-life.net/1942977/栽培-管理/【arduino管理】噴霧（エアロポニック）自作栽培装置)

#必要な部品を集める
- ケース  
  噴霧スペース・基盤収納スペース・液肥スペースの3つを用意しました。ホームセンターで丁度よいサイズを探して購入しました。
- ホース  
  液肥 → ポンプ、ポンプ → 霧吹きノズル、噴霧スペース → 液肥スペース。それぞれの経路にあったホースを選択しました。
- 霧吹きノズル  
  液肥を霧状にして根に噴射します。
- ダイヤフラムポンプ  
  本システムの心臓部。これが無いと液肥が送れません。
- PWMモジュール  
  ポンプをフル回転させると強すぎるので、ポンプの回転数を制御するために利用します。
- リレー  
  ポンプの電源ON/OFFを行います。Arduinoで制御するため5Vで駆動するものを選びます。
- 整流ダイオード   
  ポンプのOFF時に発生する逆起電力によって発生する電流が逆流するのを防ぎます。
- RTCモジュール  
  Arduinoで時間を管理するために利用します。
- Arduino  
  水耕栽培システムのプログラムを実行します。
- ACアダプター  
  ポンプ用の電源です。ポンプの電流値に合わせて購入して下さい。今回は、12Vで60Wのポンプを動かすので12V5AのACアダプターを購入しました。容量が足りないとポンプが正常に動作しないので気をつけて下さい。

これらの部品はほとんどAmazonで購入しました。参考までに商品へのリンクを記載しておきます。
※納品速度優先で購入していたため、規格的に適切でないものが含まれている可能性もあります。

[DC 12V 電磁 ウォーター ポンプ 汎用 小型 ダイヤフラム 式](https://www.amazon.co.jp/dp/B00L9M3FJG)
※作成当時すぐに入手できる必要があったため60Wとなっています。36Wの製品もあるようなのでそちらでも問題ないと思います。
[PWMモジュール](https://www.amazon.co.jp/dp/B00IK6P8KI)
[リレーモジュール](https://www.amazon.co.jp/dp/B00L11KL10)
[整流ダイオード](https://www.amazon.co.jp/dp/B01GNW4NNS)
[RTCモジュール](https://www.amazon.co.jp/dp/B07C9634GY)

#回路実装
回路と言っても基盤は用意せず、そのまま部品同士を繋いでいます。
###Arduino周り
RTCモジュールのVCC・GND・SDA・SCLをArduinoと接続します。
今回はArduinoのデジタル7番ピンでリレーを制御するため、リレーの制御ピンとArduinoのデジタル7番ピンを接続します。

###PWM周り
PWMの入力側にACアダプターとリレーを繋いでポンプのON/OFFを制御します。
PWMの出力側にはポンプへの配線と逆起電力による逆流防止の整流ダイオードを入れています。
※リレーで物理的に回路が切れるので逆起電力が起きてもACアダプタには影響が無い気がしますが、念の為入れています。

あとはこれらをタッパーに入れて、基盤収納スペースに納めます。
![回路.png](https://qiita-image-store.s3.amazonaws.com/0/54521/5c447906-ad5a-86cc-74d7-84ea529a4263.png)

#プログラム実装
プログラムは時間帯によって散水時間を決め、散水と休止を繰り返しています。
参考サイトの時間をそのまま利用させていただいています。

```c
#include <Wire.h>
#include "RTClib.h"

RTC_DS3231 rtc;

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

int RELAY = 7;
int onTime = 0;
int intervalTime = 0;

void setup () {

#ifndef ESP8266
  while (!Serial);
#endif

  Serial.begin(9600);
  delay(3000);

  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (rtc.lostPower()) {
    Serial.println("RTC lost power, lets set the time!");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }

  pinMode(RELAY,OUTPUT);
}

void loop () {

    DateTime now = rtc.now();

    //散水時間
    unsigned long splash = 0;
    //休止時間
    unsigned long wait = 0;
    int hour = now.hour();
    
    if(hour >= 0 && hour < 5){
      splash = 20;
      wait = 180;
    }else if(hour >= 5 && hour < 7){
      splash = 20;
      wait = 120;
    }else if(hour >= 7 && hour < 10){
      splash = 30;
      wait = 120;
    }else if(hour >= 10 && hour < 15){
      splash = 60;
      wait = 60;
    }else if(hour >= 15 && hour < 19){
      splash = 50;
      wait = 120;
    }else if(hour >= 19 && hour < 24){
      splash = 30;
      wait = 120;
    }

    digitalWrite(RELAY,LOW);
    delay(fire * 1000);
    digitalWrite(RELAY,HIGH);
    delay(wait * 1000);
}
```

#稼働テスト
噴霧テストでは、PWMコントローラで回転数を調整しながら、噴霧の強さと騒音のバランスを調整しました。
強すぎるとホースとの接続が抜けてしまったり、ポンプ音も大きくなるため調整には気を使いました。
噴霧角度については、根に当たるように調整しています。
![ezgif.com-video-to-gif.gif](https://qiita-image-store.s3.amazonaws.com/0/54521/0529f129-4c3d-3bd2-11b7-40de27e01159.gif)

上から、噴霧スペース・基盤収納スペース・液肥スペース。噴霧スペースで溜まった余分な液肥がホースを流れて最下部の液肥スペースに貯まります。液肥が満たされている限り自動で循環します。
電磁弁で水の追加も自動化しようと思いましたが、液肥配合の考慮必要なのと期間も無いため今回は断念しました。
液肥の補充は、片方の鉢を抜いてその穴から補充していました。
![IMG_7815のコピー.jpg](https://qiita-image-store.s3.amazonaws.com/0/54521/269c9ac2-2dfa-1e2f-317c-6dfb25c5a482.jpeg)

実稼働時は断熱と遮光のために全体をアルミシートで覆いました。光が入ると苔が生えてくるため遮光は必須です。
猛暑の日はケース内の温度がどれほど上昇していたのか分からなかったので不安でしたが、なんとか耐えてくれたようです。
![IMG_7750のコピー.jpg](https://qiita-image-store.s3.amazonaws.com/0/54521/a1a46c5d-6e37-7e6f-9f2d-ce3a17783054.jpeg)

#まとめ
![IMG_7860.jpg](https://qiita-image-store.s3.amazonaws.com/0/54521/95964da4-ad2f-fb00-153a-d07859e18b3c.jpeg)
![IMG_7863のコピー.jpg](https://qiita-image-store.s3.amazonaws.com/0/54521/9cabe682-fcc7-fe00-1a28-7a8d7c7d83bd.jpeg)

見よう見まねで作ってみましたが、案外うまく行きました。※参考サイトのおかげです
作成した噴霧式水耕栽培システムは、トマトの収穫完了後も耐久性能確認のため継続して稼働させていました。
実際の稼働期間は8月上旬〜1月上旬と特にトラブルもなく5ヶ月間稼働できました。
ただし何点か改良の余地がありました。

- 雨対策  
  上部の開口部が広いために、雨が降ると雨水が侵入し液肥の濃度が低下してしまいました。
- パラメータの最適化  
  今回は可視化などの仕組みは用意しなかったので、噴霧時間が最適かどうか分かりませんでした。
- メンテナンスし辛い  
  各ケースがホース等で繋がってしまっているため、容器の掃除や内部の確認がし辛かったです。液肥の補充に関しても改善の必要があります。
- 異なる品種を一緒にしない  
  ミニトマトとゴーヤを一緒にしていましたが、ゴーヤの成長が早く根も長いため噴水スペース内がゴーヤの根に占領されていしまいました。

次のシーズンには上記問題を解決したバージョン2を作ってみたいと思います。