arduinoと電磁弁で自動散水システムを自作してみた
arduinoと12V電磁弁を使って自動水やり機を自作してみました。
温室、屋外、霧吹き水やりの3系統をarduinoでコントロールし、時間設定で朝と夕方に自動で散水してくれます。
タンク式自動水やり機
以前、水タンクに非接触フロースイッチを取り付けタンク式自動水やり機を自作しました。
こちらの記事です。
この装置はマイクロ灌漑と呼べるもので、ベランダや屋内での自動水やりに適しているように思います。
勿論、屋外やビニールハウスでも使えますし、実際にこれまで使ってきました。
でも、やはりマイクロ…です。
もう少し…というところがあったので、今度はどば~!っと水やりが出来る様にしました。
自動水やり機 2号
新しい自動水やり機はダイヤフラム圧力ポンプは使わずに、電磁弁で水流を開閉し、水道の圧力で水やりをします。
RTCを使い時間設定での水やりですが、土壌水分計の計測数値や日照量での数値で水やりの量をコントロールしようと思います。
準備したもの
- arduino mega
- 内径12mmのホース
- 12V 電磁弁
- 水量調整可能なマイクロドリッパー
- ホース接続コネクター
- ホースバンド ⇒ 百均
その他13塩ビ管、T型、L型など。
塩ビ管の加工
今度作成したのは3系統の水やり機です。
一つは以前作成したタンク式水やり機をそのまま使用。
あと2つは屋外とビニールハウスの水やりで、20mのホースを半分にし、1系統10mとしました。
塩ビ管の加工はこんな感じです。
全部で4ヵ所にねじ込みソケットを接着しています。
3ヵ所には電磁弁、もう1ヵ所は水道からの給水です。
取り付けはこんな感じです。
水漏れ防止にシールテープを巻いています。ホームセンターで数十円で購入出来ます。
ホースの接続
百聞は一見に…ということで、実際に接続した状態です。
何故か自然薯がありますけど..(^^;
5月にどこからでも生えてきます。
ノズルの取り付け
水やりノズルはホースに直接取り付けました。
いろいろ試しましたがこの方法が最も簡単で確実でした。(^^;
3mmのドリルでホースに穴を開けます。
その穴にノズルを差し込むだけです。
ホースは3層構造になっていて、内側がゴムになっています。
ノズルは差し込めるようになっていて一度差し込むと抜けません。
水漏れもなく簡単ですよ。
また、ホースの先端は折り曲げてカラー針金(百均で購入)を巻いています。
10mのホースにノズルを20個差し込んでいます。
このノズルはねじることで水量の調節が出来ます。
難点は…
数か月で色あせ、白くなります。
しかし、ただ色あせるだけで2年目も使えます。(カズが実証済み)
50~100個、数百円のノズルですので、3年使えばいいかな?
RTC
この自動水やり機はarduinoでコントロールします。
arduinoには時計機能がありません。
そこで、DS3231モジュールを使ってarduinoにRTC(リアルタイムクロック)を取り付けます。
動かし方はとても簡単でこちらにまとめてみました。
自動水やり スケッチ
自動水やりのサンプルスケッチです。
朝7時になったらline1に3分間水やりして次にline2に3分間水やりします。またタンク式マイクロ灌漑も作動します。
[php]int line1=0;
int line2=0;
int line3=0;
int kyuusui=0;
int teishi=1;
#include <RTClib.h>
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup(){
pinMode(53, OUTPUT);
pinMode(52, OUTPUT);
pinMode(51, OUTPUT);
pinMode(50, OUTPUT); //水タンク給水
pinMode(22, INPUT); //タンクセンサー 下
pinMode(23, INPUT); //タンクセンサー 上
Serial.begin(115200);
delay(50);
//************************* RTC
if (! rtc.begin()) {
while (1);
}
// rtc.adjust(DateTime(2019, 5, 14, 7, 13, 0));//年,月,日,時,分
}
void loop() {
//RTC
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/’);
Serial.print(now.month(), DEC);
Serial.print('/’);
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':’);
Serial.print(now.minute(), DEC);
Serial.print(':’);
Serial.print(now.second(), DEC);
Serial.println();
if (line1==0){
digitalWrite(53,HIGH);
}
if (iline2==0){
digitalWrite(52,HIGH);
}
if (line3==0){
digitalWrite(51,HIGH);
}
if (kyuusui==0){
digitalWrite(50,HIGH);
}
if(now.hour()==7 &&now.minute()==0&&now.second()==0){
digitalWrite(53,LOW);
line1=1;
digitalWrite(51,LOW);
line3=1;
}
if(now.hour()==7 &&now.minute()==3&&now.second()==0){
digitalWrite(52,LOW);
line2=1;
}
if(now.hour()==7 &&now.minute()==2&&now.second()==57){
digitalWrite(53,HIGH);
line1=0;
}
if(now.hour()==7 &&now.minute()==6&&now.second()==0){
digitalWrite(52,HIGH);
line2=0;
}
if(digitalRead(22)==HIGH){
digitalWrite(51,HIGH); //line3停止
line3=0;
digitalWrite(50,LOW); //水タンク給水
kyuusui=1;
}
if( digitalRead(23)==LOW){
digitalWrite(50,HIGH); //水タンク給水停止
kyuusui=0;
}
delay(1000);
}[/php]
適度に水やりしています
水やりの状況です。
具合よく水やりしていますね。
赤いノズルを回すことで散水する水の量を調整できます。また、完全に止めることも出来るので便利です。
【悲報】 凍結で塩ビ管が破損
L型の接手は見事に割れてしまいました。
そしてこれも…
電磁弁を取り付ける部分は破損し、T型の接手にも亀裂が生じています。
昨年10月ごろから使っていないので全くの想定外でした。(^^;
水道の元栓部分では水を止めるように蛇口をつけていますので、来年はというか今年の冬?は電磁弁のフイルターのねじを外して凍結対策をしようと思います。
要するに凍結すると体積が膨張するのでその圧力を逃がしてやればいいってことですよね。
自動水やり自作のまとめ
しばらく旅行してこようということで、自動水やり機を自作してみました。
1週間程運用した結果、問題なくプログラムの通り水やりしてくれます。
が、…
難点は雨でも水やりしてくれます。(^^;
帰国してから既に作成している土中水分計や日射量センサーを組み合わせて更に細かい水やりの水量調節をしようと思います。