Arduinoと土壌センサで土の中の水分量を可視化する

Arduino

はじめに

最近息子が「花を育てたい」と言うので、ニチニチソウやペチュニアなどを買い毎日水やりをしているのですが、どうせならお花が「お腹いっぱい」ということがわかるようにしたいと思い今回Arduinoと土壌センサを使って土の中の水分量を可視化してみました。

Arduinoとセンサを使うと色々なことができて便利ですよね。今回作成したものはまだまだ改良の余地はありますがとりあえず完成したので紹介します。

用意するもの

今回購入したものは以下の3つです。すべてAmazonで購入しました。

  • SparkFun Pro Micro互換品(Amazonで600円くらい)
  • GROVE – 水分センサ(Amazonで800円くらい)
  • I2CインタフェースのOLEDスクリーン(Amazon で800円くらい)

作成

このような感じで配線を行います。今回はPro Microを使用しましたが、Arduino Unoなどを使う場合も同様に配線します。

Pro Microに書き込むプログラムは以下になります。

#include<Wire.h>
#include<Adafruit_GFX.h>
#include<Adafruit_SSD1306.h>

// ディスプレイ変数の宣言
Adafruit_SSD1306 display(-1);
// 土壌センサのピン
const int SENSER_PIN = 20;

void setup() {
  // ディスプレイの初期化
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
}

void loop() {

  // 土壌センサの値を読み取る
  int senser_val;
  senser_val = analogRead( SENSER_PIN );
  
  // ディスプレイをクリア
  display.clearDisplay();

  // 出力する文字の大きさ
  display.setTextSize(2);
  // 出力する文字の色
  display.setTextColor(WHITE);
  // 文字の一番端の位置
  display.setCursor(0, 0);

  // 出力する文字列
  display.println(senser_val);

  // ディスプレイへの表示
  display.display();
  // 1000msec待つ
  delay(1000);
}

動作確認

作成したものがこちらになります。Pro Microの電源は家に転がっていたスマホのバッテリーを使うことにしました。

実際に動かしたときの動画です。
まずは水をあげていない(乾いている)状態で測定したものです。

水をあげていない状態

次が水をあげた状態で測定したものです。

水をあげた状態

私の環境の場合、水をあげていない鉢の値は100前後、水をあげた鉢の値は600〜700程度でした。環境によって差があると思うのでもう少しサンプリングしていこうと思います。

さいごに

今回はArduino(Pro Micro)と土壌センサを使って土の中の水分量を可視化してみました。水分量がわかるとモーターなどを使って自動水やり機などを作ることができるので今後やってみたいと思っています。また、現状はリアルタイムで値を確認することしかできませんが、今後はESP32-WROOM-32などを使って定期的に値を取得していこうと思います。

コメント

タイトルとURLをコピーしました