乐鑫技术交流
直播中

刘伟

7年用户 1580经验值
私信 关注
[问答]

从深度睡眠中唤醒并不总是正确唤醒的原因?怎么解决?

我将在这篇文章的开头加上一个事实,即我一直在此处和其他论坛上寻找针对我的特定问题的解决方案大约一个星期,并且我已经尝试并丢弃了我已经找到的所有“解决方案”发现... 所以请不要以为我只是没有仔细看。
我正在做很多其他人似乎已经尝试过的事情(成功率有限),那就是制作一个电池供电的环境传感器,将温度和湿度数据发布到网络上。我们似乎都想做的是使用 DeepSleep 功能每隔几分钟唤醒一次采样、发布,然后再回到睡眠状态。根据似乎有多少人想要这样做,我很惊讶目前还没有一个简单的解决方案。

我只将 GPIO4 和 GPIO5 用于通信,并用电线将 GPIO16 跳转到 RST。
没有其他联系。所以 GPIO0 和 2 有上拉,GPIO15 有下拉。
我的具体问题是,时不时地,当 8266 从深度睡眠中醒来时,它并没有重新启动,而是进入了类似于引导加载程序状态的模式,尽管它实际上并没有运行引导加载程序。这可能会在 10 分钟或 10 小时后发生。它看起来是随机的。
当发生不良唤醒时,红色 LED 以一半亮度点亮(就像在引导加载程序模式下)但它不会加载程序,并且按下重置按钮不会使它退出该状态。事实上,将其取出的唯一方法是将其断电。
无论我是否连接了终端,都会发生这种情况。如果我连接了终端,我可以在唤醒发生时看到典型的垃圾,但之后什么也看不到。如果我点击重置,我只会得到同样的垃圾。
如果我测量 GPIO2,我看到 1.8V,这解释了我猜 LED 点亮的原因。
我正在使用 Arduino IDE,我刚刚下载了最新的 Arduino 1.8 和最新的 ESP 内核(我记得是 3.0)。然而,当我拥有 1.5.6 版本时,这种情况就发生了。
我尝试了不同的重启连接 (GPIO16-res),例如电阻器和二极管。我也试过给重置线添加一个上限,但它仍然失败。
有没有人有任何具体的建议来解释我所看到的,或者我能做些什么?

               


                       

回帖(1)

听我讲

2023-9-19 14:56:37
唤醒从深度睡眠中并不总是正确唤醒的主要原因可能是您的程序或电路设计有误。这可能会导致设备进入错误的休眠状态,无法正确唤醒或在唤醒时出现故障。

要解决这个问题,您可以:

1.检查您的代码和电路设计,确保它们正确运行并没有任何错误。

2.从最基本的程序开始测试您的设备,并逐步添加其余部分,以确定出现问题的位置。

3.确保您的电源电压和电流稳定,并适当地供电您的设备。

4.使用适当的内部或外部时钟来确保您的设备在唤醒时能够正确计时。

5.使用延迟来确保您的设备有足够的时间从深度睡眠模式唤醒并正确初始化。

总之,唤醒从深度睡眠中不正确的问题可能需要一些耐心和试错,但在解决问题后,深度睡眠功能可以使设备更省电。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分