问题:想控制esp32网络的定时断开和连,
目前就可以实现持续连接网络,但是不知道怎么网络连接,然后每间隔一小时重新连接,五分钟断开,无从下手,求指导一下;
#include "WiFi.h"
#include "EEPROM.h"
#define LENGTH(x) (strlen(x) + 1) // 定义一个长度char字符串调用
#define EEPROM_SIZE 300 // EEPROM的大小
#define WiFi_rst 0 // WiFi复位引脚 (Boot button on ESP32)
String ssid; //用于存储ssid的字符串变量
String pss; //用于存储pss的字符串变量
String ID;
unsigned long rst_millis;
const char* id_s = "S20220400000";
void setup()
{
Serial.begin(115200); //设置波特率
pinMode(WiFi_rst, INPUT); //设置IO0为输出引脚模式
EEPROM.begin(EEPROM_SIZE); //初始化EEPROM
write_ID();
delay(500);
read_ID();
read_wifi_ssid_or_pss(); //读取账号密码
WiFi.begin(ssid.c_str(), pss.c_str()); //开启WiFi连接
delay(3500); // 延时等待WiFi连接
if (WiFi.status() != WL_CONNECTED) // 如果没有连接WiFi
{
WiFi.mode(WIFI_AP_STA); //将WiFi初始化为Station,启动SmartConfig
WiFi.beginSmartConfig();
Serial.println("等待SmartConfig应答."); //等待手机的SmartConfig报文
while (!WiFi.smartConfigDone())
{
delay(500);Serial.println(".");
}
Serial.println("SmartConfig已应答.");
Serial.println("网络连接中"); //等待WiFi连接到AP
while (WiFi.status() != WL_CONNECTED)
{
delay(500);Serial.println(".");
}
Serial.println("网络连接成功.");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
write_wifi_ssid_or_pss(); // WiFi SSID和密码写入EEPROM
}
else
{Serial.println("网络连接成功"); } //连接成功
}
void loop()
{
rst_millis = millis(); // put your main code here, to run repeatedly:
while (digitalRead(WiFi_rst) == LOW) {} // 等待启动按钮被按下
if (millis() - rst_millis >= 3000) // 检查按钮按下时间,如果大于3秒,清除wifi信息,重启ESP
{
Serial.println("重置WiFi");
writeStringToFlash("", 0); // 重置账号
writeStringToFlash("", 40); // 重置密码
Serial.println("重置完成,等待重启");
delay(500);
ESP.restart(); // 重启ESP
}
}
|