#include <DHT.h>
// ----- Pin Definitions -----
#define DHTPIN D4 // DHT22 Data Pin connected to D4 (GPIO2)
#define DHTTYPE DHT22 // DHT22 Sensor
#define SOIL_PIN A0 // Soil Moisture Sensor analog pin
#define RELAY_PIN D2 // Relay module connected to D2 (GPIO4)
#define LED_PIN D5 // LED (pump indicator) on D5 (GPIO14)
DHT dht(DHTPIN, DHTTYPE); // Initialize DHT
void setup() {
Serial.begin(115200); // Serial Monitor for debugging
dht.begin(); // Start DHT sensor
pinMode(RELAY_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW); // Pump OFF initially
digitalWrite(LED_PIN, LOW); // LED OFF
}
void loop() {
// ----- Read Sensors -----
float temperature = dht.readTemperature(); // Celsius
float humidity = dht.readHumidity(); // Percentage
int soilMoisture = analogRead(SOIL_PIN); // 0 (wet) to 1023 (dry)
// ----- Print to Serial -----
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" °C | Humidity: ");
Serial.print(humidity);
Serial.print(" % | Soil Moisture: ");
Serial.println(soilMoisture);
// ----- Logic to Control Pump -----
if (soilMoisture > 700) { // Soil is dry
digitalWrite(RELAY_PIN, HIGH); // Turn ON pump
digitalWrite(LED_PIN, HIGH); // Turn ON LED
Serial.println("Soil is dry. Pump ON.");
} else {
digitalWrite(RELAY_PIN, LOW); // Turn OFF pump
digitalWrite(LED_PIN, LOW); // Turn OFF LED
Serial.println("Soil is wet. Pump OFF.");
}
delay(3000); // Delay between readings
}