プランター自動水やり機 準備完了!
1. 手直し
1.1 気になる所1(センサーケーブル)
屋外用のケーブル(VCTF、線心数3、1.25sq)を急遽1.5m買って来て図1、2の通り延長しました。
1.2 気になる所2(水漏れ)
水圧が掛かるジョイント部から水漏れしそうです。
図3の通りパイプシールを巻いてからガッツリ締めました。
図3:ねじ山部水漏れ対策
図4:ノルトロックワッシャー M4で固定
1.4 気になる所4(制御回路)
原因は明らかな設計ミスです
それに合わせて図6-2,7-2の通りはんだ付けし直しです
図5:回路図4(前回描いたもの)
図6-1:回路図5-表(今回描き直したもの)
図6-2:実際の回路5-表(手直し後)
図7-1:回路図5-裏(今回描き直したもの)
図7-2:実際の回路5-裏(手直し後)
1.5 気になる所5(プログラム)
他にもちょこちょこ修正しています
/*NOBのArduino日記! プランター自動水やり機制御プログラム(20170806作成)*/ #include <Wire.h> #include "DS1307.h" const int SensorPower = 2;//土壌湿度センサー電力供給制御ピン番号 const int SolenoidPower = 8;//水電磁弁開閉制御ピン番号 const int SwitchIn = A1;//水電磁弁の手動ONスイッチ接続ピン番号 const int SensorIn = A3;//土壌湿度センサー値取得ピン番号 DS1307 clock;//DS1307クラスのオブジェクトを定義する //初期設定 void setup() { clock.begin(); pinMode(SensorPower, OUTPUT); pinMode(SolenoidPower, OUTPUT); pinMode(SwitchIn, INPUT); } //機能:土壌湿度センサーの値を読み込む関数 int SensorRead() { int SensorValue = 0; //SensorValueをint型の変数として宣言(毎回0にリセット) for (byte i = 0; i <= 10; i++) { //A3ポートの電圧を10回読み平均値を出す digitalWrite(SensorPower, HIGH); //センサー電力供給開始 delay(10); //一定時間電流を流して測定値を安定させる SensorValue = SensorValue + analogRead(SensorIn); //センサー電圧を10回読み合計する //Serial.print(":");Serial.print(analogRead(SensorIn)); digitalWrite(SensorPower, LOW); } //センサー電力供給停止 return SensorValue / 10; } //センサー電圧平均値を返す //メインループ void loop() { clock.getTime();//現在の時刻を取得する if (digitalRead(SwitchIn) == HIGH) { digitalWrite(SolenoidPower, HIGH); //手動スイッチONで水を出す } else { //手動スイッチOFFで以下自動水やり制御実行 if (clock.hour == 7 || clock.hour == 11 || clock.hour == 15 || clock.hour == 19) { //時刻が7,11,15,19時で以下実行 if (clock.minute == 0 || clock.minute == 30) { //時刻が0,30分で以下実行 if (SensorRead() < 730) { //土が乾燥していた場合以下実行 digitalWrite(SolenoidPower, HIGH);//水を出す delay(150000UL);//2.5分待つ digitalWrite(SolenoidPower, LOW); } } }//水を止める digitalWrite(SolenoidPower, LOW); } //スイッチOFFで水を止める delay(1000); }//1秒待つ
図1:プログラム例
3. まとめ
色々手直ししましたが、困った時はやっぱりホームセンターですね!
大概なんとかなりました!
この日だけで息子と散歩がてらホームセンター3往復です
励みになりますのでよければクリック下さい(^o^)/