源码
#include <WiFi.h>
#include <WebServer.h>// 定义用于存储Wi-Fi凭证的变量
char ssid[32] = "";
char password[64] = "";// 创建Web服务器实例
WebServer server(80);// 创建一个Soft AP的SSID和密码
const char* softAP_SSID = "ESP32_Config";
const char* softAP_Password = "12345678";// 处理根目录请求
void handleRoot() {String html = "<h1>Wi-Fi Configuration</h1>""<form action=\"/connect\" method=\"post\">""SSID: <input type=\"text\" name=\"ssid\"><br>""Password: <input type=\"password\" name=\"password\"><br>""<input type=\"submit\" value=\"Connect\">""</form>";server.send(200, "text/html", html);
}// 处理连接请求
void handleConnect() {for (uint8_t i = 0; i < server.args(); i++) {if (server.argName(i) == "ssid") {strcpy(ssid, server.arg(i).c_str());}if (server.argName(i) == "password") {strcpy(password, server.arg(i).c_str());}}server.send(200, "text/html", "<h1>Connecting...</h1>");connectToWiFi();
}// 连接到Wi-Fi网络
void connectToWiFi() {// WiFi.softAPdisconnect(true); //将会关闭热点WiFi.begin(ssid, password);while (WiFi.status() != WL_CONNECTED) {delay(500);Serial.print(".");}Serial.println("");Serial.println("WiFi connected");Serial.println("IP address: ");Serial.println(WiFi.localIP());}void setup() {Serial.begin(115200);// 创建Soft APWiFi.softAP(softAP_SSID, softAP_Password);IPAddress IP = WiFi.softAPIP();Serial.println("Soft AP IP address: ");Serial.println(IP);// 初始化Web服务器server.on("/", handleRoot);server.on("/connect", HTTP_POST, handleConnect);server.begin();Serial.println("HTTP server started");
}void loop() {server.handleClient();
}
连接过程
板子上电后,会显示一个热点,连接此热点,打开浏览器输入串口提示的ip。会显示一个网页在网页中输入路由器的账号和密码即可连接到自家的路由器了