首页 文章

如何在没有连续重置的情况下将esp8266从深度睡眠中唤醒

提问于
浏览
2

我正在使用esp8266构建一个IR到wifi桥 . 基本上我正在构建一个IR接收器,它连接到IR遥控器内的esp8266,通过wifi将接收到的IR遥控按键转发到服务器 . 我正在使用Wemos D1 Mini .

我已经有IR解码和网络转发部分工作,但它总是打开,它使用大量的电池,特别是考虑到99%的时间没有按下按钮 .

我希望它在没有按下按钮一段时间后进入深度睡眠状态 .

如果我将IR接收器连接到RST引脚,可以将esp从深度睡眠中唤醒,但问题是它会一直反复重置esp,因为IR不断进入,这将使esp无法实际解码IR命令,因为它不断被重置 .

我需要它通过RST唤醒深度睡眠,然后忽略进一步的RST激活,直到我以编程方式再次将其发送到深度睡眠状态 .

我真正需要的是一个正确的gpio中断,所以我可以忽略进一步的重置,直到我进入深度睡眠,但AFAIK esp8266不支持从深度睡眠唤醒gpio中断 .

我需要某种可重置的一次性触发器来发出一次重置,直到你告诉它你再次入睡 .

我不确定我怎么能实现这个?有人有主意吗?我宁愿不用另外的外部微控制器来重置esp8266,遥控器内部的空间也很紧,所以我宁愿不必使用很多外部部件 .

3 回答

  • 1

    这是一个电路,我用它来允许一次中断从ESP8266的深度睡眠中唤醒 . 它仅在深度睡眠定时器激活(D0拉低)后才允许中断复位 . 在深度睡眠功能上施加短暂超时以立即启用中断 .

    Wake up interrupt control circuit

    经过一些测试后,我发现上面的电路并没有像我想象的那样节省多少电量,因为它只能阻止芯片启动,但ESP的内部部分处于活动状态,并在15ma左右等待复位 . 在深度睡眠中,这超过了60ua!

    如果您有一个信号在激活后保持几秒钟(如PIR运动传感器),那么下面的电路可能会起作用 . 它使用一个电容器只允许边沿触发,然后运行代码可以检查GPIO4上的输入信号 . 但是,由于ESP8266的最大睡眠时间约为1小时,因此整体用电量仍然不佳 . 这意味着ESP8266在醒来之前仍会醒来并使用15ma几秒钟 . 在5分钟的深度睡眠周期中,1500mah可以持续约5天 .

    Deep Sleep edge trigger

  • 2

    你有没有看到关于睡眠ESP8266模式的Espressif文件?它可以在这里找到:http://www.espressif.com/sites/default/files/9b-esp8266-low_power_solutions_en_0.pdf

    它说:

    在深度睡眠模式下,芯片可以通过外部IO在EXT_RSTB引脚上产生的低电平脉冲唤醒和初始化 .

    所以,我不确定是否有可能避免重置(虽然,可能有一些hacky方式存在?),但另一种睡眠模式呢?喜欢轻睡 .

  • 4

    This post on electronics stack描述了如何使用一些额外的部件进行一次性按钮 . 然而,在空间方面,它们总和比使用另一个micro更大,因此OP决定采用MCU . 微型将使用最少的附加部件并声称空间最小 .

相关问题