Course Content
IoT Engineering Course using ESP32 with 12 Real-World Projects

Perfect Shiv 👑🔥
Here is your ready-to-upload lesson content for:


📘 Lesson 8.5 – Water Quality Monitoring Code

(Serial WiFi Terminal – Hotspot Mode – TDS Sensor)


💧 Water Quality Monitoring System

(ESP32 + TDS Sensor + WiFi Hotspot Mode)

In this lesson, ESP32 works as a WiFi Hotspot (Access Point Mode).

Your mobile connects directly to ESP32 without any router.

This version allows:

  • 📊 Real-time TDS monitoring

  • 💧 Water quality classification

  • 📱 Wireless data viewing

  • 🌐 No router required

  • 📡 No internet required

Router ❌
Internet ❌
ESP32 Hotspot ✔


📦 Components Used

  • ESP32

  • Analog TDS Sensor Module

  • TDS Probe

  • Android Phone

  • TCP Terminal App

Recommended Apps:

  • TCP Telnet Terminal

  • Serial WiFi Terminal


🔌 Pin Configuration

TDS Module Pin ESP32
VCC 3.3V
GND GND
AO GPIO 34

GPIO 34 = Analog Input


💻 COMPLETE CODE

(WiFi Hotspot Mode + TCP Server + TDS Monitoring)

Copy & paste into Arduino IDE:

#include <WiFi.h>

#define TDS_PIN 34

const char* ssid = "Water_Quality_AP";
const char* password = "12345678";

WiFiServer server(23);

float voltage = 0;
float tdsValue = 0;

void setup() {
Serial.begin(115200);

WiFi.softAP(ssid, password);

Serial.println("Hotspot Started");
Serial.print("AP IP Address: ");
Serial.println(WiFi.softAPIP());

server.begin();
Serial.println("TCP Server Started on Port 23");
}

void loop() {

WiFiClient client = server.available();

if (client) {
Serial.println("Client Connected");

client.println("=== Water Quality Monitoring ===");

while (client.connected()) {

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;

client.print("TDS Value: ");
client.print(tdsValue);
client.print(" ppm");

if (tdsValue < 50) {
client.println(" | Very Pure Water");
}
else if (tdsValue < 150) {
client.println(" | Excellent Water");
}
else if (tdsValue < 300) {
client.println(" | Good Water");
}
else if (tdsValue < 500) {
client.println(" | Fair Water");
}
else {
client.println(" | Poor / Unsafe Water");
}

delay(2000);
}

client.stop();
Serial.println("Client Disconnected");
}
}

🧠 Code Explanation


1️⃣ Enable Hotspot Mode

 
WiFi.softAP(ssid, password);
 

ESP32 creates its own WiFi network:

Network Name:

 
Water_Quality_AP
 

Password:

 
12345678
 

Default IP:

 
192.168.4.1
 

2️⃣ Create TCP Server

 
WiFiServer server(23);
 

Creates Telnet server on Port 23.

Mobile connects using:

  • Host: 192.168.4.1

  • Port: 23


3️⃣ Read Analog Value

 
int adcValue = analogRead(TDS_PIN);
 

Reads sensor voltage.


4️⃣ Convert Voltage to TDS

 
tdsValue = (133.42 * V³ – 255.86 * V² + 857.39 * V) * 0.5;
 

Converts voltage to PPM.


5️⃣ Water Quality Classification

Based on TDS value:

TDS (ppm) Water Quality
< 50 Very Pure
50–150 Excellent
150–300 Good
300–500 Fair
> 500 Poor

📱 How To Use

Step 1
Upload code

Step 2
Open Serial Monitor
Note IP address (usually 192.168.4.1)

Step 3
Connect mobile WiFi to:

 
Water_Quality_AP
 

Step 4
Open TCP Terminal App

Enter:

  • Host: 192.168.4.1

  • Port: 23

Step 5
View live TDS value


📟 Example Output

 
TDS Value: 110 ppm | Excellent Water
TDS Value: 275 ppm | Good Water
TDS Value: 520 ppm | Poor / Unsafe Water
 

🎯 What Students Learn

  • ESP32 Access Point Mode

  • TCP server communication

  • Analog sensor reading

  • Wireless data transmission

  • Environmental IoT system


📌 Lesson Summary

In this lesson, students built a:

💧 WiFi Hotspot-Based Water Quality Monitoring System

The system:

✔ Measures TDS
✔ Classifies water quality
✔ Sends data wirelessly
✔ Works without router



Scroll to Top