微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

长时间将 Wifi 连接到 ESP8266 到 iOS

如何解决长时间将 Wifi 连接到 ESP8266 到 iOS

我使用 NodeMCU (ESP8266) 作为车库开启器。当我靠近车库时,我会自动连接到我的 ESP 的 Wifi,并可以通过输入 URL(这是我 iPhone 上的“应用程序”)打开车库。 这实际上效果很好。但是,连接到 wifi 的时间从 1 到 100 秒不等,当我已经迟到时可能会有点令人沮丧。 当我在 iPhone 上打开系统设置时,我已经可以看到 ESP-WiFi 正在连接,但有时需要超长时间(有时超过一分钟,有时只有几秒钟)才能完全连接,这是打开车库所需的。

  • 该设计旨在永不重启 ESP。
  • WiFi 仅提供车库连接,没有互联网或其他任何东西。
  • 我们仅将其用于数量有限的手机 (2)。因此,为这些电话使用静态 IP 是没有问题的。
  • 代码已使用 Arduino IDE 编写和上传

有人有快速修复的想法吗?

我还提供了下面的代码,这些代码相当混乱,但可能有助于更好地理解。

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
 
String html1 = "<!DOCTYPE html>\r\n<html>\r\n\
<head>\r\n<Meta content=\"text/html; charset=ISO-8859-1\" http-equiv=\"content-type\">\r\n\
<title>Webr</title>\r\n\
<form action=\"";

// String((val)?"/1.html":"/0.html")
String html2 = "\">\r\n<input value=\"GO!\" style=\"";
String html3 = " width:15em;height:7em; font-size: 50px;\" type=\"submit\">\
</form>\r\n</head>\r\n<body>\r\n</body>\r\n</html>";
 
ESP8266WebServer server(80);    // Server Port 
int val = 1;                    //Initial value (off)
String Temp = "";
bool TurnOn = false;
int timerValue = 1000;
int timer = timerValue;
int startTimer = 3000;
bool started = true;
const int outputpin = 4;

void Turn_ON()       // When calling "http://<ip address>/1.html"
{
  val = 0;                      // Relais Aus
  digitalWrite(outputpin,1);         // GPIO0
  Temp = html1 + String((val) ? "/1.html" : "/0.html");
  Temp += html2 + String((val) ? "BACKGROUND-COLOR: DarkGray;" : "BACKGROUND-COLOR: Chartreuse;") + html3;
  server.send(200,"text/html",Temp);
  TurnOn = true;
}
 
void Turn_OFF()  // when calling "http://<ip address>//0.html"
{
  val = 1;                      // Relais Ein
  digitalWrite(outputpin,0);         // GPIO0
  Temp = html1 + String((val) ? "/1.html" : "/0.html");
  Temp += html2 + String((val) ? "BACKGROUND-COLOR: DarkGray;" : "BACKGROUND-COLOR: Chartreuse;") + html3;
  server.send(200,Temp);
}
 
void Turn_Index()           // when calling "http://<ip address>/"
{
  Temp = html1 + String((val) ? "/1.html" : "/0.html");
  Temp += html2 + String((val) ? "BACKGROUND-COLOR: DarkGray;" : "BACKGROUND-COLOR: Chartreuse;") + html3;
  server.send(200,Temp);
}
 
void setup()
{
  //digitalWrite(outputpin,0);           // Relay off
  pinMode(outputpin,OUTPUT);           // GPIO0 out
//  pinMode(2,INPUT_PULLUP);     // GPIO2 Pullup
//  digitalWrite(outputpin,0);           // Relay off
 
  Serial.begin(115200);         // Serial connection
  Serial.println("");           // print empty line
  WiFi.mode(WIFI_AP);           // access point modus
  WiFi.softAP("XXXXX","XXXXX");    // Name and PW of WiFi
  delay(500);                   //Wait 0.5s
  Serial.print("IP Adresse ");  //Current server IP
  Serial.println(WiFi.softAPIP());
 
  //  Bechandlung der Turnsen anschlissen
  server.on("/",Turn_Index);
  server.on("/1.html",Turn_ON);
  server.on("/0.html",Turn_OFF);
 
  server.begin();               // Server start
  Serial.println("HTTP Server gestartet");
}
 
void loop()
{
 /* 
  *  
  *if(started == true){
  startTimer --;
        Serial.println(startTimer);

  }

  if(startTimer < 0){
      digitalWrite(0,0); 
              Serial.println("Relais aus");
   started = false;

    }
    */
  

  if(TurnOn == true)
    {
    timer --;
      Serial.println(timer);

  }

    
  if(timer < 0){
          Serial.println("switch off");

    Turn_OFF();
    TurnOn = false;
    timer = timerValue;
  }
  
  server.handleClient();

  /*
  if (!digitalRead(2))          //GPIO2 press
  {
    val = !val;                 // change
    digitalWrite(0,val);
    while (!digitalRead(2))server.handleClient(); // button release.
  }
  */
  
  
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。