Arduino Uno R4で植物の自動水やりシステムを構築する方法

  • URLをコピーしました!

※本ページはアフィリエイト広告を利用しています

植物の健康を維持するためには、適切な水やりが欠かせません。しかし、忙しい日常の中で定期的に水やりをするのは難しいこともあります。

そこで、今回はArduino Uno R4を活用した自動水やりシステムを作成してみました。

本記事では、SunFounder Ultimate Sensor KitArduino Uno R4 Minimaを使用して、簡易的な自動水やりシステムを構築する方法を紹介します。

本記事は製品をSunFounder様よりご提供頂き作成しています。

目次

SunFounder Ultimate Sensor Kit with Original Arduino Uno R4 Minimaとは?

SunFounder Ultimate Sensor Kit with Original Arduino Uno R4 Minimaは、電子工作に興味を持つ初心者からプロフェッショナルまで様々なアプリケーションの作成に必要なハードウェアがパッケージ化されたスターターキットです。

このキットには、マイコンボードArduino Uno R4 Minima本体をはじめ、様々なセンサーアクチュエータが含まれており、幅広いプロジェクトに対応できます。

キット内容

キットには以下のようなセンサーアクチュエータが多数含まれています。

Arduino Uno R4 Minima

Arduino UNO R4 Minimaは、Renesas製RA4M1マイクロコントローラを搭載した32ビットマイコンボードです。

このボードは、クロック速度48 MHz、256 kBのフラッシュメモリ、32 kBのSRAMを提供します。また、内蔵の12ビットDAC、CANバス、リアルタイムクロック(RTC)、HIDサポートを備え、USB-Cポートも搭載しています。

動作電圧は5Vですが、入力電圧範囲は6〜24Vに対応しています。従来のUNOボードと同じフォームファクタとピン配置を維持し、既存のシールドとの互換性を保ちつつ、高い性能を発揮します

センサーモジュール

キットには以下のようなセンサモジュールが含まれています。

  1. 超音波センサーモジュール(HC-SR04)
  2. ガス/煙センサーモジュール(MQ2)
  3. 炎センサーモジュール
  4. 振動センサーモジュール(SW-420)
  5. 加速度センサー & ジャイロスコープモジュール(MPU6050)
  6. フォトレジスタモジュール
  7. IR 赤外線障害物回避センサーモジュール
  8. 容量性土壌湿度モジュール
  9. 雨滴検出モジュール
  10. 温度と湿度センサーモジュール(DHT11)
  11. PIRモーションモジュール(HC-SR501)
  12. 温度、湿度、気圧センサー(BMP280)
  13. 脈拍酸素計および心拍数センサー(MAX30102)
  14. リアルタイムクロックモジュール(DS1302)
  15. タッチセンサモジュール
  16. 赤外線速度センサモジュール(LM393)
  17. 飛行時間(ToF)マイクロLiDAR距離センサ(VL53L0X)

アクチュエータ

キットには以下のようなアクチュエータモジュールが含まれています。

  1. サーボモータ(SG90)
  2. 遠心ポンプ
  3. TTモーター
  4. 5V リレーモジュール
  5. パッシブブザーモジュール

ユーザーインタフェース

キットには以下のようなUIモジュールが含まれています。

  1. ボタンモジュール
  2. ポテンショメータモジュール
  3. ジョイスティックモジュール
  4. I2C LCD 1602
  5. OLEDディスプレイモジュール
  6. 信号機モジュール
  7. RGB モジュール

通信モジュール

キットには以下のような通信モジュールが含まれています。

  1. ESP8266モジュール
  2. JDY-31 Bluetooth モジュール

日本国内で技適を取得していないモジュールは使用できませんのでご注意ください。

Ultimate Sensor Kit with Original Arduino Uno R4 Minimaの特徴
  • 多様なプロジェクトに対応: 多数のセンサーとモジュールを使用することで、環境モニタリング、ホームオートメーション、ロボット工学など、さまざまなプロジェクトに対応可能です。
  • 教育向けに最適: 詳細なプロジェクトガイドと豊富なドキュメントが提供されており、教育機関や個人の学習に最適です。(日本語ドキュメント完備)
  • 高い互換性: Arduino Uno R4 Minimaを中心に設計されているため、既存のArduinoプロジェクトやライブラリと高い互換性があります。

Ultimate Sensor Kit with Original Arduino Uno R4 Minimaの入手先

Ultimate Sensor Kit with Original Arduino Uno R4 MinimaはAmazonSunfounder公式サイトで入手可能です。

Amazon

Amazonの以下のページから購入することができます。

SunFounder公式サイト

SunFounder公式サイトから購入できます。(日本にも発送してもらえます)
公式サイトでは頻繁にセールが行われており安く入手できることがありますので、チェックしてみてください。

自動水やりシステムのハードウェア構成

今回作成した自動水やりシステムのハードウェア構成は以下の公式ドキュメントをベースに作成しました。

今回はネットワークは使用せず、ローカルでArduinoのみで制御する構成となっています。

1. Arduino UNO R4 Minima

