admin管理员组文章数量:1627948
自动配网的实现
利用Arduino IDE自带的自动联网函数smartConfig()
bool AutoConfig()
{
WiFi.begin();
//如果觉得时间太长可改
for (int i = 0; i < 120; 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;
}
如果8266已经配网,那么它会默认连接上一次的网络
如果是第一次配置网络,它会等待120秒钟,寻找内存中是否已配置过网络,确认连接不上网络后,进入智能配网程序
void smartConfig()
{
WiFi.mode(WIFI_STA);
Serial.println("\r\nWait for Smartconfig等待连接");
delay(2000);
// 等待配网
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());
WiFi.setAutoConnect(true); // 设置自动连接
break;
}
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
这时候我们需要在手机EspTouch(百度搜索下载即可)软件上进行配网,这款软件使用非常简单,自行研究就好
因为我所在的租房经常断电网络中断,导致8266重启后,还没等到无线路由重启完成,连接不上网络的情况下就进入手动配网模式,所以我把等到时间从20秒改为120秒,两分钟足够家庭路由器重启了,修改之后就不用每次断电都要重新插拔设备。
最终的程序我放在下面
#include <ESP8266WiFi.h>
void smartConfig()
{
WiFi.mode(WIFI_STA);
Serial.println("\r\nWait for Smartconfig等待连接");
delay(2000);
// 等待配网
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());
WiFi.setAutoConnect(true); // 设置自动连接
break;
}
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
//自动配网函数,成功配对以后设备会记忆密码,通电自动连接
bool AutoConfig()
{
WiFi.begin();
//如果觉得时间太长可改
for (int i = 0; i < 120; 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;
}
void setup()
{
Serial.begin(9600);
if (!AutoConfig())
{
smartConfig();
}
}
void loop()
{
delay(100);
}
这样一个自动配网的程序就可以结合物联网平台程序制作智能开关了,关于物联网,大家可以参考我之前的文章,一起学习交流。
小爱同学,小度同时控制灯
如何实现8266程序外网升级
抖音粉丝推送到微信,酷!!
超级简单的内网穿透,重点是免费…
如何开发微信小程序控制ESP8266模块?
怎么在WIN10系统上搭建自己的物联网服务器
版权声明:本文标题:ESP8266用EspTouch一键配网,断网自动恢复连接 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1729003310a1182755.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论