arduino+ESP8266一键配网后,断电需要重新配网-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 468|回复: 3

[未解决] arduino+ESP8266一键配网后,断电需要重新配网

[复制链接]
发表于 2022-4-25 11:32 | 显示全部楼层 |阅读模式
请教大佬,我使用的ESP8266,使用SmartConfig,自动配网后,为什么断电重启,每次都需要重新配网。

#define BLINKER_WIFI
#define BLINKER_ALIGENIE_LIGHT //天猫精灵
#define BLINKER_MIOT_LIGHT     //小爱同学
#define BLINKER_DUEROS_LIGHT   //小度
#include <Blinker.h>
#include <Wire.h>
#include <ESP8266WiFi.h>      //WIFI库,配网必需


char auth[] = "*************";     //设备key,打开点灯app,添加设备,选择arduino设备,选择wifi接入,这里就会获得一个密钥,把密钥填写在这里。
bool WIFI_Status = true;   //WIFI状态标志位
int count=0;

void smartConfig()//配网函数
{
  WiFi.mode(WIFI_STA);                          //使用wifi的STA模式
  Serial.println("\r\nWait for Smartconfig...");//串口打印
  WiFi.beginSmartConfig();                      //等待手机端发出的名称与密码
  while (1)                                     //死循环,等待获取到wifi名称和密码
  {
    //等待过程中一秒打印一个.
    Serial.print(".");
    delay(1000);                                             
    if (WiFi.smartConfigDone())//获取到之后退出等待
    {
      Serial.println("SmartConfig Success");
      //打印获取到的wifi名称和密码
      Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
      Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
      WiFi.setAutoConnect(true);  // 设置自动连接,这个语句是最重要的语句
      break;
    }
  }
}

void WIFI_Init()
{
    Serial.println("\r\n正在连接");
    //当设备没有联网的情况下,执行下面的操作
    while(WiFi.status()!=WL_CONNECTED)
    {
        //WiFi.begin(WiFi.SSID().c_str(), WiFi.psk().c_str());
        if(WIFI_Status)//WIFI_Status为真,尝试使用flash里面的信息去 连接路由器
        {
            Serial.print(".");
            delay(1000);                                       
            count++;
            if(count>=5)
            {
                WIFI_Status = false;
                Serial.println("WiFi连接失败,请用手机进行配网");
            }
        }
        else//使用flash中的信息去连接wifi失败,执行
        {
            smartConfig();  //smartConfig技术配网
        }
     }  
     //串口打印连接成功的IP地址
     Serial.println("连接成功");  
     Serial.print("IP:");
     Serial.println(WiFi.localIP());
}

void setup()
{
    // 初始化串口
    Serial.begin(115200);

    // 初始化blinker
    WIFI_Init();//调用WIFI函数
    Blinker.begin(auth, WiFi.SSID().c_str(), WiFi.psk().c_str());//运行blinker

}

void loop()
{
    Blinker.run();//语句负责处理Blinker收到的数据,每次运行都会将设备收到的数据进行一次解析。
    //在使用WiFi接入时,该语句也负责保持网络连接
}


发表于 2022-4-25 11:58 | 显示全部楼层
明明有现成的ESPTOUCH配网,非得自己写
 楼主| 发表于 2022-4-25 12:29 | 显示全部楼层
XlinliY.Zhang 发表于 2022-4-25 11:58
明明有现成的ESPTOUCH配网,非得自己写

我是小白,请教一下,ESPTOUCH怎么用?
发表于 2022-4-26 08:11 | 显示全部楼层
海底奇侠 发表于 2022-4-25 12:29
我是小白,请教一下,ESPTOUCH怎么用?

点灯官网相关说明 https://diandeng.tech/doc/config-tool
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 07:38 , Processed in 0.070929 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表