ESP8266 Web Server AP (Access Point)

In this tutorial we are making ESP8266 as Access point and using it to make it web server. We have seen how to connect to WiFi Router and make web server in previous post.

A Web server is a program that uses HTTP (Hypertext Transfer Protocol) to serve the files that form Web pages to users, in response to their requests, which are forwarded by their computers’ HTTP clients.
To implement web server on ESP, there are two ways to make your first web server first connect to your WiFi router or make ESP as access point.

Web Server Step by Step

As we know that all web servers have a web page to be served.

Step 1: Creating web server on ESP8266

ESP can acts as access point and it can connect to access point or both.

First we make program to connect to WiFi hot spot (Access Point)

Program to connect to Access point and Make web server

We need these libraries to make web server.

ESP8266WiFi.h is required for doing all WiFi related functionalities such as connection, AP, etc.

WiFiClient.h this file is required to send request to web browser

ESP8266WebServer.h it handles all HTTP protocols

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

Define your SSID and Password of your WiFi router, where the ESP connects

//SSID and Password for ESP8266
const char* ssid = "your_ssid";
const char* password = "password";

Web server is on port 80, you can use other ports also, default HTTP port is 80, to open web page with different port number you have to enter port number after IP address. Ex. For port number 81 you have to type  192.168.2.2:81  in browser.

ESP8266WebServer server(80); //Server on port 80

There are two ways to make web server one is to connect to WiFi hot spot or make ESP as hot spot (Access Point). In this tutorial we are making ESP as AP.

ESP as Access Point

You may find that ESP is also visible as hot spot in previous example; you can hide its AP (Access point) using this command at the beginning of setup.

WiFi.mode(WIFI_STA);   //This line hides the viewing of ESP as wifi network

In some application you may find that both AP and connection to WiFi router are useful for making configuration you use ESP8266 AP and for data sending to cloud use WiFi connectivity in that case use this command and both connections. This way you can access ESP web page with two different IP address.

WiFi.mode(WIFI_AP_STA);  //Both hotspot and client are enabled

Third way is only access point, default is all AP and STA are enabled, to get only AP use this command.

  WiFi.mode(WIFI_AP);         //Only Access point

To start ESP as Access point you have to use this simple command

WiFi.softAP(ssid, password);  //Start HOTspot removing password will disable security

To get IP address i.e. assigned to ESP8266 by your WiFi router use this command

IPAddress myIP = WiFi.softAPIP(); //Get IP address

Web Server Handling

When client request a web page by entering ESP IP address which data to be sent is handled by subroutine and that subroutine name is defined in server.on(path,subroutine_name).

  server.on("/", handleRoot); //Which routine to handle at root location

Example: If you have two pages you can define like this

Server.on(“/”,root);   //192.168.2.2 (IP of ESP)   this is root location

Server.on(“/page1”,First_page); //”192.168.2.2/page1”  this is first page location

Server.on(“/page2”,Second_page); //”192.168.2.2/page2”  this is second page location

You have three subroutines that handle client requests.

To start the server use this command

server.begin();                  //Start server

In main loop we handle client request

server.handleClient();          //Handle client requests

This subroutine is called when you enter IP address in web browser and hit enter. This routine sends the test “hello from esp8266” to web browser.

void handleRoot() {
  server.send(200, "text/plain", "hello from esp8266!");
}

Complete Program for Hello from esp8266 as Access Point

/*
 * Hello world web server
 * circuits4you.com
 */
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>

//SSID and Password to your ESP Access Point
const char* ssid = "ESPWebServer";
const char* password = "12345678";

ESP8266WebServer server(80); //Server on port 80

//==============================================================
//     This rutine is exicuted when you open its IP in browser
//==============================================================
void handleRoot() {
  server.send(200, "text/plain", "hello from esp8266!");
}

//===============================================================
//                  SETUP
//===============================================================
void setup(void){
  Serial.begin(9600);
  Serial.println("");
  WiFi.mode(WIFI_AP);           //Only Access point
  WiFi.softAP(ssid, password);  //Start HOTspot removing password will disable security

  IPAddress myIP = WiFi.softAPIP(); //Get IP address
  Serial.print("HotSpt IP:");
  Serial.println(myIP);
 
  server.on("/", handleRoot);      //Which routine to handle at root location

  server.begin();                  //Start server
  Serial.println("HTTP server started");
}
//===============================================================
//                     LOOP
//===============================================================
void loop(void){
  server.handleClient();          //Handle client requests
}

Results

After uploading program take your mobile turn on WiFi and in WiFi setting Scan for hot spot you will find “ESPWebServer” hot spot connect to it with password “12345678” as we have given in program. After connecting to ESP hot spot, Open web browser in mobile phone and enter IP 192.168.4.1 you will see “hello from esp8266!” message. IP address can be found in serial monitor.

Web Server results

Web Server resultsIn next post we will see how to make ESP8266 Web Server and Load HTML Web Page.

Leave a Reply