我正在使我的esp32成为一个接入点,一旦客户端与接入点连接,它就会共享它的家庭wifi凭据(ssid和密码)。然后,我使用这个ssid和密码将esp32与家庭wifi连接起来。但它并没有与家庭无线连接。我试图断开/停止接入点,但没有运气。
Arduino代码:
#include <WiFi.h>
#include "aWOT.h"
#include "StaticFiles.h"
#define LED_BUILTIN 2
const char* ssid     = "SSID";
const char* password = "Password";
WiFiServer server(80);
Application app;
String CompleteSSID="";
String CompletePassword="";
//Read SSID from web
void readSSID(Request &req, Response &res) {
res.print(CompleteSSID);
}
void updateSSID(Request &req, Response &res) {
 while(req.available())
          {
            char currentword=req.read();
            CompleteSSID+=currentword;
          }
Serial.println(CompleteSSID);
//digitalWrite(LED_BUILTIN, '1');
 return readSSID(req, res);
}
void readPassword(Request &req, Response &res) {
res.print(CompletePassword);
}
void updatePassword(Request &req, Response &res) {
 while(req.available())
          {
            char currentword=req.read();
            CompletePassword+=currentword;
          }
Serial.println(CompletePassword);
//digitalWrite(LED_BUILTIN, '1');
ConnectToHomeWiFi();
 return readPassword(req, res);
}
void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(115200);
  WiFi.softAP(ssid, password);
  IPAddress IP = WiFi.softAPIP();
  Serial.println(IP);
  app.get("/ssid", &readSSID);
  app.put("/ssid", &updateSSID);
  app.get("/password", &readPassword);
  app.put("/password", &updatePassword);
  app.route(staticFiles());
  server.begin();
}
void ConnectToHomeWiFi()
{
  char* ssid_n;
  char* pass_n;
  CompleteSSID.toCharArray(ssid_n, CompleteSSID.length());
  CompletePassword.toCharArray(pass_n, CompletePassword.length());
  //WiFi.softAPdisconnect();
  WiFi.disconnect(true);
  WiFi.persistent(false);
  //WiFi.setAutoConnect(false);
  //WiFi.mode(WIFI_OFF);
  //WiFi.setOutputPower(0);
  //WiFi.reconnect();
  WiFi.mode(WIFI_STA);
  delay(100);
  WiFi.begin(ssid_n, pass_n);
  Serial.print("Connecting to "); 
  Serial.println(CompleteSSID);
  uint8_t i = 0;
  while (WiFi.status() != WL_CONNECTED)
  {
    Serial.print('.');
    delay(500);
    if ((++i % 16) == 0)
    {
      Serial.println(F(" still trying to connect"));
    }
  }
  Serial.print(F("Connected. My IP address is: "));
  Serial.println(WiFi.localIP());
}
void loop() {
  WiFiClient client = server.available();
  if (client.connected()) {
    app.process(&client);
  }
}我在断开SoftAp或与家庭wifi连接方面做错了什么?
谢谢!
发布于 2020-03-05 07:35:16
以下是这个问题的解决办法:
void setup(){
  .....
  WiFi.softAP(ssid, password);
  IPAddress IP = WiFi.softAPIP();
  Serial.println(IP);
  ....
  server.begin();
}
void ConnectToHomeWiFi()
{
  ....
  WiFi.begin(ssid_n,pass_n);
  ....
}不需要断开接入点,改变访问模式,然后使用WiFi.begin。通过只使用WiFi.begin,我们可以连接到任何WiFi。
https://stackoverflow.com/questions/59598050
复制相似问题