一応まだ完成していません!!
仕組み
1.土壌センサー+ポンプ 土が乾いたら水をまく
2.水が容器から減ったらLED点灯
部品表
必須
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...
モータードライバー
自吸式ポンプ
動作電圧:4V-12V(推奨6V)
動作電流:0.8A
TA7291P 小電流用
平均1.0A ピーク2.0A モータ電圧20V
電源4.5-20V
Arduino
DC Current per I/O Pin 40 mA
(動作電流の確認ようわからん)
参考サイト又はデータシート(参考サイトにもデータリンクがありますが )を確認しながら
回路図を作っていきます(モーター,出力電池,arduinoからの制御ピン←デジタル出力ピン)
今回は出力だけでいいので IN1,IN2のどっちか片方をH,もう片方をLにします (制御したい場合は適当なピンに接続してください)
↑間違い IN1or2のどっちかをデジタル出力できるようにしてデジタル出力じゃない方をGND
(これでデジタル出力したときにONになる仕組みに)
Vrefの機能は使うつもり今のとこないのでVsと同様にモーター用電源に(制御したかったら可変抵抗指したり アナログ出力したり・・・
ここみて勘違いに気づいた:TA7291Pでモーターが動作しません
土壌センサー
ここのテンプレみながらプログラミング書き込み
水センサー
土壌同様
http://www.seeedstudio.com/wiki/index.php?title=Twig_-_Water_Sensor
ブレッドボード図
パーツ軽くみて見つけらんなかったんで 代用してピン配置だけ確認
マイコン(左から1→10まで)→モータードライバー
作っている方がいました
インスペクター→土壌センサー
水晶→水センサー
とします
プログラム
/*
--水分センサ--
#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点灯場面を増やしました
配置
適当にシールドつくって配置しました
モーターはピンバイスで穴開けてボードの端っこにスペーサーとかでくっつけました
水タンク
ペットボトルのキャップにピンバイスとかで穴を開け
ボトルの下の方には水センサを入れグルーガンで固定
初めてグルーガン使ったので水漏れ心配です
このセンサタンクを二つ(交換用も含め)作ります
わからないこと (だれか教えて
土壌センサーテスト時の注意点
水分無くても(空気中) 水分がある判定になってしまうどうやら初動の判定ミスである
(プログラミングがおかしいのか?
トランジスタつかった場合の回路
コンデンサとかの選び方とか
ktyubeshiさんにコメントでアドバイスいただきました
ありがとうございます
現在の進行状況
育てる物がない なんか小さい植物セット買ってきます
DCジャック(arduino電源用BOXの)買い忘れたのでそれ待ち
今後の課題
省電力化のため スリープモード導入を検討
グルーガンの少量の水漏れ対策
第二弾の作成
マイコンの知識が付いたら 別のマイコンでさらに軽量化を考える(小端子,小出力,小容量,軽量化)
ドライバ部分を別の物にして小さくする
なにかわからないことがあればコメントお願いします
参考にしたサイト
QiitaArduinoで自動水やり器を作る①
第11回 Arduinoでモーターを制御する!(その1)モーターの基本を勉強してみる。