#define BLYNK_TEMPLATE_ID "TMPL3vlvFiAmp"
#define BLYNK_TEMPLATE_NAME "Smart Plant Care System"
#define BLYNK_AUTH_TOKEN "BUlPIMwijG33WLlugb6GXTKdpoO5u6o_"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#define DHTPIN 16
#define DHTTYPE DHT22
#define POT_PIN 32
#define LDR_PIN 14
#define RELAY_PIN 19
#define LED_PIN 18
DHT dht(DHTPIN, DHTTYPE);
char ssid[] = "Wokwi-GUEST"; // Wi-Fi SSID
char pass[] = ""; // Wi-Fi password
int soilMoistureThreshold = 100; // Soil moisture threshold (adjust as needed)
void setup() {
Serial.begin(115200);
// Initialize sensors and relay
dht.begin();
pinMode(POT_PIN, INPUT);
pinMode(LDR_PIN, INPUT);
pinMode(RELAY_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
// Connect to Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
Serial.println("Setup complete. Waiting for sensor data...");
}
void loop() {
Blynk.run();
// Read sensor values
int soilMoisture = analogRead(POT_PIN);
int lightLevel = analogRead(LDR_PIN);
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Print values to Serial Monitor for debugging
Serial.print("Soil Moisture: ");
Serial.println(soilMoisture);
Serial.print("Light Level: ");
Serial.println(lightLevel);
Serial.print("Temperature: ");
Serial.println(temperature);
Serial.print("Humidity: ");
Serial.println(humidity);
// Check if DHT sensor read failed
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
}
// Send values to Blynk app
Blynk.virtualWrite(V1, soilMoisture); // Soil moisture
Blynk.virtualWrite(V0, lightLevel); // Light level
Blynk.virtualWrite(V3, temperature); // Temperature
Blynk.virtualWrite(V4, humidity); // Humidity
Blynk.virtualWrite(V5, digitalRead(LED_PIN)); // LED status (HIGH or LOW)
// Pump control logic based on soil moisture level
if (soilMoisture < soilMoistureThreshold) {
digitalWrite(RELAY_PIN, HIGH); // Activate relay (pump on)
digitalWrite(LED_PIN, HIGH); // Optional LED to indicate pump status
Serial.println("Pump ON");
} else {
digitalWrite(RELAY_PIN, LOW); // Deactivate relay (pump off)
digitalWrite(LED_PIN, LOW); // Turn off LED
Serial.println("Pump OFF");
}
delay(1000); // Wait before the next reading
}