NodeMCU water controll with autocuff

How the tool works

We put the microcontroller in the water Pump power supply section with Relay.If water switch in trigger(FULL) then it will cut of the relay power(Machine off) with Buzzer indicating the water tank is full. We use blynk to monitoring the value. The microcontroller which connected to internet connection trigger ON/OFF to blynk cloud and the cloud will send the data to our app(remotely turn on/off the machine).

RequiredEquipment

Hardware Component

  • ESP8266 module
  •  USB Cable
  • Water switch
  •  buzzer
  •  Wires
  • Button
  • 5v Relay switch
  • Software Os and Apps(Arduino IDE)

Arduino Code

#include <Blynk.h>

int relayPin = 5; // D1(gpio5)

int buttonPin = 4; //D2(gpio4)

int buzzerPin = 15; //D8(gpio15)

int TANK1 = 14; //D5(gpio14)

int buttonState=0;

int switchState = 0;

int oldSwitchState = 0;

int lightsOn = 0; // is the switch on = 1 or off = 0

int TANK1flowState = 0;

int buzzerstate = 0;

#define BLYNK_PRINT Serial

#include <BlynkSimpleEsp8266.h>

char auth[ ] = “Dv7n81Jj_T325ZnjfzQvq6khsqW0N1qR”;

WidgetLED led1(V1);

BlynkTimer timer;

#include <ESP8266WiFi.h>

#include <WiFiClient.h>

//ESP Web Server Library to host a web page

#include <ESP8266WebServer.h>

//—————————————————————

//Our HTML webpage contents in program memory

const char MAIN_page[] PROGMEM = R”=====(

<!DOCTYPE html>

<html>

<body>

<center>

<h1>WiFi Switch on off demo: 1</h1><br>

Ciclk to turn <a href=”ledOn”>Switch ON</a><br>

Ciclk to turn <a href=”ledOff”>Switch OFF</a><br>

<hr>

<a href=”https://satya.com.np“>satya</a>

</center>

</body>

</html>

)=====”;

//—————————————————————

//SSID and Password of your WiFi router

const char* ssid = “satya_guest_wifi”;

const char* password = “satya123#@!”;

// V1 LED Widget is blinking

void blinkLedWidget()  // function for switching off and on LED

{

  if (led1.getValue()) {

    led1.off();

    Serial.println(“LED on V1: off”);

  } else {

    led1.on();

    Serial.println(“LED on V1: on”);

  }

}

//Declare a global object variable from the ESP8266WebServer class.

ESP8266WebServer server(80); //Server on port 80

//===============================================================

// This routine is executed when you open its IP in browser

//===============================================================

void handleRoot() {

Serial.println(“You called root page”);

String s = MAIN_page; //Read HTML contents

server.send(200, “text/html”, s); //Send web page

}

void handleLEDon() {

Serial.println(“LED on page”);

switchState = HIGH;

lightsOn = 1;

server.send(200, “text/html”, “Switch is ON”); //Send ADC value only to client ajax request

}

void handleLEDoff() {

Serial.println(“LED off page”);

switchState = LOW;

lightsOn = 0;

server.send(200, “text/html”, “Switch is OFF”); //Send ADC value only to client ajax request

}

//==============================================================

//                  SETUP

//==============================================================

void setup(void){

pinMode(buzzerPin, OUTPUT);

pinMode(relayPin, OUTPUT);

pinMode(buttonPin, INPUT);

pinMode(TANK1, INPUT);

  digitalWrite(buzzerPin,LOW);

  digitalWrite(relayPin,LOW);

  Serial.begin(115200);

  WiFi.begin(ssid, password);     //Connect to your WiFi router

  Serial.println(“”);

   Blynk.begin(auth, ssid, password);

   timer.setInterval(1000L, blinkLedWidget);

  // Wait for connection

  while (WiFi.status() != WL_CONNECTED) {

    delay(500);

    Serial.print(“.”);

  }

  //If connection successful show IP address in serial monitor

  Serial.println(“”);

  Serial.print(“Connected to “);

  Serial.println(ssid);

  Serial.print(“IP address: “);

  Serial.println(WiFi.localIP());  //IP address assigned to your ESP

  server.on(“/”, handleRoot);      //Which routine to handle at root location. This is display page

  server.on(“/ledOn”, handleLEDon); //as Per  <a href=”ledOn”>, Subroutine to be called

  server.on(“/ledOff”, handleLEDoff);

  server.begin();                  //Start server

  Serial.println(“HTTP server started”);

}

//==============================================================

//                     LOOP

//==============================================================

void loop(void){

  server.handleClient();          //Handle client requests

  Blynk.run();

  timer.run();

  //set default value

  digitalWrite(buzzerPin, LOW); // set buzzer on

switchState = digitalRead(buttonPin); // read the pushButton State

TANK1flowState = digitalRead(TANK1); // read the flowButton State

if (switchState != oldSwitchState) // catch change

{

oldSwitchState = switchState;

   if (switchState == LOW && TANK1flowState == LOW)

   {

   // toggle

   lightsOn = !lightsOn;

   }

}

  if (TANK1flowState == HIGH && buzzerstate == 0) {

      buzzerstate = millis();

  }

if (TANK1flowState == HIGH)

   {

   // toggle

   switchState = LOW;

   lightsOn = 0;

      //buzzer activation time in ms 15 secc(15000L)

       if(millis() – buzzerstate < 15000L) {

        digitalWrite(buzzerPin,HIGH);

        delay(100);

        digitalWrite(buzzerPin,LOW);

        delay(100);

        }

    } else  {

        digitalWrite(buzzerPin,LOW);

        buzzerstate = 0;

    }

if(lightsOn)

{

  digitalWrite(relayPin, LOW); // set the LED on

} else {

  digitalWrite(relayPin, HIGH); // set the LED off

}

}

Leave a Reply

Your email address will not be published. Required fields are marked *