ESP32/8266 SmartConfig配置+自动重连+清除配置

ESP系列的smartconfig配置模块WIFI很方便,说说如何配置和重启后自动重连。

#include <WiFi.h>

简单配置:

void SmartConfig()
{
    WiFi.mode(WIFI_AP_STA);
    Serial.println("WIFI Wait for Smartconfig");
    WiFi.beginSmartConfig();
    while (1)
    {
        Serial.print(".");
        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;
        }
        delay(1000);
    }
}

自动重连:

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();
  }
}

WiFi 的配置默认是会存储在 NVS 的,具体参看 esp_wifi_set_storage 的 API 介绍,如果希望不存储,可以调用该接口,参数为 WIFI_STORAGE_RAM。

有以下两种方式清除参数:

  1. 如果想清除 NVS 中的数据,可以用命令 make erase_flash 做整片擦除。
  2. 如果想在应用中清除 WiFi 配置,如通过按键触发恢复参数,可调用 esp_wifi_restore 接口,会清除相关 WiFi 配置,具体请看 API 介绍。

1、使用esptool.py工具 将Flash整片擦除。

python esptool.py --chip esp32 --port /dev/tty.SLAB_USBtoUART erase_flash

2、将WiFi堆栈永久设置恢复为默认值。

#include <esp_wifi.h>

esp_err_t esp_wifi_restore(void)

此功能将重置使用以下API进行的设置:

  • esp_wifi_get_auto_connect
  • esp_wifi_set_protocol
  • esp_wifi_set_config
  • esp_wifi_set_mode

返回

  • ESP_OK:成功 ESP_ERR_WIFI_NOT_INIT:
  • esp_wifi_init未初始化WiFi
  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值