准备:
1、智能网络模块(WIFI模块ESP8266-12S/12F)见底图
2、Arduino IDE 最新版 (1.8.13)目的:
1、通过固件访问内置网页可以进行重置WIFI密码 (见底图)
2、通过固件内嵌网页可以进行指令测试(通过网页模拟串口发送指令)
void HandleVal(){ handlenum++; if(handlenum>1)handlenum=-1; if(handlenum==0||handlenum==2)return; String wifis = server.arg("ssid"); //wifi名称 String wifip = server.arg("password"); //wifi密码 String testcmd=server.arg("cmd"); //命令测试 wifis.trim(); if(wifis!=""&&handlenum==1) { Serial.println("Received webServer Config info:");Serial.println(wifis); Serial.println(wifip); WiFi.mode(WIFI_STA); WiFi.begin(wifis,wifip);//连接成功自动保存 if((WiFi.status()== WL_CONNECTED)) { strcpy(wifi_ssd,wifis.c_str());//名称复制 wifis WiFi.SSID().c_str() strcpy(wifi_psw,wifip.c_str());//密码复制 wifip WiFi.psk().c_str() rom_save();//保存wifi及模式参数 到EEPROM 断电记忆 //ESP.reset();//重启 } } testcmd.trim();//去掉前后空格 if(testcmd!=""&&handlenum==1) { Serial.print("Recv Web Commond:");Serial.println(testcmd); doAction_local(testcmd);//与串口一致的执行函数(本地,网络,串口等统一到此中执行减少代码量) testcmd=""; }}/***************************************************** * 函数名称:handleNotFound() * 函数说明:响应失败函数 * 参数说明:无******************************************************/void handleNotFound() { digitalWrite(led_PIN, 0);//指示灯LED_BUILTIN String message = "File Not Found"; message += "URI: "; message += server.uri(); message += "Method: "; message += (server.method() == HTTP_GET) ? "GET" : "POST"; message += "Arguments: "; message += server.args(); message += ""; for (uint8_t i = 0; i < server.args(); i++) { message += " " + server.argName(i) + ": " + server.arg(i) + ""; } server.send(404, "text/plain", message); led2(500,8);//0.3s-3次循环-余1灭 }/***************************************************** * 函数名称:htmlConfig() * 函数说明:web配置WiFi函数 (当智能配网失败时调用) * 参数说明:无 * 调用方法 [b]setup[/b]()中进行初始化******************************************************/void htmlConfig(){ WiFi.mode(WIFI_AP_STA);//设置模式为AP+STA双模式 digitalWrite(led_PIN, LOW); //IPAddress softLocal(192,168,128,1); //IPAddress softGateway(192,168,128,1); //IPAddress softSubnet(255,255,255,0); //WiFi.softAPConfig(softLocal, softGateway, softSubnet); String apName = ("9I"+(String)ESP.getChipId()); // 2 设置WIFI名称 //const char *softAPName = apName.c_str(); apssid= apName.c_str(); WiFi.softAP(apssid, appassword); IPAddress myIP = WiFi.softAPIP(); if (MDNS.begin("esp8266")) {//hostString=esp8266 Serial.println("web open url:esp8266.local or 192.168.4.1"); } server.on("/", handleRoot); //回调 html,请求 server.on("/HandleVal", HTTP_GET, HandleVal); //连接 server.onNotFound(handleNotFound); //请求失败回调函数 (可选) server.begin();//开启服务器 Serial.println("HTTP server started");}
内嵌网页代码(压缩)
//写入内置网页配网专用(AP热点配网并保存EEPROM)超长字符串写法String htmlstr = String("") +"久爱物联智能配网"+""+"
重置WIFI密码及指令测试
WiFi名称: WiFi密码: "+"模块内置指令测试指令:"+"
一路二路"+"三路四路
请输入模块指令"+""+"
手机/电脑连接您的WIFI手机/电脑浏览器输入模块IP地址输入您的WIFI账号密码点击连接连接成功后可以测试内部指令"+"
© JIUAI 2020
";
头文件引用及实例声明
#include
#include
ESP8266WebServer server(80);//端口80
后续代码及固件陆续共享发布,感谢交流指点!不喜勿喷!多多指教!