Hari sankar S
Created September 1, 2020 © GPL3+

Smart irrigation system using IoT

Application of Internet of Things to make the irrigation process automated and get valuable data

Beginner3 hours23
Smart irrigation system using IoT

Things used in this project

Hardware components

NodeMCU ESP8266 Breakout Board
NodeMCU ESP8266 Breakout Board
×1
Relay Module (Generic)
×1
soil moisture sensor module
×1
water pump
×1
Jumper wires (generic)
Jumper wires (generic)
×1
9V battery (generic)
9V battery (generic)
×1
SparkFun Breadboard Power Supply 5V/3.3V
SparkFun Breadboard Power Supply 5V/3.3V
×1
Linear Regulator (7805)
Linear Regulator (7805)
×1
IRF630 MOSFET
×1
Breadboard (generic)
Breadboard (generic)
×1

Software apps and online services

ThingSpeak API
ThingSpeak API
MATLAB THINGVIEW

Story

Read more

Schematics

Circuit diagram

The humidity sensor is optional land mosfet can be used to drive relay

Code

Smart irrigation

C/C++
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <SPI.h>
#include <MFRC522.h>









const char* ssid = "wifi name";// 
const char* password = "wifi password";
//WiFiClient client;
char server[] = "api.thingspeak.com";   //eg: 192.168.0.222


WiFiClient client;  

            // moisteure sensor pin
const int motorPin = 5;
const int moisturePin=A0;
unsigned long interval = 10000;
unsigned long previousMillis = 0;
unsigned long interval1 = 1000;
unsigned long previousMillis1 = 0;
float moisturePercentage;  
int motorstatus;//moisture reading
 


void setup()
{
 Serial.begin(115200);
  delay(10);
  pinMode(5, OUTPUT);
  digitalWrite(5, LOW);
  // Connect to WiFi network
 
  Serial.print("Connecting to ");
  Serial.println(ssid);
 
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
 
  // Start the server
//  server.begin();
  Serial.println("Server started");
  Serial.print(WiFi.localIP());
  delay(1000);
  Serial.println("connecting...");
 }
void loop()
{ 
  unsigned long currentMillis = millis();
  
  int sensor =analogRead(A0);
  moisturePercentage= ( 1000- (sensor*(1000.0/1024.0 ) ));

   motorstatus=digitalRead(motorPin);
 
  if ((unsigned long)(currentMillis - previousMillis1) >= interval1) {
    Serial.print("Soil Moisture is  = ");
    Serial.println(moisturePercentage);
    
    Serial.println("%");
    previousMillis1 = millis();
  }

if (moisturePercentage > 200) {
  digitalWrite(5, LOW);         // tun on motor
}
        //turn on motor pump

else {
  digitalWrite(5, HIGH);          // turn off mottor
}

if ((unsigned long)(currentMillis - previousMillis) >= interval) {

   Sending_To_thingspeak();           //send data to thing speak
  previousMillis = millis();
  client.stop();
}
  
  delay(10000); // interval
 }

 void Sending_To_thingspeak()   //CONNECTING WITH MYSQL
 {
   if (client.connect(server, 80)) {
    Serial.println("connected");
     motorstatus=digitalRead(5);
     Serial.println(motorstatus);
    // Make a HTTP request:
    Serial.print("GET /update?api_key=<api key>&field1=");
    client.print("GET /update?api_key=<api key>&field1=");     //YOUR URL
    client.print(moisturePercentage);
     Serial.println(moisturePercentage);
    Serial.print("GET /update?api_key=<api key>&field2=");
    client.print("GET /update?api_key=<api key>&field2=");
    client.print(motorstatus);
     Serial.println(motorstatus);
        
    client.print(" ");      //SPACE BEFORE HTTP/1.1
    client.print("HTTP/1.1");
    client.println();
    client.println("Host: api.thingspeak.com");
    client.println("Connection: close");
    client.println();
  } else {
    // if you didn't get a connection to the server:
    Serial.println("connection failed");
  }
 }

Credits

Hari sankar S
1 project • 0 followers
Thanks to circuit digest.

Comments