土壌センサのLogicを組みます。
土壌センサは市販のものもありますが、
http://akizukidenshi.com/catalog/g/gM-07047/
ここでは簡単な擬似的な仕組みを作ります。
その方法はネットでもたくさん出ていますが、土壌の抵抗を測定します。
回路としては、5Vを印可して Analog Inputで電位を読みます。
ボリューム抵抗をここでは、土壌抵抗とみなして、テストします。
=====================================
//土壌抵抗検知
int regist = 0; //抵抗値を格納
void setup()
{
Serial.begin(9600);
}
void loop()
{
regist = analogRead(A3); // アナログ入力ピンの電位を読む
Serial.println(regist); // 読んだ値を出力
delay(500);
}
=====================================
今日の回路は簡単ですね。
ボリューム抵抗を変化させると、これに応じて、出力が変わります。
これは、回路としては、土壌抵抗R1と、ブレッドボード上の抵抗R2を直列に接続し、5Vを印可、R1とR2の間にAnalog Readをいれています。
このとき、Analog Readの電圧は
5V * R2 /(R1 + R2) となります。
よって、R1の変化を電圧の読み値として観測することができます。
今はあまり深く考えずに思考を具現化しましたがR1(土壌抵抗)をGND側にしたほうが、
5V * R1 /(R1+R2)となり直感的になるかもしれません。
以下ではこの方針で行きます。
Analog Readの読みは5Vのとき1023(これは10bit = 2の10乗-1)を示し、電位に比例します。
たとえば、2.5Vなら512、2Vなら409…など。
土壌抵抗が実装される観葉植物の土壌の抵抗がどれくらいかわからないですが、
もし、抵抗が大きければ、読みは大きな値をしめします。※ 5V * R1 /(R1+R2)この計算による
想定としては、土壌の水分が多くなると、電流が流れやすい状態 = 抵抗が低い、になり、水分が少なくなると、 電流が流れ難い状態 = 抵抗が高い、 になります。
R2の値は、実装しながら適当な値をさがします。
水分が不足すると、抵抗が高くなるので、Analog Readは高くなり、これによって、水遣りが必要であることを検知することができます。
このような端子を作成しました。
このクリップの先端を土にさしこみ、Analog ReadとGNDに接続します。
さて、ここまで先に書いてしまいましたが、今作ろうとしているものは観葉植物自動水やり器です。
先日発注した、給水のためのポンプも入手できました。
こちらは、実験がしやすいようにジャンパー線を半田つけして、ブレッドボード上で試作をできるようにしました。
半田付けした部分は導線がむき出しですので、テープを張って絶縁しておきます。
5Vの電源を接続すると、水を給水することが確認できましたが、
5Vだからかどうか分かりませんが、給水部からポンプまで高さがあると水を運びませんでした。
出水部は高さがあっても問題なしです。
よって、ポンプ本体を水の中に沈める必要がありそうです。
↓給水ポンプ