#define BLYNK_TEMPLATE_ID "TMPL68gBem6_N"
#define BLYNK_TEMPLATE_NAME "System1"
#define BLYNK_AUTH_TOKEN "JtTCjy6oPTBDxxQHCt8sxVlYeDRUE1nz"
#define BLYNK_PRINT Serial // used by Blynk to access Serial Monitor for troubleshooting
#define DrySoil 300
#define WetSoil 500
// Sensor pins
#define sensorPower 12
#define sensorPin 34 // GPIO 32 on ESP32-WROOM-32
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "YourNetworkName";
char pass[] = "YourPassword";
// Declaring a global variable for the sensor data
int sensorVal;
BlynkTimer timer; // Creating a timer object
void setup() {
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
timer.setInterval(1000L, myTimerEvent); // Starting a timer
pinMode(sensorPower, OUTPUT);
// Initially keep the sensor OFF
digitalWrite(sensorPower, LOW);
}
void myTimerEvent() {
Blynk.virtualWrite(V0, sensorVal);
}
void loop() {
Blynk.run();
timer.run();
// Read sensor value
sensorVal = readSensor();
Serial.print("Analog Output: ");
Serial.println(sensorVal);
// Determine status of our soil
if (sensorVal < DrySoil) {
Serial.println("Dry Soil. Time for watering!");
} else if (sensorVal >= DrySoil && sensorVal < WetSoil) {
Serial.println("Perfect. Well done!");
} else {
Serial.println("Wet Soil. Be careful!");
}
delay(1000);
}
// This function returns the analog soil moisture measurement
int readSensor() {
digitalWrite(sensorPower, HIGH); // Turn the sensor ON
delay(10); // Allow power to settle
int val = digitalRead(sensorPin); // Read the digital value from the sensor
digitalWrite(sensorPower, LOW); // Turn the sensor OFF
return val; // Return the digital moisture value
}