esp8266 smartconfig 一键配网代码

 很多代码在展示smartconfig 的时候,只写了smartconfig的代码,导致让人会误以为系统会自动检测网络是否连接状态。

实际上在smartconfig的时候必须先检测网络连接状态一定时间,然后在无法联通的时候再启动smartconfig 的设置,参考代码如下。

#include <ESP8266WiFi.h>

void setup() {
//  ESP.eraseConfig();
//  delay(1000);
//  ESP.reset();
//  ESP.restart();
  Serial.begin(115200);
  pinMode(2, OUTPUT);
  WiFi.mode(WIFI_STA);
  WiFi.begin();
  int i=0;
  while(i<=30){
    Serial.println(i);
    delay(100);
    if (WiFi.status() == WL_CONNECTED)break;
    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);
  }
  else
  {
    smartConfig();
  }
}


void smartConfig() {
  Serial.println("begin stmart config...");
  WiFi.beginSmartConfig();
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(">");
    digitalWrite(2, 0);
    delay(300);
    digitalWrite(2, 1);
    delay(300);
    if (WiFi.smartConfigDone()) {
      Serial.println("\r\nsmartconfig success");
      Serial.printf("SSID:%S", WiFi.SSID().c_str());
      Serial.printf("PW:%s", WiFi.psk().c_str());
      break;
    }
  }
}

void loop() {

}

smartconfig 配置成功后,确实会把链接配置保存下来,但是当你运行

WiFi.begin()后如果立马使用WiFi.status() != WL_CONNECTED 的判断未必能检测到网络连通情况。

所以必须加上一个while 的循环延时。

上面有几行被注释的代码,用于擦除efrom 中保存的wifi配置信息。

 

  ESP.eraseConfig();
  delay(1000);
  ESP.reset();
  ESP.restart();

当然这个smartconfig 确实带来了方便,但是也有他的不足,就是如果你是要连入手机热点的时候就稍微有点麻烦,你必须另外准备一部手机来进行操作!

当然这里面是否有安全问题是不知道的!

 

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值