赞
踩
<html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title> 不知名up的ESP8266网页配网 </title> </head> <body> <form name="my"> WiFi名称: <input type="text" name="s" placeholder="请输入您WiFi的名称" id="aa"> <br> WiFi密码: <input type="text" name="p" placeholder="请输入您WiFi的密码" id="bb"> <br> <input type="button" value="连接" onclick="wifi()"> </form> <script language="javascript"> function wifi() { var ssid = my.s.value; var password = bb.value; var xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET", "/HandleVal?ssid=" + ssid + "&password=" + password, true); xmlhttp.send() } </script> </body> </html>
#include <Arduino.h> #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266mDNS.h> const char* ssid = "你设置wifi名称"; const char* pd= "你的密码";//密码大于8位 ESP8266WebServer server(80); //服务器端口 String str= "<!DOCTYPE html><html><head><meta charset=\"UTF-8\"><meta name=\"viewport\"content=\"width=device-width, initial-scale=1.0\"><meta http-equiv=\"X-UA-Compatible\"content=\"ie=edge\"><title>不知名up的ESP8266网页配网</title></head><body><form name=\"my\">WiFi名称:<input type=\"text\"name=\"s\"placeholder=\"请输入您WiFi的名称\"id=\"aa\"><br>WiFi密码:<input type=\"text\"name=\"p\"placeholder=\"请输入您WiFi的密码\"id=\"bb\"><br><input type=\"button\"value=\"连接\"οnclick=\"wifi()\"></form><script language=\"javascript\">function wifi(){var ssid=my.s.value;var password=bb.value;var xmlhttp=new XMLHttpRequest();xmlhttp.open(\"GET\",\"/HandleVal?ssid=\"+ssid+\"&password=\"+password,true);xmlhttp.send()}</script></body></html>"; /***************************************************** * 函数名称:handleRoot() * 函数说明:客户端请求根函数的回调函数 * 参数说明:无 ******************************************************/ void handleRoot(){ server.send(200,"text/html",str); } void HandleVal() { String wifis = server.arg("ssid"); String wifip = server.arg("password"); Serial.println(wifis); Serial.println(wifip); WiFi.begin(wifis,wifip); } /***************************************************** * 函数名称:autoConfig() * 函数说明:自动连接WiFi函数 * 参数说明:无 * 返回值说明:true:连接成功 false:连接失败 ******************************************************/ bool autoConfig() { WiFi.mode(WIFI_STA); //设置为STA模式 WiFi.begin(); // 开始连接wifi Serial.print("AutoConfig Waiting......"); for (int i = 0; i < 20; i++) { if (WiFi.status() == WL_CONNECTED) { Serial.println("AutoConfig Success"); Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str()); Serial.printf("PSW:%s\r\n", WiFi.psk().c_str()); WiFi.printDiag(Serial); return true; //连接成功 } else { Serial.print("."); } } Serial.println("AutoConfig Faild!" ); return false; //自动连接失败 } /***************************************************** * 函数名称:handleNotFound() * 函数说明:响应失败函数 * 参数说明:无 ******************************************************/ void handleNotFound() { digitalWrite(LED_BUILTIN, 0); String message = "File Not Found\n\n"; message += "URI: "; message += server.uri(); message += "\nMethod: "; message += (server.method() == HTTP_GET) ? "GET" : "POST"; message += "\nArguments: "; message += server.args(); message += "\n"; for (uint8_t i = 0; i < server.args(); i++) { message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; } server.send(404, "text/plain", message); digitalWrite(LED_BUILTIN, 1); } /***************************************************** * 函数名称:htmlConfig() * 函数说明:通过html网页配置网络 * 参数说明:无 * 返回值说明:无 ******************************************************/ void htmlConfig(){ WiFi.mode(WIFI_AP_STA); WiFi.softAP(ssid, password); //AP模式下初始化wifi的账号和密码 Serial.println("AP设置完成"); IPAddress myIP = WiFi.softAPIP(); // 服务器IP Serial.print("AP IP address: "); Serial.println(myIP); if (MDNS.begin("esp8266")) { Serial.println("MDNS responder started"); } server.on("/", handleRoot); //当访问服务器的根目标时候,执行handleroot server.on("/HandleVal", HTTP_GET, HandleVal); server.onNotFound(handleNotFound);//请求失败回调函数 server.begin();//开启服务器 Serial.println("HTTP server started"); while(1) { server.handleClient(); MDNS.update(); if (WiFi.status() == WL_CONNECTED) { Serial.println("HtmlConfig Success"); Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str()); Serial.printf("PSW:%s\r\n", WiFi.psk().c_str()); Serial.println("HTML连接成功"); server.close(); break; } } } void setup() { // put your setup code here, to run once: Serial.begin(115200); Serial.println("ready~~~~"); bool wifiConfig = autoConfig(); if(wifiConfig == false){ htmlConfig(); } } void loop() { }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。