Arduino 自動水やり 装置 製作例で作る初心者向け土壌センサー式給水機

0
7
Arduino 自動水やり 装置 製作例で作る初心者向け土壌センサー式給水機

鉢の土が乾いたら必要な量だけ水を送る仕組みは、センサー、プログラム、機械部品が一つの作品としてつながる楽しい電子工作です。この Arduino 自動水やり 装置 製作例 では、土壌水分を測り、小型ポンプを動かす基本構成を作ります。最初から完全放置を目指すより、「乾き具合を読み取り、短時間だけ給水する」動作を確かめることが成功への近道です。

この製作例で作る自動水やり装置

Arduinoが土壌水分センサーの値を定期的に読み、設定した値より乾いていた場合だけポンプを数秒間動かします。水は容器からシリコンチューブを通り、鉢の土へ送られます。

この方式のよい点は、タイマーだけで水をやる装置よりも、天気や室温による土の乾き方の違いに対応しやすいことです。一方で、センサーの値は土の種類、挿す深さ、肥料、水道水の成分でも変わります。数値をそのまま信じるのではなく、実際の土の状態と見比べて調整する必要があります。

まずは小さな観葉植物やハーブで試しましょう。水切れしやすい植物でも、根腐れしやすい植物でも、最初の数日は必ず目で確認します。電子工作を楽しもうという気持ちと同時に、植物を観察することもこの作品の大切な工程です。

用意する部品と選び方

基本構成には、Arduino Uno互換機またはArduino Nano、静電容量式の土壌水分センサー、5Vまたは6Vの小型水中ポンプ、MOSFETモジュール、逆流防止用ダイオード、シリコンチューブ、ポンプ用電源、ブレッドボード、ジャンパー線を使います。水を入れる容器と、ポンプを固定するためのケースも用意してください。

土壌水分センサーは、金属電極を土に挿す抵抗式より、静電容量式がおすすめです。抵抗式は安価で学習には便利ですが、通電する金属部分が腐食しやすく、長期間の運用では値が不安定になりがちです。静電容量式は土の誘電率の変化を利用するため、センサー部分の劣化を抑えやすくなります。

ポンプをArduinoの5Vピンから直接動かしてはいけません。ポンプは起動時に大きな電流が流れ、Arduinoの動作が不安定になったり、基板を傷めたりするおそれがあります。ポンプには別の電源を使い、ArduinoからはMOSFETを通じてオンとオフの信号だけを与えます。

配線は「信号」と「電力」を分けて考える

Arduinoと土壌水分センサーは、VCCを5V、GNDをGND、アナログ出力をA0へ接続します。使用するセンサーによっては3.3V指定のものもあるため、基板の表記を先に確認してください。

ポンプ制御にはMOSFETモジュールを使うと配線を整理しやすくなります。Arduinoのデジタル9番ピンをMOSFETモジュールの信号入力へ、ポンプ用電源をモジュールの電源入力へつなぎ、出力側にポンプを接続します。このとき、ArduinoのGNDとポンプ電源側のGNDは共通にします。共通GNDがないと、Arduinoから出すオン信号の基準がなくなり、ポンプが期待どおりに動きません。

モーターであるポンプは、止めた瞬間に逆向きの電圧を発生させます。単体のMOSFET回路を組む場合は、ポンプの両端にフライバックダイオードを入れましょう。MOSFETモジュールには保護回路を含む製品もありますが、仕様を確認せずに省略しないことが安全です。

配線を終えたら、水を入れる前に確認します。ArduinoをUSBでつなぎ、センサー値が変わること、デジタルピンのオンとオフでMOSFETモジュールの表示LEDが変わることを確かめます。ここで配線ミスを見つければ、机や基板を水浸しにする失敗を減らせます。

Arduinoの制御プログラム

次の例では、A0の値を読み、乾燥判定値を超えたら3秒間だけポンプを動かします。静電容量式センサーでは、乾くほど値が大きくなる製品が多いものの、逆の製品もあります。必ずシリアルモニタで実測してください。

