An essential component of city management is the water management system. Water management entails giving water only when it is actually needed and without wasting any. Therefore, measuring water flow rate and volume is crucial. Water management is nearly impossible without measuring these characteristics. Additionally, it has become crucial to remotely monitor water volume, flow rate, and quality utilizing internet connectivity. As a result, a Monitoring Water Management System Online is required.
In this blog, using an ESP8266 and a water flow sensor, we will create an IoT-based water flow meter for this project. We’ll connect the NodeMCU ESP8266 Board to the YFS201 Hall Effect Water Flow Sensor. We’ll use a 0.96″ OLED display to show the total volume and water flow rate. The hardware will then be integrated with the IoT Server. We’ll use the Thingspeak App as an IoT server. The information about the water flow rate and volume can be uploaded to Thingspeak Server and accessed or monitored from anywhere in the world.
Although there are a lot of water flow sensors on the market, they are too pricey for most people to use and afford. A cheap water flow meter is therefore necessary. Therefore, we will create a straightforward IoT-based water flow meter using the YFS201 Hall Effect Water Flow Sensor and ESP8266.
- ESP8266-12E Board
- YF-S201 Hall-Effect Water Flow Sensor
- 0.96″ I2C OLED Display
- Connecting Wires
YF-S201 Hall-Effect Water Flow Sensor
The YF-S201 Hall-Effect Water Flow Sensor is shown in this photograph. This sensor has an inlet and an outlet, so it may be connected to the waterline. A pinwheel inside the sensor detects how much liquid has passed through it. With each rotation, an embedded magnetic hall effect sensor produces an electrical pulse.
.The sensor comes with three wires:
1. Red (5-24VDC power)
2. Black (ground)
3. Yellow (Hall effect pulse output)
By counting the pulses coming from the sensor’s output, the water flow rate may be determined. About 2.25 milliliters make up each pulse. The flow rate and volume vary slightly based on the flow rate, fluid pressure, and sensor orientation, making this sensor the best and cheapest one but not the most precise. It takes a lot of calibrating to achieve greater precision of more than 10%. Using this sensor, you may create a simple IoT-based water flow meter.
Since the pulse signal is a simple square wave, the following method can be used to log and convert the pulse rate into liters per minute.
|Pulse frequency (Hz) / 7.5 = flow rate in L/min|
To learn more about this sensor, you can follow our previous guide here: Arduino & Water Flow Sensor Complete Hookup Guide
IoT Water Flow Meter using ESP8266 & Water Flow Sensor
Let’s connect the Nodemcu ESP8266 & OLED Display to the YF-S201 Hall-Effect Water Flow Sensor now. The water flow rate and total volume of water passed through the pipe will be displayed on the OLED Display. A consistent interval of 15 seconds can be used to send the same Flow Rate & Volume data to Thingspeak Server. If you require immediate info, you can switch to the Blynk Application. The MQTT Protocol can also be used to improve wireless communication.
But now let us see the IoT Water Flow Meter Circuit Diagram & Connection.
Since the water flow sensor is a digital sensor, its output pin can be connected to any of the digital ESP8266 pins. I linked to GPIO2, or D4, in my situation. The sensor can be attached to the ESP8266’s Vin and operates at 5 volts. Similarly, the ESP8266’s D2 and D1 are linked to the SDA and SCL pins of the I2C OLED Display, respectively. OLED displays operate at 3.3V, therefore they can be connected to the Nodemcu’s 3.3V pin.
I put the circuit together on a breadboard. The tiny Water Flow Meter board can be made using a specially designed PCB.
PCB Designing & Ordering Online
The PCB for this project has been designed in EasyEDA online PCB-making tool. Below are the front view and Back View of the PCB generated from Gerber Viewer of NextPCB.
The Gerber file for all the PCBs is given below. You can download the Gerber file and order the PCB online from NextPCB.
Now you can visit the NextPCB official website by clicking here: https://www.nextpcb.com/. So you will be directed to NextPCB website.
Now that the Gerber File has been uploaded, you can order from the website. The PCB quality is flawless and clean. For PCB & PCBA Services, the majority of consumers rely on NextPCB for this reason.
Mathematical Calculation to Measure Flow Rate & Volume
By monitoring changes in water velocity, we have calculated the flow rate. The pressure that pushes water through pipelines determines the water’s velocity. Since the pipe’s cross-sectional area is known and constant, we can calculate the average velocity, which represents the flow rate.
Let’s assume that Q represents the flow rate or overall flow of water through the pipe, V represents the average velocity, and A represents the pipe’s cross-sectional area. In such a case the basis relationship for determining the liquid’s flow rate in such cases is Q=VxA
- Sensor Frequency (Hz) = 7.5 * Q (Liters/min)
- Litres = Q * time elapsed (seconds) / 60 (seconds/minute)
- Litres = (Frequency (Pulses/second) / 7.5) * time elapsed (seconds) / 60
- Litres = Pulses / (7.5 * 60)
Setting up Thingspeak
The Thingspeak Account needs to be set up right now. Follow these steps to set up Thingspeak:
Step 1: Visit https://thingspeak.com/ and create your account by filling up the details.
Step 2: Create a New Channel by selecting “Channel” and entering the information requested in the image below.
Step 3: Select “Write API Key” after clicking on API Key. Copied the API Key. This is crucial; the Code Part will require it.
Step 4: Select “Private View” and modify the display window as necessary.
The Thingspeak Setup Part has concluded. Let’s get to the programming section now.
Now Let’s look at the Arduino IDE code for the ESP8266 water flow sensor. Direct uploading of the code to the NodeMCU board is possible. However, a few libraries for OLED displays are first required. Therefore, first, download the Library and then add it to the Arduino IDE.
|String apiKey = “KBD1JSZTUKCXJ15V”;|
const char *ssid = “Alexahome”;
const char *pass = “loranthus”;
- Change the Wifi SSID, password, and Thingspeak API key from the line above.
- Below is a list of the source code’s entirety.
define SCREEN_WIDTH 128 // OLED display width, in pixels
define SCREEN_HEIGHT 64 // OLED display height, in pixels
define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
String apiKey = “KBD1JSZTUKCXJ15V”; // Enter your Write API key from ThingSpeak
const char *ssid = “Alexahome”; // replace with your wifi ssid and wpa2 key
const char *pass = “loranthus”;
const char* server = “api.thingspeak.com”;
define LED_BUILTIN 16
define SENSOR 2
long currentMillis = 0;
long previousMillis = 0;
int interval = 1000;
boolean ledState = LOW;
float calibrationFactor = 4.5;
volatile byte pulseCount;
byte pulse1Sec = 0;
unsigned long flowMilliLitres;
unsigned int totalMilliLitres;
void IRAM_ATTR pulseCounter()
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //initialize with the I2C addr 0x3C (128×64)
pulseCount = 0;
flowRate = 0.0;
flowMilliLitres = 0;
totalMilliLitres = 0;
previousMillis = 0;
attachInterrupt(digitalPinToInterrupt(SENSOR), pulseCounter, FALLING);
currentMillis = millis();
if (currentMillis – previousMillis > interval)
if (client.connect(server, 80)) // “18.104.22.168” or api.thingspeak.com
String postStr = apiKey;
postStr += “&field1=”;
postStr += String(float(flowRate));
postStr += “&field2=”;
postStr += String(totalLitres);
postStr += “\r\n\r\n”;
Monitoring Water Flow Rate & Volume
The OLED Display will start operating and begin showing the flow rate and volume as soon as the code is uploaded. The flow rate will initially be 0 litres per minute (L/M). Total Volume will also be displayed as 0 Liter (L).
The OLED display will show the Flow Rate (F) and Volume after the motor is turned on and the water begins to flow (V).
You can now keep an eye on the data for water flow rate and volume on Thingspeak Server as well. You only need to go to the Thingspeak Dashboard’s Private View.
ConclusionI hope all of you understand how to design IoT Water Flow Meter using ESP8266. We MATHA ELECTRONICS will be back soon with more informative blogs.