在ESP32上实现自动WIFI配网
#include "WiFi.h"
void setup() {
Serial.begin(115200);
//等待串口准备
delay(100);
//启动WIFI连接
Serial.println("");
Serial.print("Connection WIFI.");
WiFi.begin();
//检查连接状态
int count = 0;
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.print(".");
count++;
//连接超次数
if (count > 10)
{
Serial.println("WIFI Wait for Smartconfig");
//设置为Station模式
WiFi.mode(WIFI_STA);
//开始智能配网
WiFi.beginSmartConfig();
while (1)
{
//智能配网成功
if (WiFi.smartConfigDone())
{
WiFi.setAutoConnect(true); // 设置自动连接
count = 0;
//返回再次连接
break;
}
}
}
}
//连接成功,打印WIFI信息
Serial.println("");
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());
}
void loop() {}
上传代码后打开微信安信哥公众号,点击WIFI配置.
输入密码后连接.
WiFi 的配置默认是会存储在 NVS 的,什么NVS请查看*这里.*
清除信息
#include <esp_wifi.h>
esp_wifi_restore();
关于此函数的说明请查看esp_wifi.h.
/**
* @brief Restore WiFi stack persistent settings to default values
* This function will reset settings made using the following APIs:
* - esp_wifi_get_auto_connect,
* - esp_wifi_set_protocol,
* - esp_wifi_set_config related
* - esp_wifi_set_mode
*
* @return
* - ESP_OK: succeed
* - ESP_ERR_WIFI_NOT_INIT: WiFi is not initialized by esp_wifi_init
*/
esp_err_t esp_wifi_restore(void);