查看: 4735|回复: 7

[分享] esp8266断网后通过软件自动重启的方法

[复制链接]

该用户从未签到

发表于 2020-4-9 16:44 | 显示全部楼层 |阅读模式
本帖最后由 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为低电平时执行重启

签到天数: 12 天

[LV.3]偶尔看看II

发表于 2020-4-9 20:08 | 显示全部楼层
这个思路好,
不过重启后全部恢复初始状态,执行中的设备很难判断是开,是关。
也就是这种网络应用,不能用在要求严格,对可靠性有要求的场合。只适合玩玩

该用户从未签到

 楼主| 发表于 2020-4-9 20:49 | 显示全部楼层
可以用读写EPROM的方法保存设备运行状态,重启后恢复。但EPROM易引起堆栈溢出,我还未找到原因,针对不同的应用,只能换写入地址试验。试好后运行也比较稳定。

该用户从未签到

发表于 2020-4-16 21:53 来自手机 | 显示全部楼层
(⊙o⊙)哇,回去试试

该用户从未签到

发表于 2020-4-16 22:51 | 显示全部楼层
不错,学习下

该用户从未签到

发表于 2020-4-18 02:05 来自手机 | 显示全部楼层
resetFunc()内置函数这个是什么意思方便讲解下吗?

该用户从未签到

发表于 2020-4-18 14:58 | 显示全部楼层
z01228 发表于 2020-4-18 02:05
resetFunc()内置函数这个是什么意思方便讲解下吗?

arduino 软复位
定义一个reset函数:
void(* resetFunc) (void) = 0;

需要复位时这样调用:
resetFunc();

该用户从未签到

发表于 2022-6-22 17:59 | 显示全部楼层
大佬 有段自建的mqtt服务器不知道怎么定义断线重启 求QQ
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

IRremoteESP8266都是英文的 用法看不懂
IRremoteESP8266都是英文
最近在用IRremoteESP8266库,但是里面用法解释都是全英文的,也没有例子,实在看起来
blinker物联网教程——6、wifi插座
blinker物联网教程——6、
简介[hr] 在日常生活中,我们可能有接触到wifi插座,所谓wifi插座就是给原本的插座加
想自制TB6612电机驱动模块
想自制TB6612电机驱动模块
想知道板子上三个电容的参数
ESP32用不了arduino库里的tone()函数!!!
ESP32用不了arduino库里的
选择用其他开发板就能用,唯独ESP32用不了,好像一直检索不到路径,折腾两天了
【搬运】初学者的PID教程 by Brett Beauregard
【搬运】初学者的PID教程
在网上看到一个写的很详细的PID教程,一步一步地讲解Arduino PID库的原理,非常棒。帖
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表