“`cpp const int sensorPin = A0; const int pumpPin = 9; const int dryThreshold = 650;

void setup() { pinMode(pumpPin, OUTPUT); digitalWrite(pumpPin, LOW); Serial.begin(9600); }

void loop() { int moisture = analogRead(sensorPin); Serial.println(moisture);

if (moisture > dryThreshold) { digitalWrite(pumpPin, HIGH); delay(3000); digitalWrite(pumpPin, LOW); delay(60000); } else { delay(5000); } } “`

このプログラムは学習用の最小構成です。`delay()` を使うため、ポンプを動かしている間はほかの処理が止まります。温度表示、LED、ネットワーク通信などを追加したくなったら、`millis()` を使って時間を管理する方法へ発展させるとよいでしょう。

また、乾いている間に何度も給水しないよう、給水後は1分待つようにしています。実際には、水が土へしみ込んでセンサー値が変わるまで数分かかることがあります。鉢の大きさや吐出量に合わせて、待機時間を10分以上にすることもあります。

センサー値を校正して「乾いた」を決める

`dryThreshold` を適当に決めると、水をやりすぎたり、まったく動かなかったりします。校正は難しくありません。センサーを空気中に置いたときの値を記録し、次に普段どおり水を含んだ土へ挿したときの値を記録します。

たとえば空気中で780、十分に湿った土で420と表示されたなら、最初の判定値は650前後に設定できます。その後、土の表面が少し乾いても植物が元気な状態、給水したいと感じる状態でも値を記録します。植物ごとに適した値を決めると、装置は単なる自動機械ではなく、自分の栽培環境に合わせた道具になります。

センサーは鉢の端ではなく、根が多い場所に近い位置へ挿します。ただし根を傷つけないように注意してください。水がチューブの出口付近にだけ落ちる場合は、その場所だけ湿ってセンサーが誤判定することがあります。出口とセンサーは少し離して配置します。

Arduino 自動水やり 装置 製作例を長く使う工夫

水と電子回路は必ず分けて配置します。ArduinoやMOSFETは鉢より高い位置に置き、チューブの抜けや容器の転倒が起きても水が基板へ流れない経路を作りましょう。チューブは結束バンドやクリップで固定し、給水容器の水位より低い位置にチューブ先端がある場合は、サイフォン現象にも注意が必要です。

ケースは市販の樹脂ケースでも十分ですが、3Dプリンターでセンサー表示部と配線穴を持つケースを設計すれば、作品らしさが増します。レーザーカッターを使えるなら、透明アクリルで水位が見えるタンクカバーを作る方法もあります。加工データから実物を組み立てる工程を加えると、電子回路、プログラム、デジタル工作が一つにつながります。

屋外で使う場合は、雨だけでなく結露と直射日光も課題です。完全防水ケースに入れても、チューブの穴やケーブルの引き込み部から水が入ることがあります。まずは室内で安定して動かし、屋外用途では防水構造、電源保護、通信断時の動作まで段階的に検討してください。

動かないときに確認する場所

センサー値が常に0または1023なら、A0への配線、VCCとGNDの接続、センサー基板の故障を確認します。値がほとんど変わらないときは、センサー表面の保護膜を傷つけていないか、土との接触が十分かを見ます。

ポンプだけが動かない場合は、ポンプ用電源の電圧と電流容量を先に確認してください。ArduinoのLEDが点いていても、ポンプに必要な電力が届いているとは限りません。MOSFETの入力信号、共通GND、ポンプ極性、チューブ内の詰まりも順番に調べます。

給水量が多すぎるときは、プログラムの動作時間を短くするだけでなく、チューブを細くする、吐出口を高くする、ポンプをPWM制御する方法があります。反対に水が届かないときは、ポンプの揚程とチューブ長を確認します。小型ポンプには持ち上げられる高さの限界があり、コードだけでは解決できない問題もあります。

装置が動いたら、数日間は時刻、センサー値、給水時間、土の見た目をノートに残してみてください。その記録があれば、次は液晶表示を加える、Wi-Fiで通知する、複数の鉢を個別に制御するといった改良にも根拠を持って進められます。手で触れた土の感覚と数値を結び付けるところから、自分だけの育てやすい仕組みを育てていきましょう。