在制作WIFI天气显示屏时,曾经挖了一个坑,是关于ESP8266 SmartConfig功能的,昨天一个观众向我提起了这个,我决定做一个专栏讲解一下喵~
Q:有人也许会问SmartConfig是干啥的喵?
A:SmartConfig是安信可公司开发的利用手机配置ESP8266连接WIFI的一个物联网设备标配功能。
Q:ESP8266怎么玩?
A:ESP8266基础教程
好了下面进入正题,今天主要要讲两个库<ESP8266WiFi.h>和<ESP8266WiFiMulti.h>
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 <ESP8266WiFiMulti.h> 函数详解
wifiMulti.run(); //从EEPROM中读取配置并连接(bool)
wifiMulti.addAP(SSID,PASSWORD); //添加WIFI热点信息并自动保存
2.2 <ESP8266WiFiMulti.h> 函数例程(原创)
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
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 运行效果