M5Stamp Picoでできること 〜静電容量型土壌水分センサをつかう

畑にIoTデバイスを設置し、そこに安価なセンサをつないで、いくつかの環境データを採取しようと考えています。

その際には、気温や湿度などの他に、「土壌水分量」も採取しようと思っています。

ただ、電子工作でよく見かける「抵抗感知型」の土壌水分センサでは、電極がすぐに腐食してしまいます。
以前、ベランダの植木鉢に、抵抗感知型の土壌水分センサを挿していたのですが、わずか一週間ほどでこのような状態になってしまいました。

そんな折、アマゾンで非常に安価な「静電容量型」の土壌水分センサを見つけました。


静電容量型なので、電極は露出しておらず、抵抗感知型のように、すぐにダメになってしまう可能性は少なそうです。

なお、土壌水分センサについて色々と調べていくと、土壌水分量を高精度に測定するのは非常に難しいようで、このセンサではまともな値は測定できないようです。

今回は、畑に水やりが必要かどうか程度の、相対的な傾向を見ることができればよいので、このセンサを試してみることにしました。

センサの端子は「電源」「グランド」「アナログ出力」の3本です。
水分量が「高い」と出力電圧が「低く」、「低い」と出力電圧が「高く」なります。

M5Stamp Picoに、以下のような非常に簡単なスケッチを書き込みました。
100ms毎に、センサで測定したアナログ値を、シリアルモニタに出力するだけのものです。




#define SENSOR_VDD 25

void setup() {
  Serial.begin(115200);

  pinMode(SENSOR_VDD, OUTPUT);
  digitalWrite(SENSOR_VDD, HIGH);
  pinMode(36, INPUT); // Capacitive Soil Moisture Sensor
}

void loop() {
  uint16_t moist = analogRead(36);
  Serial.println(moist);
  delay(100);
}

なお、将来的には、このセンサをつないだIoTデバイスを、ディープスリープさせながら低電力(ソーラーパネル)で長期稼働させようと目論んでいます。
ディープスリープ中は、センサにも電源供給したくないので、センサの電源はM5Stamp Picoの25番ピンにつなぎ、スケッチで25番ピンをHIGH固定しています。

M5Stamp Picoと土壌水分センサを接続します。

センサを、コップに入れた水の中に入れたり出したりして、その時の値をシリアルプロッタで確認しました。

水から出した時には「2300程度」、入れた時には「1100程度」になりました。

また、当たり前のことですが、センサのどの辺りまで水に入れるかによって、値が変わります。
実際に畑で使う際には、土に挿し込む際の深さを、常に一定にしておく必要があります。

非常に簡単に、動作確認をすることができました。

あとは実際に畑に設置し、「長期間にわたり使用できるか?」「土の乾燥具合の変化をきちんと観測できるか?」について調査していきたいと思います。


なお、私がM5Stack、M5StickCの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。


ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。


このサイトで書いている、M5Stackシリーズ(M5Stack、M5StickCなど)に関するブログ記事を、「さとやまノート」という別のブログページに、あらためて整理してまとめました。

他のM5Stackシリーズの記事にも興味のある方は「さとやまノート」をご覧ください。