ESP8266使用:
#include <ESP8266WiFi.h>
ESP32使用:
#include <WiFi.h>
SmartConfig的配置:
void SmartConfig()
{
WiFi.mode(WIFI_STA);
Serial.println("\r\nWait for Smartconfig...");
WiFi.beginSmartConfig();
while (1)
{
Serial.print(".");
delay(500); // wait for a second
if (WiFi.smartConfigDone())
{
Serial.println("SmartConfig Success");
Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str());
Serial.printf("PSW:%s\r\n", WiFi.psk().c_str());
break;
}
}
}
上电时自动重连:
bool AutoConfig()
{
WiFi.begin();
//如果觉得时间太长可改
for (int i = 0; i < 20; i++)
{
int wstatus = WiFi.status();
if (wstatus == WL_CONNECTED)
{
Serial.println("WIFI SmartConfig Success");
Serial.printf("SSID:%s", WiFi.SSID().c_str());
Serial.printf(", PSW:%s\r\n", WiFi.psk().c_str());
Serial.print("LocalIP:");
Serial.print(WiFi.localIP());
Serial.print(" ,GateIP:");
Serial.println(WiFi.gatewayIP());
return true;
}
else
{
Serial.print("WIFI AutoConfig Waiting......");
Serial.println(wstatus);
delay(1000);
}
}
Serial.println("WIFI AutoConfig Faild!" );
return false;
}
setup( )函数中启用:
void setup() {
Serial.begin(115200);
delay(100);
if (!AutoConfig())
{
SmartConfig();
}
}
微信扫码配网
通过SmartConfig一键配网后,如更换路由怎样重新配置
1.每次程序启动后,直接进入SmartConfig配置,设置超时时间,一旦超时则退出SmartConfig配置,在此时间段内可进行配置
#include <ESP8266WiFi.h>
void SmartConfig()
{
int TimerOverCount=0;
WiFi.mode(WIFI_STA);
Serial.println("WIFI Wait for Smartconfig");
WiFi.beginSmartConfig();
while (1)
{
Serial.printf(".%d",TimerOverCount);
if (WiFi.smartConfigDone())
{
Serial.println("WIFI SmartConfig Success");
Serial.printf("SSID:%s", WiFi.SSID().c_str());
Serial.printf(", PSW:%s\r\n", WiFi.psk().c_str());
Serial.print("LocalIP:");
Serial.print(WiFi.localIP());
Serial.print(" ,GateIP:");
Serial.println(WiFi.gatewayIP());
WiFi.setAutoConnect(true); // 设置自动连接
break;
}
if(TimerOverCount>=15)
{
WiFi.stopSmartConfig();
WiFi.begin();
break;
}
TimerOverCount ++;
delay(1000);
}
}
void setup(void)
{
// Start Serial
Serial.begin(115200);
delay(100);
SmartConfig();
}