Tech Gyan Set
Published © MIT

Smart Water Pump Control with Android App & Firebase

Control a water pump remotely using an Android app and Firebase, with automatic ON/OFF based on soil moisture.

BeginnerShowcase (no instructions)8 hours72
Smart Water Pump Control with Android App & Firebase

Things used in this project

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Code

πŸ”Ή 1️⃣ ESP32 / ESP8266 Arduino Code

C/C++
(Soil Moisture + Relay + Firebase)
/*************************************************
 * 1. Libraries Include
 *************************************************/
#include <WiFi.h>
#include <FirebaseESP32.h>

/*************************************************
 * 2. WiFi Credentials
 *************************************************/
#define WIFI_SSID "YOUR_WIFI_NAME"
#define WIFI_PASSWORD "YOUR_WIFI_PASSWORD"

/*************************************************
 * 3. Firebase Credentials
 *************************************************/
#define FIREBASE_HOST "your-project-id.firebaseio.com"
#define FIREBASE_AUTH "YOUR_FIREBASE_DATABASE_SECRET"

/*************************************************
 * 4. Firebase Objects
 *************************************************/
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;

/*************************************************
 * 5. Pin Definitions
 *************************************************/
#define SOIL_PIN 34      // Analog pin for soil moisture sensor
#define RELAY_PIN 26     // Digital pin for relay

/*************************************************
 * 6. Threshold Value
 *************************************************/
int moistureThreshold = 1800;  
// Isse kam value = soil dry

/*************************************************
 * 7. Setup Function
 *************************************************/
void setup() {
  Serial.begin(9600);

  pinMode(RELAY_PIN, OUTPUT);
  digitalWrite(RELAY_PIN, HIGH); // Relay OFF initially

  // WiFi Connection
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("Connecting to WiFi");

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nWiFi Connected");

  // Firebase Configuration
  config.host = FIREBASE_HOST;
  config.signer.tokens.legacy_token = FIREBASE_AUTH;

  Firebase.begin(&config, &auth);
  Firebase.reconnectWiFi(true);

  Serial.println("Firebase Connected");
}

/*************************************************
 * 8. Loop Function
 *************************************************/
void loop() {

  // 8.1 Read Soil Moisture
  int soilValue = analogRead(SOIL_PIN);
  Serial.print("Soil Moisture: ");
  Serial.println(soilValue);

  // 8.2 Send Soil Data to Firebase
  Firebase.setInt(fbdo, "/soilMoisture", soilValue);

  // 8.3 Automatic Control Logic
  if (soilValue < moistureThreshold) {
    digitalWrite(RELAY_PIN, LOW); // Pump ON
    Firebase.setString(fbdo, "/pumpStatus", "ON");
  } else {
    digitalWrite(RELAY_PIN, HIGH); // Pump OFF
    Firebase.setString(fbdo, "/pumpStatus", "OFF");
  }

  // 8.4 Manual Control from App
  if (Firebase.getString(fbdo, "/manualPump")) {
    String command = fbdo.stringData();

    if (command == "ON") {
      digitalWrite(RELAY_PIN, LOW);
    }
    else if (command == "OFF") {
      digitalWrite(RELAY_PIN, HIGH);
    }
  }

  delay(2000); // 2 seconds delay
}

πŸ”Ή 2️⃣ Firebase Database Structure

C/C++
πŸ“Œ Explanation:

soilMoisture β†’ Sensor ka live data

pumpStatus β†’ Pump ka current status

manualPump β†’ Android App se command
/soilMoisture : 1700
/pumpStatus  : "ON"
/manualPump  : "OFF"

πŸ”Ή 3️⃣ Android App Logic (Firebase Side)

C/C++
πŸ“± Button ON Click
πŸ“± Button OFF Click
πŸ“± Soil Moisture Read
databaseReference.child("manualPump").setValue("ON");


databaseReference.child("manualPump").setValue("OFF");


databaseReference.child("soilMoisture")
.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        int value = snapshot.getValue(Integer.class);
        textView.setText("Soil: " + value);
    }

    @Override
    public void onCancelled(DatabaseError error) { }
});

Credits

Tech Gyan Set
9 projects β€’ 1 follower

Comments