土壌湿度計 湿度検出モジュール

土壌の湿度を測定出来るモジュールを買って見ました。5個で999円でした。中国製では無いですが説明書は有りませんでした。上記のリンク先にある説明が全てです。

  • モジュールから出ている3線は、電源、GND 信号。
  • 動作電圧は DC3.3~5.5V
  • 信号のレベルは DC0~3.0V

動作電圧をかけて信号電圧をADCで読み取る仕組みの様です。信号の規格的にESP32を使うのが良さそうなのでESP32を使って動作を確認して見ました。

回路

30ピンのESP32を使って下記のように配線しました。

スケッチ

GPIOポート36の値をADCで読み込み表示しているのみです。いつもはanalogRead()を使っているのですが、今回はanalogReadMilliVolts()も使ってみました。

test.ino

#define AD_PIN 36

void setup() {
  Serial.begin(115200);
  pinMode(AD_PIN, ANALOG);
}

void loop() {
  Serial.printf("%d[mV] ",analogRead(AD_PIN));
  Serial.printf("/ %d[mV]\n", analogReadMilliVolts(AD_PIN));
  delay(500);
}

結果

シリアルモニターに下記の様に表示されました。向かって左がanalogRead()の値、右がanalogReadMilliVolts()の値です。

  • モジュールを触らずに放置の状態
    • analogRead():約2500位の値。
    • analogReadMilliVolts():2200位の値。
  • 手で推奨深度辺りまでセンサーを握った状態
    • analogRead():約1500位の値。
    • analogReadMilliVolts():1340位の値。
    • 湿度が上がると値は小さくなる様です。

2552[mV] / 2259[mV]
2522[mV] / 2246[mV]
2559[mV] / 2244[mV]
2573[mV] / 2209[mV]
1824[mV] / 1574[mV]
1551[mV] / 1412[mV]
1493[mV] / 1388[mV]
1468[mV] / 1348[mV]
1505[mV] / 1360[mV]
2185[mV] / 1930[mV]
2541[mV] / 2252[mV]
2544[mV] / 2267[mV]
2571[mV] / 2255[mV]
2486[mV] / 2279[mV]
  • analogRead()/analogReadMilliVolts()で値が若干違いますが補正のかかっているanalogReadMilliVolts()の値を信じるのでしょうか。

最後に

使い方自体は非常に簡単です。でも実際に使う場合は土壌の湿り気とセンサー値の相関を取る必要が有る様に思えます。