Course Content
📘 MODULE 6 – Smart Pet Feeder
0/1
📘 MODULE 7 – Smart Water Management System
0/2
📘 MODULE 8 – Water Quality Monitoring System
0/2
📘 MODULE 10 – Gas Leakage Detection System
0/2
Mastering IoT with 11 Real-World Projects and 1 mega project

✅ ESP32 + DHT11 + WiFi Terminal (Connect to Running WiFi)

#include <WiFi.h>
#include <DHT.h>

// -------------------- WiFi Credentials --------------------
const char* ssid = "YOUR_WIFI_NAME";
const char* password = "YOUR_WIFI_PASSWORD";

// -------------------- DHT Setup --------------------
#define DHTPIN 4
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

// -------------------- WiFi Server Setup --------------------
// Port 23 = Telnet Terminal Port
WiFiServer server(23);
WiFiClient client;

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

// Start DHT Sensor
dht.begin();

// -------------------- Connect ESP32 to WiFi --------------------
Serial.print("Connecting to WiFi: ");
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}

Serial.println("\n✅ WiFi Connected Successfully!");
Serial.print("🌐 ESP32 IP Address: ");
Serial.println(WiFi.localIP());

// -------------------- Start WiFi Server --------------------
server.begin();
Serial.println("✅ WiFi Terminal Server Started on Port 23");
}

void loop() {
// -------------------- Wait for Client Connection --------------------
if (!client || !client.connected()) {
client = server.available();
return;
}

// DHT11 needs 2 seconds delay between readings
delay(2000);

// -------------------- Read DHT11 Data --------------------
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();

// -------------------- Check for Sensor Error --------------------
if (isnan(humidity) || isnan(temperature)) {
client.println("❌ Failed to read from DHT11 sensor!");
Serial.println("❌ Failed to read from DHT11 sensor!");
return;
}

// -------------------- Send Data to WiFi Terminal --------------------
client.print("🌡 Temperature: ");
client.print(temperature);
client.print(" °C | ");

client.print("💧 Humidity: ");
client.print(humidity);
client.println(" %");

// -------------------- Print on Serial Monitor --------------------
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" °C | Humidity: ");
Serial.print(humidity);
Serial.println(" %");
}

🔌 Wiring (DHT11 → ESP32)

DHT11 Pin ESP32
VCC 3.3V
GND GND
DATA GPIO4

📱 How to Use WiFi Terminal App (Step-by-Step)

✅ Step 1: Upload Code

Upload to ESP32.


✅ Step 2: Open Serial Monitor (115200)

You will see output like:

 
Connecting to WiFi: YOUR_WIFI_NAME
.....
WiFi Connected Successfully!
ESP32 IP Address: 192.168.1.25
WiFi Terminal Server Started on Port 23

✅ Step 3: Connect Phone to SAME WiFi

Your phone must be connected to the same WiFi router.

Example:

  • ESP32 connected to: WiFi Router

  • Phone also connected to: WiFi Router


✅ Step 4: Open WiFi Terminal App

Enter:

  • Host/IP: 192.168.1.25 (your ESP32 IP)

  • Port: 23

Press Connect


✅ Output in Terminal App

 
🌡 Temperature: 28.00 °C | 💧 Humidity: 64.00 %

🧠 FULL DETAILED CODE EXPLANATION (Teaching Style)


✅ 1) Libraries

 
#include <WiFi.h>
#include <DHT.h>

🔹 WiFi.h

Used for:

  • Connecting ESP32 to WiFi

  • Creating TCP server

  • Sending data to phone app

🔹 DHT.h

Used for:

  • Reading temperature

  • Reading humidity


✅ 2) WiFi Credentials

 
const char* ssid = "YOUR_WIFI_NAME";
const char* password = "YOUR_WIFI_PASSWORD";

This is your router WiFi name and password.


✅ 3) DHT Setup

 
#define DHTPIN 4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
  • GPIO4 is used as DHT data pin

  • DHT11 sensor type selected


✅ 4) Create WiFi Terminal Server

 
WiFiServer server(23);
WiFiClient client;

🔹 server(23)

Creates a TCP server on port 23.

Terminal apps connect to port 23 using Telnet style.

🔹 client

Stores the phone connection.


✅ 5) setup() Runs once


🔹 Start Serial

 
Serial.begin(115200);

For debugging and IP display.


🔹 Start DHT

 
dht.begin();

Initializes sensor.


🔹 Connect to WiFi

 
WiFi.begin(ssid, password);

Starts WiFi connection.


🔹 Wait until connected

 
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}

This loop runs until ESP32 gets WiFi connection.


🔹 Print IP Address

 
Serial.println(WiFi.localIP());

This is the IP you will use in terminal app.

Example:

 
192.168.1.25

🔹 Start Server

 
server.begin();

Starts the TCP server.

Now phone can connect.


✅ 6) loop() Runs forever


🔹 Check phone connected

 
if (!client || !client.connected())
{
client = server.available();
return;
}

Meaning:

  • If phone not connected → wait

  • If phone connects → store connection


🔹 Delay 2 seconds

 
delay(2000);

Required for DHT11.


🔹 Read sensor values

 
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();

Reads sensor.


🔹 Check NAN error

 
if (isnan(humidity) || isnan(temperature))

If sensor fails, values become NAN.


🔹 Send to terminal app

 
client.print(...)

This sends output to phone WiFi terminal.


⚠ Common Issues & Fix

❌ Terminal not connecting

✅ Check:

  • Phone and ESP32 must be on SAME WiFi

  • Correct IP address

  • Correct port 23


❌ Port 23 not working

Change to 8080:

 
WiFiServer server(8080);

Then terminal port = 8080



Scroll to Top