本帖最后由 zj_1217 于 2020-4-9 16:52 编辑
我用ESP-12系列模块时,程序运行7至10天左右会掉网,只能重启才能联网,经探索找到1个解决办法,不使用任何硬件引脚,利用resetFunc()内置函数,实现重启。
实现方法如下:
1、定义变量
uint32_t con_time = 0; //断网记时
int con_flag = 0; //断网标记,1为断网 void(*resetFunc) (void) = 0; 2、在loop中加入
if (Blinker.connected())
{
con_flag = 0;
} else
{
if (con_flag == 0)
{
con_time = millis(); //给断网时间赋初始值
con_flag = 1;
} else
{
if ((millis() - con_time) >= 90000) //判断断网时间超90秒后执行重启,这个时间可根据实际需要调整
{
resetFunc();
}
}
}
以上方法已在4个模块中运行1个月以上,还需注意的是,在有些情况下不能重启,如晚上灯已打开,若重启会造成灯灭,可以在重启函数前再加一层判断或延时,控制在灯开时不重启或开灯状态下延时几个小时再重启。 例如: if ((millis() - con_time) >= 90000 && !digitalRead(LED1_PIN)) //判断断网时间超90秒并且LED1_PIN为低电平时执行重启
|