素人のarduino 水やり機　ほぼ完成

一応まだ完成していません!!


#仕組み

1.土壌センサー+ポンプ　土が乾いたら水をまく

2.水が容器から減ったらLED点灯 

![水やりフロー.png](https://qiita-image-store.s3.amazonaws.com/0/67904/59ba7920-8b58-f3d0-17e2-c80c4618cbda.png)


#部品表
**必須**
Arduino UNO　

Grove - Water Sensor 千石

Seeed studio 6V Mini Water Pump 千石

００６Ｐ電池ボックス　リード線付　ＢＨ－９Ｖ－１Ａ 

9V電池×2(arduino用とモーター出力用

Vivaria　ビバリア　アクアチューブ　2m　(近くの金魚屋さんにあったから

Moisture Sensor (SKU:SEN0114) 秋月

モータードライバIC TA7291P 秋月(手元にあったからこれで

**その他**

ユニバーサル基板 千石

ペットボトル

ピンソケットとか
その他接続用部品

洗濯ばさみ

**ツール**

半田ごて
ニッパー
ピンセット
ピンバイス
etc...


#モータードライバｰ
>参考:[モータードライバICを使う](http://startelc.com/H8/H8_53mterDrv.html)

**自吸式ポンプ**
動作電圧：４Ｖ－１２Ｖ（推奨６Ｖ）　
動作電流：０．８Ａ



**TA7291P 小電流用**
平均1.0A　　ピーク2.0Ａ	モータ電圧２０Ｖ
電源4.5－20Ｖ



~~**Arduino**
DC Current per I/O Pin	40 mA
(動作電流の確認ようわからん)~~


参考サイト又はデータシート(参考サイトにもデータリンクがありますが :mask: )を確認しながら
回路図を作っていきます(モーター,出力電池,arduinoからの~~制御ピン~~←デジタル出力ピン)

~~今回は出力だけでいいので　IN1,IN2のどっちか片方をH,もう片方をLにします　(制御したい場合は適当なピンに接続してください)~~
↑間違い　IN1or2のどっちかをデジタル出力できるようにしてデジタル出力じゃない方をGND
(これでデジタル出力したときにONになる仕組みに)

Vrefの機能は使うつもり今のとこないのでVsと同様にモーター用電源に(制御したかったら可変抵抗指したり　アナログ出力したり・・・

>ここみて勘違いに気づいた:[TA7291Pでモーターが動作しません](http://oshiete.homes.jp/qa3599512.html)



モータードライバ周りの配線図
![sprink motor_ブレッドボード.png](https://qiita-image-store.s3.amazonaws.com/0/67904/05a36ddf-ca31-ed67-fdba-2a77e410ce54.png)





#土壌センサー
![SEN0114_Dia.png](https://qiita-image-store.s3.amazonaws.com/0/67904/b1059321-d74d-1f99-8028-98360ce1074d.png)
これ通りピン配置して

[**ここ**](http://www.dfrobot.com/wiki/index.php?title=Moisture_Sensor_(SKU:SEN0114))のテンプレみながらプログラミング書き込み

#水センサー
土壌同様
http://www.seeedstudio.com/wiki/index.php?title=Twig_-_Water_Sensor


#ブレッドボード図
パーツ軽くみて見つけらんなかったんで　代用してピン配置だけ確認
~~マイコン(左から1→10まで)→モータードライバー~~
[作っている方がいました](http://www.geocities.jp/zattouka/GarageHouse/soft/Fritzing/FritzingPart.htm)

インスペクター→土壌センサー
水晶→水センサー
とします

![sprink_ブレッドボード.png](https://qiita-image-store.s3.amazonaws.com/0/67904/5e03672b-53ce-28a5-ee25-62231dadacf2.png)




#プログラム

```lang:sprinkler
/*
--水分センサ--
  #Arduinoのボード上のA0（アナログ0）端子にセンサを接続

--土壌センサの値 説明--
  # 0  ~300     dry soil
  # 300~700     humid soil
  # 700~950     in water
  
*/

 #define Motortime 3000
 
 #define WATER_SENSOR 5
 #define MotorPin 12
 #define LPin 11

/*メール送信関数
void MailAlarm()
{
}
*/

void setup (){

    pinMode(MotorPin, OUTPUT);//モーター用ピン動作を入力か出力に設定します。 
    pinMode(WATER_SENSOR, INPUT);//水センサ用ピン動作を入力か出力に設定します。
    pinMode(LPin, OUTPUT); //LED用ピン動作を入力か出力に設定します。 
    
}

void loop (){
 int soilstate = 0;
 int waterlevel = 0;

  
  //湿度測定　もし乾燥していたらポンプ出力を行う A0PINの値確認
  soilstate = analogRead(0);
  delay(1000);
  
  if(300>=soilstate){
    //ポンプ出力関数
    digitalWrite(MotorPin,HIGH); //MPin番ピンの出力をHIGH = 5Vにする
    delay(Motortime);            //Mtime秒待つ
    digitalWrite(MotorPin,LOW);  //MPin番ピンの出力をLOW = 0Vにする
  }
  else {
    digitalWrite(LPin, HIGH);   //LEDをON
    delay(Motortime);     
    digitalWrite(LPin, LOW);    //LEDをOFF
  }
  
  for(int i=0;i<=3;i++){
    
    delay(1000);     
  }

  //水位測定　もし水が残り少なかったらメール,LED点灯
  waterlevel = digitalRead(WATER_SENSOR);
  
  if(waterlevel==HIGH){
    //メール出力関数　MailAlarm();
    
    for(int j=0; j<=10;j++){
      digitalWrite(LPin, HIGH);   //LEDをON
      delay(100);  
      digitalWrite(LPin, LOW);    //LEDをOFF
      delay(100);  
    }
    
  }
  
  else if(waterlevel==LOW){
    digitalWrite(LPin, HIGH);   //LEDをON
    delay(1000);  
    digitalWrite(LPin, LOW);    //LEDをOFF
    delay(1000);
  }
  

}
```

いろいろ挙動修正のために　LED点灯場面を増やしました

#配置
適当にシールドつくって配置しました

モーターはピンバイスで穴開けてボードの端っこにスペーサーとかでくっつけました

![DSC_0013.JPG](https://qiita-image-store.s3.amazonaws.com/0/67904/6d913074-92e7-1f49-3633-9a2a77543eff.jpeg)

#水タンク

ペットボトルのキャップにピンバイスとかで穴を開け
ボトルの下の方には水センサを入れグルーガンで固定
初めてグルーガン使ったので水漏れ心配です

このセンサタンクを二つ(交換用も含め)作ります

![DSC_0019.JPG](https://qiita-image-store.s3.amazonaws.com/0/67904/e3f99f2e-5b51-d81a-e587-b55298ccb1e7.jpeg)
![DSC_0020.JPG](https://qiita-image-store.s3.amazonaws.com/0/67904/3c434558-2f6d-ddcc-ec57-0b2222808fe1.jpeg)




#わからないこと　(だれか教えて :scream: 
**土壌センサーテスト時の注意点**
~~水分無くても(空気中)　水分がある判定になってしまう
(プログラミングがおかしいのか？~~どうやら初動の判定ミスである

~~**トランジスタつかった場合の回路**
コンデンサとかの選び方とか~~
ktyubeshiさんにコメントでアドバイスいただきました
ありがとうございます :satisfied: 

#現在の進行状況
育てる物がない  :scream: なんか小さい植物セット買ってきます

DCジャック(arduino電源用BOXの)買い忘れたのでそれ待ち


#今後の課題

省電力化のため　スリープモード導入を検討

グルーガンの少量の水漏れ対策



**第二弾の作成**

マイコンの知識が付いたら　別のマイコンでさらに軽量化を考える(小端子,小出力,小容量,軽量化)

ドライバ部分を別の物にして小さくする



**なにかわからないことがあればコメントお願いします**

#参考にしたサイト
**Qiita**[Arduinoで自動水やり器を作る①](http://qiita.com/interestor/items/d59590b64820a8cf973e)
[第11回 Arduinoでモーターを制御する！（その１）モーターの基本を勉強してみる。](http://deviceplus.jp/hobby/entry011/)