自動配網的實作
利用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系統上搭建自己的物聯網服務器
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/302865.html
標籤:其他
上一篇:高級驅動——(驅動所有按鍵)
