土壌の湿度を測定出来るモジュールを買って見ました。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()の値を信じるのでしょうか。
最後に
使い方自体は非常に簡単です。でも実際に使う場合は土壌の湿り気とセンサー値の相関を取る必要が有る様に思えます。