Free Shipping over ₹1199

Getting Started with ESP32 Wi-Fi

Introduction

The ESP32 is a powerful microcontroller with built-in Wi-Fi, making it ideal for IoT, smart devices, and wireless communication. Two of its most essential Wi-Fi operating modes are:

  • Station Mode (STA)
  • Access Point Mode (AP)

What is Station Mode?

In Station Mode, the ESP32 acts like a Wi-Fi client—it connects to an existing Wi-Fi network, such as your home router or a mobile hotspot. Once connected, the ESP32 can send and receive data through the internet or a local network.

Example Use Cases:

  • Sending sensor data to the cloud
  • Fetching online weather or time information
  • Remote device control via a smartphone app or web dashboard

Code:

#include <WiFi.h>

const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";

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

  WiFi.begin(ssid, password);
  Serial.print("Connecting to WiFi");

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

  Serial.println("\nConnected!");
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  // Nothing here for now
}

What is Access Point Mode?

In Access Point Mode, the ESP32 creates its own Wi-Fi network (hotspot). Devices like phones or laptops can connect directly to the ESP32 without needing a router or internet access. This is useful for local control or configuration when no internet is available.

Example Use Cases:

  • Offline control of smart devices
  • Initial setup/configuration pages
  • Peer-to-peer data exchange without the internet

Example Code:

#include <WiFi.h>

const char* AP_SSID = "ESP32_Hotspot";
const char* AP_PASSWORD = "12345678";

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

  WiFi.softAP(AP_SSID, AP_PASSWORD);
  Serial.println("Access Point started");
  Serial.print("IP address: ");
  Serial.println(WiFi.softAPIP());  //192.168.4.1
}

void loop() {
  // Nothing here yet
}

ESP32 Access Point Mode: Create a Wi-Fi Hotspot to Control an LED

The ESP32 isn’t just capable of connecting to Wi-Fi networks—it can also create its own Wi-Fi network using Access Point (AP) Mode. This allows users to connect to the ESP32 directly without a router and control devices like LEDs via a local web interface.

In this guide, we’ll set up the ESP32 as an Access Point and host a web page that lets you turn an LED on or off from your browser.

Once set up, your ESP32 will:

  • Create a Wi-Fi hotspot called “ESP32_Hotspot”
  • Serve a simple web page with ON and OFF buttons
  • Control an LED connected to GPIO 2 (you can change this pin if needed)

Code

#include <WiFi.h>
#include <WebServer.h>

// Access Point credentials
const char* ssid = "ESP32_Hotspot";
const char* password = "12345678";

// Create web server on port 80
WebServer server(80);

// Define LED pin (GPIO 2 for onboard LED)
const int ledPin = 2;
bool ledState = LOW;

// HTML content to be served
const char* htmlPage = R"rawliteral(
<!DOCTYPE html>
<html>
<head>
  <title>ESP32 LED Control</title>
  <style>
    body { font-family: Arial; text-align: center; margin-top: 50px; }
    .button {
      padding: 16px 36px; margin: 20px; font-size: 20px;
      border: none; border-radius: 10px; cursor: pointer;
    }
    .on { background-color: #4CAF50; color: white; }
    .on:hover { background-color: #45a049; }
    .off { background-color: #f44336; color: white; }
    .off:hover { background-color: #da190b; }
  </style>
</head>
<body>
  <h1>ESP32 LED Control</h1>
  <p><strong>Status:</strong> <span id="ledStatus">%STATE%</span></p>
  <button class="button on" onclick="location.href='/led/on'">Turn ON</button>
  <button class="button off" onclick="location.href='/led/off'">Turn OFF</button>
</body>
</html>
)rawliteral";

void handleRoot() {
  String html = htmlPage;
  html.replace("%STATE%", ledState ? "ON" : "OFF");
  server.send(200, "text/html", html);
}

void handleLedOn() {
  digitalWrite(ledPin, HIGH);
  ledState = true;
  handleRoot();
}

void handleLedOff() {
  digitalWrite(ledPin, LOW);
  ledState = false;
  handleRoot();
}

void setup() {
  Serial.begin(115200);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, ledState);

  // Start Access Point
  WiFi.softAP(ssid, password);
  Serial.println("Access Point Started");
  Serial.print("IP address: ");
  Serial.println(WiFi.softAPIP());

  // Define routes
  server.on("/", handleRoot);
  server.on("/led/on", handleLedOn);
  server.on("/led/off", handleLedOff);
  server.begin();
}

void loop() {
  server.handleClient();
}

How to Use It

  • Upload the code to your ESP32.
  • Open the Serial Monitor at 115200 baud to view the IP address.

Connect your phone or laptop to the Wi-Fi named ESP32_Hotspot using password 12345678.

  • Open a browser and enter the IP address from Serial Monitor (e.g., 192.168.4.1).
  • Use the buttons to turn the LED ON or OFF!

    Leave a Reply

    Your email address will not be published. Required fields are marked *

    Need Help?