戻る

土壌湿度センサを使って、植物のまわりの土の湿度を測ってみよう。
土壌湿度センサは、DFRobot から販売されている Analog Capacitive Soil Moisture Sensor SEN0193 のジェネリック版を使用しています。
また、Blynkをつかって遠隔からもスマホで土壌の湿度を

ESP32の右側に見えるのがDiyStudio 土壌湿度センサです。
土壌の水分量を容量(キャパシタンス)を用いて間接的に測定します。センサーの2つの電極間の媒体(土壌)の誘電率が変化することで、キャパシタンスの変化をとらえます。水分は高い誘電率を持つため、水分量が多いとキャパシタンスが増大します。キャパシタンスの変化を電圧信号に変換することで計測します。今回用いたセンサでは、乾燥状態(室内)では、2650,水に浸すと1050の値が計測できました。ESP32では、3.3Vを4096分割表示されるので、室内では、2.1V、水に浸すと0.85Vが発生していることになります。

参考

PictoBlox Code Download

//This c++ code is generated by PictoBlox

//Gloabl Variables are declared here
float humidity;
float percentage;

void setup() {
	//put your setup code here, to run once:
	pinMode(36, INPUT);
	
	
}

void loop() {
	//put your main code here, to run repeatedly:
	
	
	humidity = analogRead(36);
	percentage = (100 - (((humidity - 1050) / 1600) * 100));
	delay(0.5 * 1000);
}

Blynkをつかって、水分状態をスマホで確認する
下左写真は、スマホでの確認状況。現在の湿り気は、70%の状態にあることがわかる。

C++Code Download (password)

#define BLYNK_TEMPLATE_ID "Blynkから取得する"
#define BLYNK_TEMPLATE_NAME "Blynkから取得する"
#define BLYNK_AUTH_TOKEN "Blynkから取得する" // 認証トークン(Blynk Web Consoleから取得)

#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>

// WiFi接続情報
char ssid[] = "C40FA61150C5-2G";
char pass[] = "mr6x6senygdykp";

// センサーのアナログピン
#define WATER_SENSOR_PIN 36 // ESP32のA0/GPIO36

BlynkTimer timer;

// センサー値を取得してBlynkに送信
void sendSensorValue() {
  int sensorValue = analogRead(WATER_SENSOR_PIN); // アナログ値を読み取る

  Serial.println(sensorValue);

 //空気中にセンサを置いた時の値(1050程度)と、水に浸した時の値(2660)を基準として、0から100の値を設定 

 float percentage =100.0-((sensorValue-1050.0) / 1600.0) * 100.0; // 値をパーセンテージに変換
 Serial.println(percentage);

  Blynk.virtualWrite(V0, percentage); // 仮想ピンV0に値を送信
}

void setup() {
  // シリアルモニタを初期化
  Serial.begin(115200);

  // Blynk接続を開始
  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);

  // センサー値を定期的に送信するタイマーを設定
  timer.setInterval(1000L, sendSensorValue); // 1秒ごとに実行
}

void loop() {
  Blynk.run();   // Blynkの実行
  timer.run();   // タイマーの実行
}