主要原理采用了WIFI UDP发送广播的方式
由于Arduino提供的驱动包实在太方便了,这里直接用了,可以去看一下库源码,源码的继承关系还是比较多了,一个WIFI类继承了多个不同的父类,其中ESP8266WiFiSTAClass类提供了在STA模式下的各种方法,这里面就有
bool beginWPSConfig(void);
bool beginSmartConfig();
bool stopSmartConfig();
bool smartConfigDone();四个方法,WPS需要路由器支持,其他三个方法看名字就知道用途
demo代码如下:
char ssid[30] = STASSID;
char password[30] = STAPSK;
//以下函数在setup中调用
void smartConfig()
{
WiFi.mode(WIFI_STA);//切换到STA模式
Serial.println(“\r\nWait for Smartconfig\r\n”);
WiFi.beginSmartConfig();//开始smartconfig
while (1)
{
Serial.print(“Waiting …\r\n”);
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());
memset(ssid,0,sizeof(ssid));
memset(password,0,sizeof(password));
sprintf(ssid,”%s”,WiFi.SSID().c_str());
sprintf(password,”%s”,WiFi.psk().c_str()); //设置WIFI账号和密码
WiFi.setAutoConnect(true); //设置自动连接
break;
}
delay(1000);
}
}
昨天找了半天的配网工具,其实乐鑫官方就提供了一个很好用的esp-touch
需要先把手机连接到wifi上,然后通过UDP广播,ESP32才可以收到数据包
网上各种配网软件乱七八糟的,这个软件在很多手机的应用商店没有上架,所以还是要去乐鑫的官网下载。