Wireless Water Level Controller DIY Homemade

Introduction

In this video I have made a wireless water level controller using Arduino. With this circuit we can automate our water storage system wirelessly. I hope you will enjoy this video.

A water level indicator is a system that relays information back to a control panel to indicate whether a body of water has a high or low water level. Some water level indicators use a combination of probe sensors or float switches to sense water levels.

The operation of water level controller is based on the fact that water conducts electricity. As the water level rises or fall the sensing probes and circuits of the controller detect the same. These signals are used to switch ON or switch OFF the pump motor as per requirements.

The water level indicator circuits are used in factories, chemical plants, and electrical substations and in other liquid storage systems. There are many possible uses for this simple system, examples include monitoring a sump pit (to control pump activation), rainfall detection, and leakage detection.

A water level is easy and inexpensive to make, making it perfect for leveling a deck or shed foundation, and more accurate than a carpenter’s level over long distances. A water level can also be used around corners that are out of line of sight, something a laser or builder’s level can’t do.

Wireless Water Level Controller Thumbnail




Circuit Diagram

of Wireless Water Level Controller

Circuit Diagram of TRANSMITTER

Wireless Water Level Controller Transmitter Circuit Diagram

Circuit Diagram of RECEIVER

Wireless Water Level Controller Receiver Circuit Diagram




More Circuit Layouts






Programming Code

used in Wireless Water Level Controller

Transmitter Code

#include <VirtualWire.h>
 char msg1;
void setup () {
  // Initialise the IO and ISR
  vw_setup (2000);        // Bits per sec
  vw_set_tx_pin (12);          // Transmitter Data Pin to Digital Pin 3
  
    pinMode(2, INPUT_PULLUP);
    pinMode(3, INPUT_PULLUP);
    pinMode(4, INPUT_PULLUP);
    pinMode(5, INPUT_PULLUP);
    pinMode(6, INPUT_PULLUP);
}
void loop () {
if(!digitalRead(6)){
  char *msg2 = "5";
     vw_send ((uint8_t *) msg2, strlen (msg2));
    vw_wait_tx ();
  }
else if(!digitalRead(5)){
  char *msg2 = "4";
     vw_send ((uint8_t *) msg2, strlen (msg2));
    vw_wait_tx ();
  }
else if(!digitalRead(4)){
  char *msg2 = "3";
     vw_send ((uint8_t *) msg2, strlen (msg2));
    vw_wait_tx ();
  }
else if(!digitalRead(3)){
  char *msg2 = "2";
     vw_send ((uint8_t *) msg2, strlen (msg2));
    vw_wait_tx ();
  }
else if(!digitalRead(2)){
  char *msg2 = "1";
     vw_send ((uint8_t *) msg2, strlen (msg2));
    vw_wait_tx ();
  }
else{
  char *msg2 = "0";
     vw_send ((uint8_t *) msg2, strlen (msg2));
    vw_wait_tx ();
  } 
}



Receiver Code

#include <VirtualWire.h>
bool state;
void setup () {
  Serial.begin (9600);            // Debugging only
 
  // Initialise the IO and ISR
  vw_setup (2000);      // Bits per sec
  vw_set_rx_pin (11);    // Rx Data pin to Digital  Pin 2
  vw_rx_start ();       // Start the receiver PLL running
    pinMode(2, OUTPUT);
    pinMode(3, OUTPUT);
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(7, OUTPUT);
 pinMode(8, INPUT_PULLUP);
}
void loop () {
  uint8_t buf [VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;
  if (vw_get_message (buf, &buflen)) {
    int i; 
    // Message with a good checksum received, dump it
    //Serial.println(buf [0]);
   switch(buf [0]){
    case '0':
digitalWrite(3,0);
digitalWrite(4,0);
digitalWrite(5,0);
digitalWrite(6,0);
digitalWrite(7,0);
    break;
    case '1':
digitalWrite(3,1);
digitalWrite(4,0);
digitalWrite(5,0);
digitalWrite(6,0);
digitalWrite(7,0);
    break;
    case '2':
digitalWrite(3,1);
digitalWrite(4,1);
digitalWrite(5,0);
digitalWrite(6,0);
digitalWrite(7,0);
    break;
    case '3':
digitalWrite(3,1);
digitalWrite(4,1);
digitalWrite(5,1);
digitalWrite(6,0);
digitalWrite(7,0);
    break;
    case '4':
digitalWrite(3,1);
digitalWrite(4,1);
digitalWrite(5,1);
digitalWrite(6,1);
digitalWrite(7,0);
    break;
    case '5':
digitalWrite(3,1);
digitalWrite(4,1);
digitalWrite(5,1);
digitalWrite(6,1);
digitalWrite(7,1);
    break;    
    }
if(buf [0]<50) digitalWrite(2,1);   
if(buf [0]>52) digitalWrite(2,0);
else if(!digitalRead(8)&!state){state=1;digitalWrite(2,!digitalRead(2));  }      
  if(digitalRead(8))state=0;
  }
}

Components List

used in Wireless Water Level Controller

  • 1x Arduino Nano
  • 1 X 433Mhz RF Modules
  • 1X BC547 Transistor
  • 1X 1N4148 Diode
  • 1x Push Button Nano
  • 1x 1k Resistor https://s.click.aliexpress.com/e/_dW4…
  • 1x 5V Relay
  • 2x 2 Pin Terminal Blocks
  • JUMPER WIRES

Download Gerber File

Gerber File:



Watch Video Tutorial

(Visited 453 times, 1 visits today)

Leave a Reply

Your email address will not be published.