wifimanager库
esp8266
启动后连接WiFi时,连接WiFi失败时,会启动ap模式让客户连接 客户使用手机或者电脑连接esp8266建立的WiFi网络通过页面进行WiFi配置
这种方法虽然解决了配网的问题但是操作相对繁琐
一键配网模式
smartconfig 需要使用手机app将wifi账号密码发送给目标板
工作原理 通过手机app端发送包含WiFi信息的udp广播包,智能中断的wifi芯片可以接收到该udp包
知道udp包的组成形式,就可以通过接受到的udp包解密出的wifi密码 。然后智能硬件配置到收到的用户名密码到指定的WiFi AP上。
简单理解的操作步骤如下:
- 8266端作为Station,进入Smartconfig模式,等待手机端发送用户民和密码;
- 手机端把填写当前网络的密码通过UDP广播;
- 8266获取UDP包后配置,连接网路;
在乐鑫官网找到相对应的手机app下载
#include <ESP8266WiFi.h>
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);//返回值一般为6说明未连接
delay(1000);
}
}
Serial.println("WIFI AutoConfig Faild!" );
return false;
}
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());
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
break;
}
}
}
void setup()
{
Serial.begin(115200);
if(!AutoConfig)
{
SmartConfig();
}
}
void loop(){
}