ESP32 Microcontroller Connecting to Hotspot Network Example & Hotspot & Web Security Verification

#include <WiFi.h>#include <WebServer.h>
const char* ssid_ap = "ESP32 Hotspot";      // Name of the ESP32 hotspot
const char* password_ap = "abcd12345"; // Hotspot password
String ssid_target = "";  // Target WiFi SSID
String password_target = ""; // Target WiFi password
// Create Web Server instance
WebServer server(80);  // Web server listens on port 80
// HTML form page for user to input WiFi information
const char* html_form = R"(<!DOCTYPE html>
<html><head><title>WiFi Configuration</title></head><body><center><h1>WiFi Configuration Page</h1><form action="/save" method="POST"><label for="ssid">WiFi SSID:</label><br/><input id="ssid" name="ssid" type="text"/><br/><br/><label for="password">WiFi Password:</label><br/><input id="password" name="password" type="password"/><br/><br/><input type="submit" value="Save and Connect"/></form></center></body></html>)";
// Start the WiFi connection process
void connectToWiFi() {
  WiFi.begin(ssid_target.c_str(), password_target.c_str());
  Serial.print("Connecting to WiFi...");
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.println("Connected!");
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());
}
// Handle user submitted WiFi configuration
void handleWifiConfig() {
  if (server.hasArg("ssid") && server.hasArg("password")) {
    ssid_target = server.arg("ssid");
    password_target = server.arg("password");
    Serial.println("Received WiFi Credentials:");
    Serial.print("SSID: ");
    Serial.println(ssid_target);
    Serial.print("Password: ");
    Serial.println(password_target);
    server.send(200, "text/html", "<h1>Configuration Successful, Connecting to WiFi...</h1>");
    connectToWiFi();
  } else {
    server.send(400, "text/html", "<h1>Parameter Error</h1>");
  }
}
// Handle root path, display WiFi configuration form
void handleRoot() {
  server.send(200, "text/html", html_form);
}
void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_AP_STA);  // Set WiFi mode to STA+AP
  // Set ESP32 as hotspot
  WiFi.softAP(ssid_ap, password_ap);
  Serial.println("ESP32 started as hotspot");
  // Set up web server routes
  server.on("/", HTTP_GET, handleRoot);           // Display form
  server.on("/save", HTTP_POST, handleWifiConfig); // Handle form submission
  // Start web server
  server.begin();
  Serial.println("Web server started, waiting for connections...");
  // If ESP32 is already connected to target WiFi, print its IP address
  if (WiFi.status() == WL_CONNECTED) {
    Serial.print("WiFi Connected, IP Address:");
    Serial.println(WiFi.localIP());
  }
}
void loop() {
  // Handle web requests
  server.handleClient();
  // If WiFi is connected, print IP address
  if (WiFi.status() == WL_CONNECTED) {
    Serial.print("WiFi Connected, IP Address:");
    Serial.println(WiFi.localIP());
  }
}

ESP32 Microcontroller Connecting to Hotspot Network Example & Hotspot & Web Security Verification

ESP32 Microcontroller Connecting to Hotspot Network Example & Hotspot & Web Security Verification

Leave a Comment