美文网首页失传技术研究所
[猫神様のメモ帳 ]ESP8266的SmartConfig功能

[猫神様のメモ帳 ]ESP8266的SmartConfig功能

作者: 2d3725d1f0a8 | 来源:发表于2018-08-30 17:18 被阅读64次

    在制作WIFI天气显示屏时,曾经挖了一个坑,是关于ESP8266 SmartConfig功能的,昨天一个观众向我提起了这个,我决定做一个专栏讲解一下喵~

    Q:有人也许会问SmartConfig是干啥的喵?

    A:SmartConfig是安信可公司开发的利用手机配置ESP8266连接WIFI的一个物联网设备标配功能。

    Q:ESP8266怎么玩?

    A:ESP8266基础教程

    好了下面进入正题,今天主要要讲两个库和

    1.0    SmartConfig函数

            WiFi.beginSmartConfig();    //开启SmartConfig功能(bool)

            WiFi.smartConfigDone();    //检测SmartConfig配置状态(bool)

    在正常情况下,我们一般只使用这两个函数喵

    1.1    例程讲解

            仔细观察这个例程可以发现,我们需要在初始化时定义WIFI模式为STA或者AP+STA模式,随后启动SmartConfig,通过while等待SmartConfig配置完成,完成后SmartConfig自动配置WIFI并连接,随后串口输出SSID和密码,当然,不需要可以删掉的喵~

    1.2    手机端APP

    APP默认使用安信可公司官方APP

    https://github.com/EspressifApp/EsptouchForAndroid

    在目录EsptouchForAndroid/releases/apk/中

    1.3   点明关键

    SmartConfig功能很是方便,但是有一个问题,就是WIFI配置不能掉电保存,难道我们必须每次开启设备都要用手机配置一次?

    答案是NO,所以我们就需要用到下面这个库

    2.0    ESP8266WiFiMulti.h

            ESP8266WiFiMulti.h这个库是一个用来为esp8266配置多个WIFI的工具,使用这个库可以为ESP8266添加多个可连接SSID,让ESP8266自行选择WIFI连接,并且WIFI配置是自动保存在EEPROM中的,可以掉电保存,非常适合用来解决SmartConfig的这一问题。

    2.1        函数详解

    wifiMulti.run();    //从EEPROM中读取配置并连接(bool)

            wifiMulti.addAP(SSID,PASSWORD);    //添加WIFI热点信息并自动保存

    2.2        函数例程(原创)

    #include

    #include

    ESP8266WiFiMulti wifiMulti;

    void smartConfig()    {

          WiFi.mode(WIFI_STA);

          Serial.println("\r\nWait for Smartconfig");

          WiFi.beginSmartConfig();

          while (!WiFi.smartConfigDone()) {

                Serial.print(".");

                delay(500);

              }

          Serial.println("SmartConfig Success");

          Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());

          Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());

          wifiMulti.addAP(WiFi.SSID().c_str(),WiFi.psk().c_str());

    }

    void setup() {

      Serial.begin(115200);

      delay(1000);

      Serial.println();

      Serial.println("Start module");

      wifiMulti.run();

      delay(1000);

      if (wifiMulti.run() == WL_CONNECTED) {

            Serial.println("");

            Serial.println("WiFi connected");

            Serial.println("IP address: ");

            Serial.println(WiFi.localIP());

          }

      else if (wifiMulti.run() != WL_CONNECTED) {

            Serial.println("WiFi not connected!");

            smartConfig();

           }

    }

    void loop(){

    }

    2.3    例程详解

    基础代码与SmartConfig部分相同,在Setup部分添加了自动连接和检测连接状态的功能,如果检测到连接失败,则自动进入SmartConfig模式,SmaetConfig函数中添加wifiMulti.addAP()用于保存获取的WIFI,便于下次上电连接。

    2.4    运行效果

    手机配置后重启设备自动连接

    不好了喵,WIFI密码暴露了,不管了,反正没人知道我家在哪。

    喜欢的话点个关注收藏加投币好喵,粉丝好少,呜呜呜。。。

    有什么问题评论区直接提问,对了喵,本喵9月份就要去新疆上大学了,没错就是新疆,脑袋一热填了新疆师范,以后要累死了,呜呜呜。。。

    相关文章

      网友评论

        本文标题:[猫神様のメモ帳 ]ESP8266的SmartConfig功能

        本文链接:https://www.haomeiwen.com/subject/oosdwftx.html