赞
踩
挺好用的支持多种方式配网。
1.引入头文件
ESP8266使用:
#include <ESP8266WiFi.h>
ESP32使用:
#include <WiFi.h>
1
2.WIFI配置核心代码
SmartConfig的配置: 如下代码会一直循环,直到我们通过微信公众号完成配置。
void SmartConfig()
{
WiFi.mode(WIFI_STA);
Serial.println("\r\n wait for smartconfig....");
WiFi.beginSmartConfig();
while(1)
{
Serial.print(".");
delay(500);
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;
}
}
}
3. 设备重启后的自动重新连接功能
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(",PWS:%s\r\n",WiFi.psk().c_str());
Serial.print("localIP:");
Serial.println(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;
}
WiFi 的配置默认是会存储在 NVS 的,具体参看 esp_wifi_set_storage 的 API 介绍,如果希望不存储,可以调用该接口,参数为 WIFI_STORAGE_RAM。
有以下两种方式清除参数:
如果想清除 NVS 中的数据,可以用命令 make erase_flash 做整片擦除。
如果想在应用中清除 WiFi 配置,如通过按键触发恢复参数,可调用 esp_wifi_restore 接口,会清除相关 WiFi 配置,具体请看 API 介绍。
4.入口函数
Arduino 默认启动函数,启动时只调用一次,本次实验 loop函数放空。
void setup() {
Serial.begin(115200);
delay(100);
if (!AutoConfig())
{
SmartConfig();
}
}
微信配网二维码
断开IO0 的低电平 ,重启ESP32 ,然后打开(搜索)微信小程序“一键配网”进行配置
使用小车会探索未知黑暗领域,增加开灯功能,以便观察。
代码:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。