How Do You Configure an ESP32 Access Point AP for a Web Server?


Scott Campbell

Configuring an ESP32 Access Point (AP) for a Web Server

The ESP32 is a versatile microcontroller that allows you to create various IoT projects. One of its most useful features is the ability to act as an Access Point (AP) and host a web server. In this tutorial, we will explore how to configure an ESP32 as an AP for a web server.

Step 1: Setting up the ESP32
To begin, ensure that you have the necessary software installed on your computer. You will need the Arduino IDE and the ESP32 board package. If you haven’t already done so, follow the instructions provided by Espressif, the manufacturers of the ESP32, to set up the Arduino IDE and install the necessary board package.

Once your environment is set up, connect your ESP32 board to your computer via USB.

Step 2: Creating a New Sketch
Open the Arduino IDE, and click on “File” in the top menu bar. Select “New” to create a new sketch.

Step 3: Including Required Libraries

Before we start writing our code, we need to include some libraries that will help us set up our web server. To do this, click on “Sketch” in the top menu bar and navigate to “Include Library”.

From there, select “WiFi.h” and “ESPAsyncWebServer.h”. These libraries provide functions for working with WiFi connections and setting up an asynchronous web server respectively.

Step 4: Defining Constants

To make our code more readable and maintainable, let’s define some constants at the beginning of our sketch. These constants will store important information such as our network credentials and IP address.

  • SID (Station ID): Your network’s SSID (Service Set Identifier).
  • PASSWORD: The password for your network.
  • IP_ADDRESS: The IP address you want to assign to the ESP32 AP. This should be in the same subnet as your network.

Here’s an example of how you can define these constants:

#define SID "YourSSID"
#define PASSWORD "YourPassword"
#define IP_ADDRESS IPAddress(192, 168, 1, 1)

Step 5: Setting Up the AP

Now it’s time to configure our ESP32 as an Access Point. We will use the WiFi library to accomplish this.

First, let’s start by connecting to our network using the WiFi.begin() function. Pass in the SID and PASSWORD constants as arguments.

WiFi.begin(SID, PASSWORD);

Next, we need to wait until we are connected to the network. We can do this by calling WiFi.waitForConnectResult().

while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Connection Failed! Rebooting..");

Once we are connected to the network, we can set up our ESP32 as an Access Point using the WiFi.softAP() function. Pass in a name for your AP and a password as arguments.softAP(“ESP32-AP”, “password”);

We also need to configure the IP address of our AP using the WiFi.softAPConfig() function. Pass in the IP_ADDRESS constant and a subnet mask as arguments.softAPConfig(IP_ADDRESS, IPAddress(255, 255, 255, 0));

Step 6: Setting Up the Web Server

Now that our ESP32 is configured as an AP, we can set up our web server using the ESPAsyncWebServer library.

First, create an instance of the AsyncWebServer class.

AsyncWebServer server(80);

Next, we need to define the routes that our server will handle. For example, if we want to serve a webpage when someone accesses the root URL (“/”), we can use the on() function to define a route and a callback function.

server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send(200, "text/html", "

Welcome to my web server!

"); });

We can add more routes by calling server.on() with different URLs and callback functions.

Finally, start the web server by calling server.begin().begin();


You have successfully configured your ESP32 as an Access Point for a web server. Now you can access your web server by connecting to the ESP32’s AP using any Wi-Fi enabled device.

In this tutorial, we learned how to configure an ESP32 as an Access Point and set up a web server using the Arduino IDE and some essential libraries. With this knowledge, you can create exciting IoT projects with remote control capabilities or data visualization interfaces.

Discord Server - Web Server - Private Server - DNS Server - Object-Oriented Programming - Scripting - Data Types - Data Structures

Privacy Policy