← All projects

IEIndustrial Automation & EmbeddedB.Tech Capstone, SRM University, June 2023

Advanced Irrigation Automation System (AIAS)

Capstone smart-irrigation system — a NodeMCU RC rover with a submersible pump distributes water across irregular garden areas, while capacitive soil-moisture + DHT11 sensors stream to ThingSpeak for real-time analytics and remote threshold management.

  • Smart Irrigation
  • NodeMCU
  • ThingSpeak
  • Cloud Feedback Loop
  • RC Rover

Hardware & Architecture

  • NodeMCU (ESP8266) + SIM800L GSM/GPRS module for networking.
  • Capacitive soil-moisture sensor and DHT11 temperature/humidity sensor.
  • L298N motor controller, 4x DC motors, 5V relay module, submersible mini water pump, 2200mAh LiPo battery.

Key Highlights

  • RC rover with submersible pump + sprinkler navigates and evenly waters irregularly shaped garden areas.
  • Continuous soil/temperature/humidity monitoring prevents overwatering and root rot.
  • Cloud feedback loop streams sensor data to ThingSpeak for visualization, analytics, and remote threshold management.

Images

Code

aias_rc_control.inoRC Web-Server Motor Controlcpp
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ArduinoOTA.h>

// Connections for drive Motor FR & BR
int enA = D1;
int in1 = D2;
int in2 = D3;
// Connections for drive Motor FL & BL
int in3 = D4;
int in4 = D5;
int enB = D6;

const int buzPin = D7;     // Buzzer pin
const int ledPin = D8;     // LED pin
const int wifiLedPin = D0; // WiFi connection indicator

String command;    // String to store app command state
int SPEED = 1023;  // Motor speed 330-1023

ESP8266WebServer server(80);

void setup() {
  Serial.begin(115200);
  pinMode(buzPin, OUTPUT);
  pinMode(ledPin, OUTPUT);
  pinMode(wifiLedPin, OUTPUT);
  digitalWrite(wifiLedPin, HIGH);
  pinMode(enA, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  pinMode(enB, OUTPUT);
  analogWrite(enA, SPEED);
  analogWrite(enB, SPEED);

  // WiFi Connection Logic
  if (WiFi.status() == WL_CONNECTED) {
    digitalWrite(wifiLedPin, LOW);
  } else {
    WiFi.mode(WIFI_AP);
    // AP setup omitted for brevity
    digitalWrite(wifiLedPin, HIGH);
  }
}

void loop() {
  ArduinoOTA.handle();
  server.handleClient();
  command = server.arg("State");

  // Movement Switch Logic
  if (command == "F") Forward();
  else if (command == "B") Backward();
  else if (command == "R") TurnRight();
  else if (command == "L") TurnLeft();
  else if (command == "S") Stop();
  // ... Additional speed and lighting commands
}
aias_thingspeak.inoThingSpeak IoT Data Loggingcpp
#include <ESP8266WiFi.h>
#include <SPI.h>
#include <Wire.h>
#include <DHT.h>

#define DHTPIN D4
DHT dht(DHTPIN, DHT11);

String apiKey = "C251CK6FHOR7PST4";
const char *ssid = "AIAS";
const char *pass = "1234567890";
const char *server = "api.thingspeak.com";

void loop() {
  // Data collection logic omitted for brevity
  if (client.connect(server, 80)) {
    String postStr = apiKey;
    postStr += "&field1=";
    postStr += String(soilmoisturepercent);
    postStr += "&field2=";
    postStr += String(h); // Humidity
    postStr += "&field3=";
    postStr += String(t); // Temperature
    postStr += "&field4=";
    postStr += String(relaypin);
    postStr += "\r\n\r\n";

    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(postStr.length());
    client.print("\n\n");
    client.print(postStr);
  }
}