Arduino UNO R4 Minimaは、システムの中心となるマイクロコントローラボードです。プログラムを実行し、センサーからのデータを処理し、アクチュエータを制御します。このボードは、簡単にプログラムできるうえ、多数のセンサーやアクチュエータと互換性があります。

2. 土壌湿度センサー

土壌湿度センサーは、土壌の湿度レベルを測定するために使用されます。2つの金属プローブを土壌に差し込み、土壌の電気抵抗を測定します。湿度が高いほど電気抵抗は低く、湿度が低いほど電気抵抗は高くなります。このデータをもとに、Arduinoが土壌の湿度を判断します。

3. 水ポンプ

水ポンプは、必要に応じて水を植物に供給するために使用されます。Arduinoからの信号によってオン・オフが制御され、土壌湿度が一定のレベル以下になったときに水を供給します。このポンプは小型で、低電力で動作するため、家庭での使用に適しています。

4. リレー

リレーは、Arduinoと水ポンプを接続するために使用されます。Arduinoの出力信号は非常に低電圧ですが、水ポンプの動作にはより高い電圧が必要です。リレーはこの電圧の差を調整し、安全に水ポンプを制御する役割を果たします。

5. 電源アダプタ

システム全体の電力供給を担う電源アダプタも重要です。Arduinoや水ポンプ、センサーに適切な電力を供給するために、安定した電源が必要です。

今回はポンプも駆動することができる9Vの電池がキットに含まれているのでそれを使用します。

自動水やりシステムのソフトウェア

ここからはArduinoで実行するプログラム(Arduinoスケッチ)について解説します。

Arduinoスケッチの処理内容

こちらのArduinoスケッチは、土壌の水分量を監視し、必要に応じて自動的に水やりを行うシステムを制御します。特に乾燥した土壌に水を供給するために、水分が設定された閾値未満になると水ポンプを起動します。逆に、土壌が湿っている場合はポンプを停止させます。

全体のソースコード

/*
  このArduinoコードは、土壌水分センサーを用いた自動水やりシステムを制御するために設計されています。
  土壌の水分が設定した閾値を下回ると、システムは水ポンプを起動します。

  ボード: Arduino Uno R4 (または R3)
  コンポーネント: 容量性土壌水分センサーおよび水ポンプ
*/

// 水ポンプのピン設定
const int pump1A = 9;  // ポンプ制御用ピン
const int pump1B = 10; // ポンプ制御用ピン(未使用)
bool pumpStatus = false;  // ポンプの状態(falseはOFF, trueはON)

// 土壌水分センサーの定義
const float moistureInAir = 535;   // 空中でのセンサーの値
const float moistureInWater = 280; // 水中でのセンサーの値
const int sensorPin = A0;          // センサーピン
int sensorValue = 0;               // センサーからの生データ
float moisturePercentage = 0;      // 土壌水分のパーセンテージ計算値

int waterThreshold = 30;  // 水やりを開始する土壌水分の閾値(パーセンテージ)

void setup() {
  Serial.begin(9600);         // シリアル通信の開始(ボーレート9600)
  pinMode(pump1A, OUTPUT);    // pump1Aを出力として設定
}

void loop() {
  sensorValue = analogRead(sensorPin);  // 土壌水分センサーから値を読み取る
  moisturePercentage = calculateMoisturePercentage(sensorValue);  // 水分パーセンテージを計算

  Serial.print("Soil Moisture Percentage: ");
  Serial.println(moisturePercentage);

  if (moisturePercentage < waterThreshold) {
    if (!pumpStatus) {
      turnOnPump();  // ポンプをONにする
    }
  } else {
    if (pumpStatus) {
      turnOffPump();  // ポンプをOFFにする
    }
  }
}

float calculateMoisturePercentage(int sensorValue) {
  // 土壌水分パーセンテージを計算
  return 100.0 * (1 - (float)(sensorValue - moistureInWater) / (moistureInAir - moistureInWater));
}

void turnOnPump() {
  digitalWrite(pump1A, HIGH);  // ポンプ1AにHIGH信号を送る
  pumpStatus = true;           // ポンプの状態をONに設定
  Serial.println("Pump turned ON");
}

void turnOffPump() {
  digitalWrite(pump1A, LOW);   // ポンプ1AにLOW信号を送る
  pumpStatus = false;          // ポンプの状態をOFFに設定
  Serial.println("Pump turned OFF");
}

実行結果

実際に自動水やりシステムを動作させた動画です。

画面右の土壌水分センサーを水の中につけると土の中が水分で満たされていると判定され、ウォーターポンプが正しく停止することが確認できました。

まとめ

SunFounder Ultimate Sensor KitとArduino Uno R4 Minimaを用いた自動水やりシステムは、土壌水分をリアルタイムで監視し、必要に応じて自動で水やりを行います。

このシステムにより、植物の適切な水分管理が容易になり、忙しい日々でも安心して植物を育てることができます。ぜひ、このシステムを導入して、植物の自動栽培を体験してみてください。

それでは、また次の記事でお会いしましょう。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次