💧 Water Quality Monitoring System
(ESP32 + Analog TDS Sensor + Blynk IoT Cloud)
In this lesson, we upgrade the system to Cloud-Based Monitoring using Blynk IoT.
This version allows:
-
🌍 Monitor water quality from anywhere
-
📊 Real-time TDS (PPM) display
-
💧 Water quality classification on dashboard
-
🚨 Alert if water is unsafe
-
☁ Cloud-based data monitoring
Internet required ✔
WiFi required ✔
Blynk IoT Cloud ✔
📦 Components Used
-
ESP32
-
Analog TDS Sensor Module
-
TDS Probe
-
WiFi Connection
-
Blynk IoT Account
🔌 Pin Configuration
| TDS Module Pin | ESP32 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| AO | GPIO 34 |
GPIO 34 = Analog Input
🌐 Blynk IoT Setup (Step-by-Step)
Go to:
👉 https://blynk.cloud
Login and follow the steps below.
🔹 Step 1 – Create Template
-
Click New Template
-
Template Name:
Water Quality Monitor -
Hardware: ESP32
-
Connection Type: WiFi
-
Click Done
🔹 Step 2 – Create Datastreams
Go to Datastreams → New Datastream
1️⃣ V0 – TDS Value (PPM)
-
Type: Virtual Pin
-
Pin: V0
-
Data Type: Double
-
Min: 0
-
Max: 2000
Used to display TDS value.
2️⃣ V1 – Water Quality Text
-
Type: Virtual Pin
-
Pin: V1
-
Data Type: String
Used to display water quality status.
3️⃣ V2 – Unsafe Water LED
-
Type: Virtual Pin
-
Pin: V2
-
Data Type: Integer
-
Min: 0
-
Max: 1
1 = Unsafe
0 = Safe
🔹 Step 3 – Create Device
-
Go to Devices
-
Click New Device
-
From Template
-
Select Water Quality Monitor
-
Copy Auth Token
You will paste it into code.
📱 Dashboard Setup (Mobile App)
Open Blynk App and add:
📊 Value Display – TDS Value
Datastream: V0
📝 Label / Value Display – Water Quality
Datastream: V1
💡 LED Widget – Unsafe Water
Datastream: V2
ON Color: Red
OFF Color: Green
💻 COMPLETE CODE
(ESP32 + TDS Sensor + Blynk IoT)
Replace credentials before uploading.
#define BLYNK_TEMPLATE_ID "YOUR_TEMPLATE_ID"
#define BLYNK_DEVICE_NAME "Water Quality Monitor"
#define BLYNK_AUTH_TOKEN "YOUR_AUTH_TOKEN"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#define TDS_PIN 34
char ssid[] = "YOUR_WIFI_NAME";
char pass[] = "YOUR_WIFI_PASSWORD";
float voltage = 0;
float tdsValue = 0;
String waterQuality;
void setup() {
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}
void loop() {
Blynk.run();
int adcValue = analogRead(TDS_PIN);
voltage = adcValue * (3.3 / 4095.0);
tdsValue = (133.42 * voltage * voltage * voltage
- 255.86 * voltage * voltage
+ 857.39 * voltage) * 0.5;
// Water Quality Classification
if (tdsValue < 50) {
waterQuality = "Very Pure";
Blynk.virtualWrite(V2, 0);
}
else if (tdsValue < 150) {
waterQuality = "Excellent";
Blynk.virtualWrite(V2, 0);
}
else if (tdsValue < 300) {
waterQuality = "Good";
Blynk.virtualWrite(V2, 0);
}
else if (tdsValue < 500) {
waterQuality = "Fair";
Blynk.virtualWrite(V2, 0);
}
else {
waterQuality = "Poor / Unsafe";
Blynk.virtualWrite(V2, 1);
}
Blynk.virtualWrite(V0, tdsValue);
Blynk.virtualWrite(V1, waterQuality);
delay(2000);
}
🧠 Code Explanation
1️⃣ Blynk Initialization
Connects ESP32 to:
-
WiFi
-
Blynk Cloud
-
Your dashboard
2️⃣ Read Analog Value
Reads TDS sensor voltage.
Range:
0 – 4095
3️⃣ Convert ADC to Voltage
Converts ADC value into voltage.
4️⃣ Convert Voltage to TDS
Polynomial equation converts voltage to PPM.
5️⃣ Water Quality Classification
Based on TDS value:
| TDS (ppm) | Quality |
|---|---|
| < 50 | Very Pure |
| 50–150 | Excellent |
| 150–300 | Good |
| 300–500 | Fair |
| > 500 | Poor / Unsafe |
If water is unsafe:
Turns ON red LED.
6️⃣ Dashboard Updates
Blynk.virtualWrite(V1, waterQuality);
Updates:
-
TDS numeric display
-
Water quality text
📟 System Working Flow
-
ESP32 connects to WiFi
-
Connects to Blynk Cloud
-
Reads TDS sensor
-
Converts voltage to PPM
-
Classifies water quality
-
Updates dashboard
-
Turns LED ON if unsafe
🎯 What Students Learn
-
Cloud-based IoT system
-
Virtual pins concept
-
ADC & voltage conversion
-
Polynomial calibration formula
-
Environmental IoT monitoring
-
Real-time cloud dashboard
📌 Lesson Summary
In this lesson, students built a:
💧 Cloud-Based Water Quality Monitoring System
The system:
✔ Measures TDS
✔ Classifies water quality
✔ Sends data to cloud
✔ Alerts if water is unsafe
✔ Monitors from anywhere