#define BLYNK_TEMPLATE_NAME "Plant Monitoring System"
#define BLYNK_AUTH_TOKEN "LMuyt9_ENbhDr2dj2Wv_-yeKzjr3tjqr"
#define BLYNK_TEMPLATE_ID "TMPL52XuKW4mW"
#include <DHT.h>
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#define DHT_PIN 2
#define DHT_TYPE DHT22
#define LDR_PIN 32
#define POT_PIN 33
DHT dht(DHT_PIN, DHT_TYPE);
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASS ""
unsigned long previousMillis = 0;
const long interval = 1000; // Interval for sensor reading
void setup() {
Serial.begin(115200);
connectToWiFi();
Blynk.begin(BLYNK_AUTH_TOKEN, WIFI_SSID, WIFI_PASS);
dht.begin();
}
void loop() {
if (WiFi.status() != WL_CONNECTED) {
connectToWiFi();
}
Blynk.run();
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
readSensors();
}
}
void connectToWiFi() {
WiFi.begin(WIFI_SSID, WIFI_PASS);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(" Connected!");
}
int readAnalogStable(int pin) {
int total = 0;
for (int i = 0; i < 10; i++) {
total += analogRead(pin);
delay(10); // Small delay between readings
}
return total / 10;
}
void readSensors() {
// Read temperature and humidity from DHT sensor
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Read light intensity from LDR
int lightIntensity = readAnalogStable(LDR_PIN);
// Read soil moisture simulation from potentiometer
int soilMoisture = readAnalogStable(POT_PIN);
int soilMoisturePercentage = map(soilMoisture, 0, 1023, 0, 100);
// Print sensor values to the console
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println(" %");
Serial.print("Light Intensity: ");
Serial.print(lightIntensity);
Serial.println(" %");
Serial.print("Soil Moisture: ");
Serial.print(soilMoisturePercentage);
Serial.println(" %");
// Send data to Blynk
Blynk.virtualWrite(V0, temperature);
Blynk.virtualWrite(V1, humidity);
Blynk.virtualWrite(V5, lightIntensity);
Blynk.virtualWrite(V6, soilMoisturePercentage);
}