![見出し画像](https://assets.st-note.com/production/uploads/images/165521699/rectangle_large_type_2_e62eb110c0e03e50fc1f11bc7a4462c9.jpeg?width=1200)
【ESP32 プログラム】土壌湿度計
土や水苔など植物を植えている部分の水分量を検出するセンサを用いたESP32のプログラムを作成してみます。
土壌の湿度、要するに土に含まれれる水分量を定量的に知ることができれば、乾燥させ過ぎたり、水のやり過ぎたりすることを防ぐことができたり、給水装置と組み合わせることで自動で植物への水分量をコントロールすることもできます。
結線図
図1に結線図を示します。今回使う土壌湿度センサは3つの端子があります。この向かって右側は電源(3.3V)と左側はGND、中央は信号(電圧)です。電源とGNDはESP32のそれぞれのポートに接続します。信号ポートは今回はGPIO12に接続することにします。
![](https://assets.st-note.com/img/1734105688-LnVMBTuz0jtavHIwRgm3ipZf.png?width=1200)
プログラム
ESP32のプログラムを以下に示します。
信号は電圧としてESP32に入力されますので、GPIOの12pinの電圧を「analogRead」で取得するだけです。今回は取得した値をシリアルモニタに表示してみます。
空気中の時の値と、極端にコップの水へ入れた時の値を見比べてみると土壌の湿度が高くなるとどのような値になるかわかります。
このセンサは水分量によって電圧が変化するだけですので、使う人が水分量を規定してあげる必要があります。
// 土壌湿度センサの接続ピン
#define SOIL_SENSOR 12
void setup() {
// シリアルモニタを初期化
Serial.begin(115200);
}
void loop() {
// アナログ値を取得
int sensorValue = analogRead(SOIL_SENSOR);
// 土壌湿度センサの値をリアルモニタに表示
Serial.print("Soil Moisture Level: ");
Serial.println(sensorValue);
// 計測間隔 1[s]
delay(1000);
}
購入部品
最新情報は「電子工作お買い物一覧」の記事を参照ください。
リンク切対応や代替部品の紹介もしています。