畑に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シリーズの記事にも興味のある方は「さとやまノート」をご覧ください。