ESP32-Arduino物聯網工控(二)串口轉TCP轉發機:WIFI連接,手機連WIFI配置熱點名字


先上代碼,歡迎伸手黨。

#include <WiFi.h>
#include <ESPmDNS.h>
#include <WebServer.h>
#include <WiFiMulti.h>
#include "esp_http_client.h"
#include "esp_camera.h"
#include <ArduinoJson.h>


const char* AP_SSID  = "ESP32_Config"; //熱點名稱
const char* AP_PASS  = "12345678";  //密碼

#define ROOT_HTML  "<!DOCTYPE html><html><head><title>WIFI Config by Mastwet</title><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"></head><style type=\"text/css\">.input{display: block; margin-top: 10px;}.input span{width: 100px; float: left; float: left; height: 36px; line-height: 36px;}.input input{height: 30px;width: 200px;}.btn{width: 120px; height: 35px; background-color: #000000; border:0px; color:#ffffff; margin-top:15px; margin-left:100px;}</style><body><form method=\"GET\" action=\"connect\"><label class=\"input\"><span>WiFi SSID</span><input type=\"text\" name=\"ssid\"></label><label class=\"input\"><span>WiFi PASS</span><input type=\"text\"  name=\"pass\"></label><input class=\"btn\" type=\"submit\" name=\"submit\" value=\"Submie\"></form></body></html>"
WebServer server(80);
WiFiMulti wifiMulti;
String ssid = "";           //WIFI名稱
String password = "";     //WIFI密碼

WiFiClient client;
void restCallback(TimerHandle_t xTimer ) { //長時間不訪問WIFI Config 將復位設備
resr_count_down --;
Serial.print("resr_count_down: ");
Serial.println(resr_count_down);
if (resr_count_down < 1) {
ESP.restart();
}
}
void setup() { Serial.begin(115200); WiFi.mode(WIFI_AP);//配置為AP模式 boolean result = WiFi.softAP(AP_SSID, AP_PASS);//開啟WIFI熱點 if (result) { IPAddress myIP = WiFi.softAPIP(); //打印相關信息 Serial.println(""); Serial.print("Soft-AP IP address = "); Serial.println(myIP); Serial.println(String("MAC address = ") + WiFi.softAPmacAddress().c_str()); Serial.println("waiting ..."); xTimer_rest = xTimerCreate("xTimer_rest", 1000 / portTICK_PERIOD_MS, pdTRUE, ( void * ) 0, restCallback); xTimerStart( xTimer_rest, 0 ); //開啟定時器 } else { //開啟熱點失敗 Serial.println("WiFiAP Failed"); delay(3000); ESP.restart(); //復位esp32 } if (MDNS.begin("esp32")) { Serial.println("MDNS responder started"); } //首頁 server.on("/", []() { server.send(200, "text/html", ROOT_HTML); }); //連接 server.on("/connect", []() { server.send(200, "text/html", "<html><body><h1>successd,conning...</h1></body></html>"); WiFi.softAPdisconnect(true); //獲取輸入的WIFI賬戶和密碼 String ssid = server.arg("ssid"); String pass = server.arg("pass"); Serial.println("WiFi Connect SSID:" + ssid + " PASS:" + pass); can_connect = true; //設置為STA模式並連接WIFI WiFi.mode(WIFI_STA); WiFi.begin(ssid.c_str(), pass.c_str()); resr_count_down = 120; xTimerStop(xTimer_rest, 0); uint8_t Connect_time = 0; //用於連接計時,如果長時間連接不成功,復位設備 while (WiFi.status() != WL_CONNECTED) { //等待WIFI連接成功 delay(500); Serial.print("."); Connect_time ++; if (Connect_time > 80) { //長時間連接不上,復位設備 Serial.println("Connection timeout, check input is correct or try again later!"); delay(3000); ESP.restart(); } } }); server.begin(); while(!can_connect){ server.handleClient(); } }
void loop(){

}

 

 

 

上電連接wifi,然后自動連接。

代碼有些地方不是我寫的,但忘了是誰。請看到並知道原作者的補充一下。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM