#include <WiFi.h>
#include <FirebaseESP32.h>
#define FIREBASE_HOST "https://irrigation-system-cd539-default-rtdb.firebaseio.com/"
#define FIREBASE_AUTH "irrigation-system-cd539-firebase-adminsdk-fbsvc-c69fec02a7"
// WiFi Credentials
#define WIFI_SSID "your-SSID"
#define WIFI_PASSWORD "your-password"
// Pin Definitions
const int soilMoisturePin = 34; // Potentiometer analog pin (simulating soil moisture)
const int ledPin = 23; // LED pin simulating the pump (GPIO23)
// Firebase Data object
FirebaseData firebaseData;
void setup() {
// Start Serial Monitor
Serial.begin(115200);
// Connect to WiFi
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi!");
// Initialize Firebase
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
// Set up pins
pinMode(soilMoisturePin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
// Read potentiometer value (simulating soil moisture)
int soilMoisture = analogRead(soilMoisturePin);
// Print soil moisture value
Serial.print("Soil Moisture: ");
Serial.println(soilMoisture);
// Control the LED (simulating pump) based on soil moisture
if (soilMoisture < 500) { // If soil is dry (adjust threshold as needed)
digitalWrite(ledPin, HIGH); // Turn LED ON (simulate pump ON)
Serial.println("Pump is ON (LED ON)");
} else {
digitalWrite(ledPin, LOW); // Turn LED OFF (simulate pump OFF)
Serial.println("Pump is OFF (LED OFF)");
}
// Send data to Firebase
Firebase.setInt(firebaseData, "/sensor_data/soil_moisture", soilMoisture);
// Simulate a delay for Firebase communication
delay(5000);
}