search
LoginSignup
29
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

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

仕組み

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

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

水やりフロー.png

部品表

必須
Arduino UNO 

Grove - Water Sensor 千石

Seeed studio 6V Mini Water Pump 千石

006P電池ボックス リード線付 BH-9V-1A

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

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

Moisture Sensor (SKU:SEN0114) 秋月

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

その他

ユニバーサル基板 千石

ペットボトル

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

洗濯ばさみ

ツール

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

モータードライバー

参考:モータードライバICを使う

自吸式ポンプ
動作電圧:4V-12V(推奨6V) 
動作電流:0.8A

TA7291P 小電流用
平均1.0A  ピーク2.0A モータ電圧20V
電源4.5-20V

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

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

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

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

ここみて勘違いに気づいた:TA7291Pでモーターが動作しません

モータードライバ周りの配線図
sprink motor_ブレッドボード.png

土壌センサー

SEN0114_Dia.png
これ通りピン配置して

ここのテンプレみながらプログラミング書き込み

水センサー

土壌同様
http://www.seeedstudio.com/wiki/index.php?title=Twig_-_Water_Sensor

ブレッドボード図

パーツ軽くみて見つけらんなかったんで 代用してピン配置だけ確認
マイコン(左から1→10まで)→モータードライバー
作っている方がいました

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

sprink_ブレッドボード.png

プログラム

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

水タンク

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

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

DSC_0019.JPG
DSC_0020.JPG

わからないこと (だれか教えて :scream:

土壌センサーテスト時の注意点
水分無くても(空気中) 水分がある判定になってしまう
(プログラミングがおかしいのか?
どうやら初動の判定ミスである

トランジスタつかった場合の回路
コンデンサとかの選び方とか

ktyubeshiさんにコメントでアドバイスいただきました
ありがとうございます :laughing:

現在の進行状況

育てる物がない :scream: なんか小さい植物セット買ってきます

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

今後の課題

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

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

第二弾の作成

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

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

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

参考にしたサイト

QiitaArduinoで自動水やり器を作る①
第11回 Arduinoでモーターを制御する!(その1)モーターの基本を勉強してみる。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
29
Help us understand the problem. What are the problem?